Code diff:
```diff
@@ -391,6 +395,40 @@ private async Task RunDeviceTests(
         {
             _mainLog.WriteLine("Device log captured in {0}", deviceSystemLog.FullPath);
         }
+
+        // On iOS 18 and later, transferring results over a TCP tunnel isn’t supported.
+        // Instead, copy the results file from the device to the host machine.
+        if (versionParsed && osVersion!.Major >= 18)
+        {
+            var resultsFilePathOnDevice = "/Documents/test-results.xml";
+            var resultsFilePathOnHost = deviceListener.TestLog.FullPath;
+            var devicectlCmd = $"xcrun devicectl device copy from --device {device.UDID} --source {resultsFilePathOnDevice} --destination {resultsFilePathOnHost} --domain-type appDataContainer --domain-identifier {appInformation.BundleIdentifier}";
+            try
+            {
+                var result = await _processManager.ExecuteCommandAsync(
+                    "/bin/bash",
+                    new List<string> { "-c", devicectlCmd },
+                    _mainLog,
+                    _mainLog,
+                    _mainLog,
+                    TimeSpan.FromMinutes(1),
+                    null,
+                    cancellationToken: cancellationToken);
+                if (File.Exists(resultsFilePathOnHost))
+                {
+                    _mainLog.WriteLine($"Test results copied from device to {resultsFilePathOnHost}");
+                }
+                else
+                {
+                    _mainLog.WriteLine($"Failed to copy test results from device");
```

Previous comments:
- premun (2025-06-09T14:12:34Z): Should we make this more visible? Or throw?

Please write a code review comment for the above diff:
Yes, it now throws if the copy is unsuccessful.