Create and run unit tests, performance tests, and UI tests for your Xcode project using XCTest.

Posts under XCTest tag

200 Posts

Post

Replies

Boosts

Views

Activity

Supported targeted diagnostics for XCTest automation-mode initialization timeout
With Xcode 27.1 (27A9275) and an iOS 27.0.1 (24A446) physical device, the UI-test runner starts, then fails about 60 seconds later with com.apple.dt.XCTest.XCTFuture, code 1000: “Timed out while enabling automation mode.” No business test method starts (0 methods started). What is the officially supported, targeted diagnostic entry point for this XCTest initialization boundary? Specifically: What supported configuration and logging level expose the runner sending an automation-mode RPC, device testmanagerd receiving it, testmanagerd sending a reply, and the runner receiving that reply? Which timestamps and session/request correlation fields associate those events across the runner and testmanagerd? Can collection be limited to one device, one test attempt, these processes, and a short time window? What minimal text fields are necessary? Can unrelated-app data, screenshots, audio/video, runner environment values, credentials, and personal information be excluded? Please specify any required setup and how to disable or remove it afterward. We need a supported entry point and a precise, minimal privacy scope before changing configuration or collecting broader diagnostics. A general CoreDevice or sysdiagnose workflow alone does not establish that these RPC send/receive events will be recorded.
0
0
14
16h
XCUISiriService activation refused with “No network” in iOS 26.5 Simulator
I am seeking a supported public diagnostic or prerequisite for a standalone Siri UI test. Feedback: FB25377231. Developer Technical Support directed this question to the forums. Environment: Mac mini (2024), Apple M4, 32 GB, native arm64 macOS 26.7.2 (25G332) Xcode 26.6 (17F113), iOS Simulator SDK 26.5 iPhone 17 Pro Simulator; the original test's xcresult identifies iOS 26.5 (23F73) Classic Siri, en-GB A small test-host project compiled and ran one selected XCTest case. Its core public API call was: XCUIDevice.shared.siriService.activate( voiceRecognitionText: "What is two plus two?" )The exact recognition text reached the testing activation path, but SpringBoard logged: No network. Not starting the request for SASRequestSourceTestingNo arithmetic answer appeared during the configured 30-second wait. This was observed once; a repeatable frequency is not established. This reproducer has no product app, app-specific Siri intent, or CarPlay integration. In the original Simulator test runner, the first unconstrained NWPathMonitor callback was satisfied, with en0/wiredEthernet, but supportsIPv4, supportsIPv6, and supportsDNS were all false. Default-route SCNetworkReachability samples reported reachable. A separate, later diagnostic used the same simulated device with the installed iOS 26.5 (23F77) runtime. Identical public Foundation/Network helpers on the host and Simulator each issued one URLSession HEAD request to: https://www.apple.com/library/test/success.html Both received HTTP 200. The Simulator helper's initial path callback again reported satisfied with IPv4/IPv6/DNS capability flags false. This proves a response only for that helper/API/URL/time. It does not prove that the flags stayed false, that a fresh DNS lookup occurred, that Siri endpoints were reachable, or that the earlier 23F73 failure had the same cause. A setup confounder may matter: additional iOS platform support, including runtime 23F77, was installed while the original 23F73 Simulator remained booted. The arithmetic test ran afterward but still reported 23F73 in xcresult. The later HTTPS control ran separately on 23F77. There has been no further Siri activation. What supported Simulator/XCUISiriService prerequisite or public diagnostic can distinguish the cause of this specific request-start refusal? Is it expected for this configuration, a known issue, or evidence of an unmet prerequisite? The complete original results and a minimal test-host project are retained. Selected evidence and source are already attached to FB25377231; the same material can be supplied privately to DTS. I am seeking a supported approach rather than private preferences, service overrides, or repeated test requests.
1
0
83
1d
Xcode deployment
We are installing Xcode for standard users, but as the standard users don’t have admin rights, they cannot install the system wide components they need admin access to do that, but we don’t want to grant admin access to our users. We have already developed a script where we are accepting the license and we are doing the run first launch, but they still need the iOS simulator and the other packages pre-installed, so how can we do that?
1
0
146
2d
XCTest Feature request: Open/close and rotate iPhone Duo devices
Currently, we do not have a way to open, close and rotate iPhone Duo devices via XCUITest test automation. Please provide a way to perform these operations via XCTest. XCUIDevice.shared.orientation has no effect on an iPhone Duo iOS 27.1 simulator. We could open, close and rotate an iPhone Duo simulator manually via the Device Hub at the moment.
1
0
164
2d
XCUITest text entry drops characters on physical iOS 27 devices since Xcode 27 GA (FB24932647)
Since Xcode 27 GA, text entry from a UI test on a physical iOS 27 device delivers only the first 3–4 characters and then stops, while the call still returns success. Taps and scrolls are fine. The same tests pass on Xcode 27 beta 1. Filed as FB24932647. Broken: Xcode 27.0 (27A266a), 27.1 beta (27A9269), 27.2 beta 2 (27B5028f) Works: Xcode 27 beta 1 (27A5194q) Device: iPhone, iOS 27.0 (24A437) Repro. We drive it through WebDriverAgent. The failing step is XCTest's own event synthesis in testmanagerd, which is the same path XCUIElement.typeText goes through. Xcode 27.2 beta 2, run sudo xcodebuild -runFirstLaunch, reboot the device. Type subjectline into a plain UITextField. Read the field's value back. Expected subjectline. Actual sub or subj, in every one of 16 attempts. In a recipient-style field the fragment appears and is then erased, so nothing survives. 0 of 32 attempts completed. Device log, all within one second: testmanagerd Failed to load displays from CADisplay testmanagerd Failed to resolve displays. Defaulting to generic keyboard sender. testmanagerd Recap event action playback initiated UIKitCore hardwareKeyboardAttached = YES UIKitCore Moving from placement OnScreen to OffScreenDown UIKitCore Change to input view set: (empty) testmanagerd Recap event action playback completed testmanagerd can't resolve a display, so it falls back to a generic keyboard sender that registers a virtual HID keyboard. iOS then treats that as a hardware keyboard and dismisses the software keyboard while the text is still being typed. What changed. Comparing testmanagerd in the two DeveloperDiskImages: beta 1 derived the display from the app's identity (Computed display ID … from embeddedApplicationIdentifier … bundleID). GA removed that and added CADisplay enumeration with the generic fallback. That code is unchanged through 27.2 beta 2. This is not 181945323, which is marked fixed in 27.2 beta 2. That one needs Device Hub and clears on its own. Is anyone else seeing this on device? Is there a supported way to type on device under Xcode 27 GA, other than staying on beta 1?
1
3
344
1w
macOS test case - Could not launch app
Hi, Overview I am using Xcode Cloud for my multi platform app. The macOS test case fails, however the iOS test case runs and succeeds. I don't have any UI test cases written, the test case are simple and have nothing platform (macOS) specific. Questions What can I do to fix this? Is there any user privileges needed to launch the macOS app for testing? I ask because when I ran the UI tests locally it launched the app and asked for my macOS user password. Just wondering if that is the reason it didn't launch in Xcode Cloud. Error: <Appname> encountered an error (Failed to install or launch the test runner. If you believe this error represents a bug, please attach the result bundle at /Volumes/workspace/resultbundle.xcresult.(Underlying Error: Could not launch "AppnameTests. The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed. (Underlying Error: Launch job spawn failed) ))) × Could not launch "<Appname>" × Could not launch "AppnameTests" × AppnameUITests.testExample() Failed to get launch progress for <XCUIApplicationImpl: 0x600000564630 <BundleID> at /Volumes/workspace/TestProducts/Debug-Dev/<Appname>.app>: Could not launch "app name". The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed. (Underlying Error: Launch job spawn failed)) AppnameUITests.swift:28 * AppnameUITests.testLaunchPerformance) Failed to get launch progress for «XCUIApplicationimpl: 0x60000054630 <BundleID> at /Volumes/workspace/TestProducts/Debug-Dev/<Appname>.apps: Could not launch "<Appname>". The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed. (Underlying Error: Launch job spawn failed)) AppnameUITests.swift:37 g * AppnameUITestsLaunchTests.testLaunch) Failed to get launch progress for «XCUIApplicationimpl: 0x60000054630 <BundleID> at /Volumes/workspace/Testroducts/Debug-Dev/<Appname>.apps: Could not launch "<Appname>". The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed.
6
0
3.5k
2w
Permission denied - Attempting to run Docker from XCTestCase
I'm setting up tests for my Xcode Multiplatform App. To create a test environment I created a docker image that I want to run an XCTestCase against. I understand I'd have to make sure Docker is running before running the test. That said I have a permission denied when trying to connect to the docker daemon socket. Background: I'm using a makefile to store the commands and planned to run the docker build and docker run commands in the setUpWithError while running the docker kill command in tearDownWithError. To run the commands I used Process to execute the shell commands. I'm currently doing this is a test function to get it up and going. Issue: When I try to run the docker command Xcode tells me that it doesn't give me the permission to run it: docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=remarkable": dial unix /var/run/docker.sock: connect: operation not permitted. See 'docker run --help'. I only want to use Docker to run this specific XCTestCase. Is there anyway to run it from here JUST for the test? Or do I need to manually run docker and kill it before/after I run these tests? Thanks for any help.
1
0
1.6k
Oct ’26
XCode 27b6 XCUITest clone simulators not visible in Device Hub (No Show Parallel Testing Devices)
Tried to execute our XCUITest test suite with XCode 27b6. The test plan is set to run in parallel. When executing tests locally with XCode 26, I can see the clone simulators executing the test (which is useful for debugging the test). With XCode 27b6 and Device Hub, I do not see the clone simulators executing, nor do I see a setting or menu item in Device Hub to show those clone simulators. There is no equivalent to the "Show Parallel Testing Devices" menu item in the XCode 26 sim. Am I missing something or is this a regression in XCode 27?
2
3
1.1k
Sep ’26
The willThrow Tax: A hidden 36x slowdown and 2.1KB memory leak per throw in test frameworks
Context: While fuzzing my encrypted messenger Kalego, I noticed a single core pinned at 100% for over an hour while the other nine sat idle. No crash, no error. I sampled the thread with the macOS sample tool and found the culprit: a global runtime hook intercepting every single throw. Root Cause: The Swift runtime exposes a writable pointer _swift_willThrow. Apple's test frameworks install their own observers into this slot. On every throw, XCTest bridges the Swift error to an autoreleased NSError, captures the call stack, and accumulates it in memory until the end of the test method. The Numbers (Measured on M5, Swift 6.3.3, Release): Plain Executable: 20.5 ns / iteration Swift Testing: 295 ns / iteration (14x slower) XCTest: 749 ns / iteration (36x slower) XCTest under xcodebuild/CI: ~1100 ns (54x slower) The Real Defect (Memory Leak): It's not just slow. Under XCTest, each observed throw leaks ~2.1 KB of memory. 2,000,000 throws in a single test method cost +4,031 MB. At fuzzing scale, this turns a slow test into an instant Out-Of-Memory crash. The Fixes: Move the hot loop to a standalone executable (best for fuzzing). Use return nil instead of throw on hot paths. Wrap the loop body in autoreleasepool { } to stop the memory leak. (Advanced/Situational) Safely disable the observer using dlsym and defer (code provided in the full report). Full Report & Reproducible Code: I wrote a complete 12-page report with 21 experiments, the assembly disassembly, and all the reproduction code. You can check the numbers on your own machine here: https://github.com/MagicYassin/xctest-throw-cost Appreciate any technical feedback👨🏻‍💻☁️☁!
5
0
9.2k
Sep ’26
Running tests in Xcode creates random folder Library/Containers/MyApp/Data with .profraw file
I was looking for my app's Application Support folder and was confused to see hundreds of folders with names like 36FE5C78-6D16-4556-8F13-80B0F2E7AD4B-84238-0000088F9B63C05B cluttering the Data folder. Some of these folders are empty, some contain a file named something like 791DC593-238F-4180-9D5D-6ABB7D22A4D3-18720.profraw. It seems that whenever I run any of my tests in Xcode, a new folder is generated and all the old ones are never removed. What's the purpose of these folders and why are they not removed automatically?
0
0
365
Sep ’26
Unable to launch tests in Xcode 26
I am trying to upgrade my app to use Xcode 26 and I cannot get my tests to launch. I am trying to launch tests to the simulator, and I always get this error after 300 second timeout: "encountered an error (The test runner hung before establishing connection.)" There are no other errors getting logged. I can run to the same simulator just fine, and in Xcode 16 the tests launch with no issues. The tests also run fine on an actual iPhone. Thanks in advance.
11
5
1.4k
Aug ’26
Running Mac App UI Tests fails on a CI runner with locked screen
Hi everyone, I'm trying to run a Mac app UI tests on our CI servers (Mac minis). The servers are logged in, but the lock screen is active (aka, the active process is the com.apple.loginwindow). UI tests end up failing with: Failed to activate application (current state: Running Background) Is there any way to run Mac UI tests on a server like this without having to disable the lock screen? Our admins will likely not accept that solution, and I agree with them. Aside from running a full VM just for the UI tests, I can't find any solution. Thank you, Miguel Arroz
1
0
868
Aug ’26
XCUITests running incredibly slow with Xcode 15.3
Sometime recently our XCUITests started to hang after awhile and so I had filed this Feedback ticket. With the release of Xcode 15.3 I re-ran the test in the project I had attached to that Feedback ticket (which taps a "Go!" button which pushes a new view controller and then verifies the value of a UILabel) and the tests are running crazy slow on a device now running iOS 17.4. It has been half an hour and only 14 of 100 iterations have been run. Anyone else experience severe performance degradation in their XCUITests with Xcode 15.3?
3
0
1.7k
Aug ’26
Xcode doesn't gather code coverage for local Swift package targets
My app setup is similar to https://forums.developer.apple.com/thread/133495 - I have an app target, some frameworks and local Swift packages. I added the package tests to the test plan.Now, when "gather code coverage" is just "on" in the test plan, I get code coverage from the package targets. But when I selectively add only the targets I want (including the package targets), the package targets don't show up in the code coverage results at all.Gathering code coverage for all targets isn't really what I want, because that includes a lot of third-party code that I'm not interested in.
18
0
8.1k
Aug ’26
Parallel swift testing on multiple ios simulators
Due to massive amount of shared state in my project I cannot really use swift testing parallelization in my tests, so my idea was to embed all suites into single one with .serialized and then run them on several simulators to speed up the tests. I ran tests with xcodebuild ... -parallel-testing-enabled YES -parallel-testing-worker-count 2, but swift testing suites seemed to be executed on just one simulator. Is it possible to run swift testing tests in parallel on multiple iOS simulators, but serially within each of them? Or the only way is xctest?
1
0
844
Jul ’26
xcodebuild test (CLI) does not sync .storekit to storekitd on iOS 26.5 — SKTestSession unusable in CI
On iOS 26.5 simulator runtime, running UI tests via xcodebuild test from the command line does not push the scheme's StoreKitConfigurationFileReference to the destination simulator's storekitd AppGroup Octane container. As a consequence, SKTestSession(configurationFileNamed:) either silently falls through to the production App Store (surfacing a "Sign in to Apple Account" SpringBoard alert during paywall tests), or throws SKInternalErrorDomain Code=3 "Error saving configuration file" if you call any SKTestSession instance method. The same project, same scheme, same .storekit file works correctly when launched via Xcode IDE (Cmd+R / Cmd+U) — which uses DVTDevice.handleStoreKitConfigurationSyncForBundleID:configurationFilePath: via an internal IDELaunchSession XPC path that the public xcodebuild CLI does not invoke. This regression makes StoreKit Test unusable in CI for any project using xcodebuild test or xcodebuild test-without-building against an iOS 26.5 simulator. Environment macOS: 26.x Xcode: 26.4.1 (25E253) iOS Simulator runtime affected: 26.5 iOS Simulator runtime that does not exhibit the bug: 26.1 Test target: XCTest UI tests Test plan: *.xctestplan with "storeKitConfiguration": "MyApp.storekit" in defaultOptions Affected scheme actions: Test (CLI) Not affected: Run, Test (Xcode IDE) Steps to Reproduce Create a SwiftUI iOS app com.example.MyApp. Add a MyApp.storekit with one auto-renewable subscription. Add a UI test target. In the xctestplan: defaultOptions.storeKitConfiguration = "MyApp.storekit". In the UI test base case: private var storeKitSession: SKTestSession? override func setUpWithError() throws { storeKitSession = try SKTestSession(configurationFileNamed: "MyApp") app.launch() } Boot a fresh iOS 26.5 simulator. Run via CLI: xcodebuild test \ -project MyApp.xcodeproj \ -scheme MyApp \ -testPlan MyAppUITests \ -destination "platform=iOS Simulator,name=iPhone 17 Pro" In the test, trigger paywall and call Product.purchase(). Expected Product.purchase() presents the StoreKit Test sheet labeled "[Environment] Xcode". Same behavior as Xcode IDE Cmd+U. Actual Production App Store flow triggers. SpringBoard alert "Sign in to Apple Account" appears. Tests waiting on the "Xcode"-labeled sheet fail with Element does not exist. Evidence The simulator's ~/Library/Developer/CoreSimulator/Devices/<UDID>/data/Containers/Shared/AppGroup/<storekit-AGID>/Documents/Persistence/Octane/com.example.MyApp/Configuration.storekit: Present (≈100 KB) when launched via Xcode IDE. Missing when launched via xcodebuild test CLI on the same simulator UDID. Workarounds Attempted (all fail on iOS 26.5) No-op XCTestCase "warmup" that calls XCUIApplication.launch() + sleep — does not trigger the sync because XCUIApplication.launch() routes through XCTRunner, not IDELaunchSession. Multi-destination xcodebuild test with -parallelize-tests-among-destinations. Manually cp-ing the .storekit file into the AppGroup Octane container — storekitd only loads via the XPC channel. launchctl kickstart -k system/com.apple.storekitd — wipes in-memory state, does not pick up disk file. Only working workaround: open project in Xcode IDE, Cmd+R, wait ~20–30 sec, Cmd+., then Cmd+U. Not viable for CI. Related Open Feedback FB22237318 — SKTestSession instance methods (clearTransactions(), failTransactionsEnabled = true) throw SKInternalErrorDomain Code=3 "Error saving configuration file". Discussion thread: https://developer.apple.com/forums/thread/808030 The iOS 26.5 Release Notes (https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_5-release-notes) under StoreKit Test list this issue as resolved in 26.5: "Fixed: SKTestSession may fail to save its configuration file when invoked outside of an Xcode debug session." However, on the public iOS 26.5 simulator runtime the behavior is unchanged — SKTestSession still hits Code=3 on any mutation, and xcodebuild test from CLI still does not sync the .storekit configuration. The 26.5 fix either did not actually ship, or this report describes a distinct but related issue that the fix did not cover. Impact Any CI/CD pipeline running UI tests for apps with StoreKit subscriptions is broken when targeting an iOS 26.5 simulator. Workarounds are either: Pin CI simulator runtime to iOS 26.1. Manually run the project in Xcode IDE before each test run (impossible headless). Has anyone found a CLI-friendly workaround? Or is there an undocumented xcodebuild flag / simctl command that can trigger the same DVTDevice sync from outside the IDE?
7
4
2.3k
Jul ’26
iOS 15 - UI Test keeps asking pin code for "Enable UI Automation"
We got the newly issue that our Test devices keeps us asking for the pin code to "Enable UI Automation". Then it works for some hours or days, but after some time it starts again. "Enable UI Automation" is already enabled in "Settings" - "Developer" menu. The devices are located remotely and we can't access them directly, so this is a big issue for us right now. Is there any way to avoid this?
16
4
8.5k
Jul ’26
QR code scan deeplink not work in XCode test run?
Hi, I'm trying to figure out what is true here - if I am not in the correct forum please direct me :-) A. It is not possible to test a QR code scan that contains a deeplink into my iOS app from an XCoode build test run. In other words, The build must be published to Test Flight for the iOS's QR code scan sub-system to be able to process the deeplink into my app? If I am wrong about this, it sure would help with testing to be able to test directly from the local XCode build test. If so, can someone point me in the direction of what I would need to do for that? Thanks for your input either way!
1
0
1.1k
Jul ’26
Supported targeted diagnostics for XCTest automation-mode initialization timeout
With Xcode 27.1 (27A9275) and an iOS 27.0.1 (24A446) physical device, the UI-test runner starts, then fails about 60 seconds later with com.apple.dt.XCTest.XCTFuture, code 1000: “Timed out while enabling automation mode.” No business test method starts (0 methods started). What is the officially supported, targeted diagnostic entry point for this XCTest initialization boundary? Specifically: What supported configuration and logging level expose the runner sending an automation-mode RPC, device testmanagerd receiving it, testmanagerd sending a reply, and the runner receiving that reply? Which timestamps and session/request correlation fields associate those events across the runner and testmanagerd? Can collection be limited to one device, one test attempt, these processes, and a short time window? What minimal text fields are necessary? Can unrelated-app data, screenshots, audio/video, runner environment values, credentials, and personal information be excluded? Please specify any required setup and how to disable or remove it afterward. We need a supported entry point and a precise, minimal privacy scope before changing configuration or collecting broader diagnostics. A general CoreDevice or sysdiagnose workflow alone does not establish that these RPC send/receive events will be recorded.
Replies
0
Boosts
0
Views
14
Activity
16h
XCUISiriService activation refused with “No network” in iOS 26.5 Simulator
I am seeking a supported public diagnostic or prerequisite for a standalone Siri UI test. Feedback: FB25377231. Developer Technical Support directed this question to the forums. Environment: Mac mini (2024), Apple M4, 32 GB, native arm64 macOS 26.7.2 (25G332) Xcode 26.6 (17F113), iOS Simulator SDK 26.5 iPhone 17 Pro Simulator; the original test's xcresult identifies iOS 26.5 (23F73) Classic Siri, en-GB A small test-host project compiled and ran one selected XCTest case. Its core public API call was: XCUIDevice.shared.siriService.activate( voiceRecognitionText: "What is two plus two?" )The exact recognition text reached the testing activation path, but SpringBoard logged: No network. Not starting the request for SASRequestSourceTestingNo arithmetic answer appeared during the configured 30-second wait. This was observed once; a repeatable frequency is not established. This reproducer has no product app, app-specific Siri intent, or CarPlay integration. In the original Simulator test runner, the first unconstrained NWPathMonitor callback was satisfied, with en0/wiredEthernet, but supportsIPv4, supportsIPv6, and supportsDNS were all false. Default-route SCNetworkReachability samples reported reachable. A separate, later diagnostic used the same simulated device with the installed iOS 26.5 (23F77) runtime. Identical public Foundation/Network helpers on the host and Simulator each issued one URLSession HEAD request to: https://www.apple.com/library/test/success.html Both received HTTP 200. The Simulator helper's initial path callback again reported satisfied with IPv4/IPv6/DNS capability flags false. This proves a response only for that helper/API/URL/time. It does not prove that the flags stayed false, that a fresh DNS lookup occurred, that Siri endpoints were reachable, or that the earlier 23F73 failure had the same cause. A setup confounder may matter: additional iOS platform support, including runtime 23F77, was installed while the original 23F73 Simulator remained booted. The arithmetic test ran afterward but still reported 23F73 in xcresult. The later HTTPS control ran separately on 23F77. There has been no further Siri activation. What supported Simulator/XCUISiriService prerequisite or public diagnostic can distinguish the cause of this specific request-start refusal? Is it expected for this configuration, a known issue, or evidence of an unmet prerequisite? The complete original results and a minimal test-host project are retained. Selected evidence and source are already attached to FB25377231; the same material can be supplied privately to DTS. I am seeking a supported approach rather than private preferences, service overrides, or repeated test requests.
Replies
1
Boosts
0
Views
83
Activity
1d
Xcode deployment
We are installing Xcode for standard users, but as the standard users don’t have admin rights, they cannot install the system wide components they need admin access to do that, but we don’t want to grant admin access to our users. We have already developed a script where we are accepting the license and we are doing the run first launch, but they still need the iOS simulator and the other packages pre-installed, so how can we do that?
Replies
1
Boosts
0
Views
146
Activity
2d
XCTest Feature request: Open/close and rotate iPhone Duo devices
Currently, we do not have a way to open, close and rotate iPhone Duo devices via XCUITest test automation. Please provide a way to perform these operations via XCTest. XCUIDevice.shared.orientation has no effect on an iPhone Duo iOS 27.1 simulator. We could open, close and rotate an iPhone Duo simulator manually via the Device Hub at the moment.
Replies
1
Boosts
0
Views
164
Activity
2d
XCUITest text entry drops characters on physical iOS 27 devices since Xcode 27 GA (FB24932647)
Since Xcode 27 GA, text entry from a UI test on a physical iOS 27 device delivers only the first 3–4 characters and then stops, while the call still returns success. Taps and scrolls are fine. The same tests pass on Xcode 27 beta 1. Filed as FB24932647. Broken: Xcode 27.0 (27A266a), 27.1 beta (27A9269), 27.2 beta 2 (27B5028f) Works: Xcode 27 beta 1 (27A5194q) Device: iPhone, iOS 27.0 (24A437) Repro. We drive it through WebDriverAgent. The failing step is XCTest's own event synthesis in testmanagerd, which is the same path XCUIElement.typeText goes through. Xcode 27.2 beta 2, run sudo xcodebuild -runFirstLaunch, reboot the device. Type subjectline into a plain UITextField. Read the field's value back. Expected subjectline. Actual sub or subj, in every one of 16 attempts. In a recipient-style field the fragment appears and is then erased, so nothing survives. 0 of 32 attempts completed. Device log, all within one second: testmanagerd Failed to load displays from CADisplay testmanagerd Failed to resolve displays. Defaulting to generic keyboard sender. testmanagerd Recap event action playback initiated UIKitCore hardwareKeyboardAttached = YES UIKitCore Moving from placement OnScreen to OffScreenDown UIKitCore Change to input view set: (empty) testmanagerd Recap event action playback completed testmanagerd can't resolve a display, so it falls back to a generic keyboard sender that registers a virtual HID keyboard. iOS then treats that as a hardware keyboard and dismisses the software keyboard while the text is still being typed. What changed. Comparing testmanagerd in the two DeveloperDiskImages: beta 1 derived the display from the app's identity (Computed display ID … from embeddedApplicationIdentifier … bundleID). GA removed that and added CADisplay enumeration with the generic fallback. That code is unchanged through 27.2 beta 2. This is not 181945323, which is marked fixed in 27.2 beta 2. That one needs Device Hub and clears on its own. Is anyone else seeing this on device? Is there a supported way to type on device under Xcode 27 GA, other than staying on beta 1?
Replies
1
Boosts
3
Views
344
Activity
1w
macOS test case - Could not launch app
Hi, Overview I am using Xcode Cloud for my multi platform app. The macOS test case fails, however the iOS test case runs and succeeds. I don't have any UI test cases written, the test case are simple and have nothing platform (macOS) specific. Questions What can I do to fix this? Is there any user privileges needed to launch the macOS app for testing? I ask because when I ran the UI tests locally it launched the app and asked for my macOS user password. Just wondering if that is the reason it didn't launch in Xcode Cloud. Error: <Appname> encountered an error (Failed to install or launch the test runner. If you believe this error represents a bug, please attach the result bundle at /Volumes/workspace/resultbundle.xcresult.(Underlying Error: Could not launch "AppnameTests. The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed. (Underlying Error: Launch job spawn failed) ))) × Could not launch "<Appname>" × Could not launch "AppnameTests" × AppnameUITests.testExample() Failed to get launch progress for <XCUIApplicationImpl: 0x600000564630 <BundleID> at /Volumes/workspace/TestProducts/Debug-Dev/<Appname>.app>: Could not launch "app name". The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed. (Underlying Error: Launch job spawn failed)) AppnameUITests.swift:28 * AppnameUITests.testLaunchPerformance) Failed to get launch progress for «XCUIApplicationimpl: 0x60000054630 <BundleID> at /Volumes/workspace/TestProducts/Debug-Dev/<Appname>.apps: Could not launch "<Appname>". The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed. (Underlying Error: Launch job spawn failed)) AppnameUITests.swift:37 g * AppnameUITestsLaunchTests.testLaunch) Failed to get launch progress for «XCUIApplicationimpl: 0x60000054630 <BundleID> at /Volumes/workspace/Testroducts/Debug-Dev/<Appname>.apps: Could not launch "<Appname>". The LaunchServices launcher has returned an error. Please check the system logs for the underlying cause of the error. (Underlying Error: The operation couldn't be completed. Launch failed.
Replies
6
Boosts
0
Views
3.5k
Activity
2w
Permission denied - Attempting to run Docker from XCTestCase
I'm setting up tests for my Xcode Multiplatform App. To create a test environment I created a docker image that I want to run an XCTestCase against. I understand I'd have to make sure Docker is running before running the test. That said I have a permission denied when trying to connect to the docker daemon socket. Background: I'm using a makefile to store the commands and planned to run the docker build and docker run commands in the setUpWithError while running the docker kill command in tearDownWithError. To run the commands I used Process to execute the shell commands. I'm currently doing this is a test function to get it up and going. Issue: When I try to run the docker command Xcode tells me that it doesn't give me the permission to run it: docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=remarkable": dial unix /var/run/docker.sock: connect: operation not permitted. See 'docker run --help'. I only want to use Docker to run this specific XCTestCase. Is there anyway to run it from here JUST for the test? Or do I need to manually run docker and kill it before/after I run these tests? Thanks for any help.
Replies
1
Boosts
0
Views
1.6k
Activity
Oct ’26
XCode 27b6 XCUITest clone simulators not visible in Device Hub (No Show Parallel Testing Devices)
Tried to execute our XCUITest test suite with XCode 27b6. The test plan is set to run in parallel. When executing tests locally with XCode 26, I can see the clone simulators executing the test (which is useful for debugging the test). With XCode 27b6 and Device Hub, I do not see the clone simulators executing, nor do I see a setting or menu item in Device Hub to show those clone simulators. There is no equivalent to the "Show Parallel Testing Devices" menu item in the XCode 26 sim. Am I missing something or is this a regression in XCode 27?
Replies
2
Boosts
3
Views
1.1k
Activity
Sep ’26
The willThrow Tax: A hidden 36x slowdown and 2.1KB memory leak per throw in test frameworks
Context: While fuzzing my encrypted messenger Kalego, I noticed a single core pinned at 100% for over an hour while the other nine sat idle. No crash, no error. I sampled the thread with the macOS sample tool and found the culprit: a global runtime hook intercepting every single throw. Root Cause: The Swift runtime exposes a writable pointer _swift_willThrow. Apple's test frameworks install their own observers into this slot. On every throw, XCTest bridges the Swift error to an autoreleased NSError, captures the call stack, and accumulates it in memory until the end of the test method. The Numbers (Measured on M5, Swift 6.3.3, Release): Plain Executable: 20.5 ns / iteration Swift Testing: 295 ns / iteration (14x slower) XCTest: 749 ns / iteration (36x slower) XCTest under xcodebuild/CI: ~1100 ns (54x slower) The Real Defect (Memory Leak): It's not just slow. Under XCTest, each observed throw leaks ~2.1 KB of memory. 2,000,000 throws in a single test method cost +4,031 MB. At fuzzing scale, this turns a slow test into an instant Out-Of-Memory crash. The Fixes: Move the hot loop to a standalone executable (best for fuzzing). Use return nil instead of throw on hot paths. Wrap the loop body in autoreleasepool { } to stop the memory leak. (Advanced/Situational) Safely disable the observer using dlsym and defer (code provided in the full report). Full Report & Reproducible Code: I wrote a complete 12-page report with 21 experiments, the assembly disassembly, and all the reproduction code. You can check the numbers on your own machine here: https://github.com/MagicYassin/xctest-throw-cost Appreciate any technical feedback👨🏻‍💻☁️☁!
Replies
5
Boosts
0
Views
9.2k
Activity
Sep ’26
Running tests in Xcode creates random folder Library/Containers/MyApp/Data with .profraw file
I was looking for my app's Application Support folder and was confused to see hundreds of folders with names like 36FE5C78-6D16-4556-8F13-80B0F2E7AD4B-84238-0000088F9B63C05B cluttering the Data folder. Some of these folders are empty, some contain a file named something like 791DC593-238F-4180-9D5D-6ABB7D22A4D3-18720.profraw. It seems that whenever I run any of my tests in Xcode, a new folder is generated and all the old ones are never removed. What's the purpose of these folders and why are they not removed automatically?
Replies
0
Boosts
0
Views
365
Activity
Sep ’26
Unable to launch tests in Xcode 26
I am trying to upgrade my app to use Xcode 26 and I cannot get my tests to launch. I am trying to launch tests to the simulator, and I always get this error after 300 second timeout: "encountered an error (The test runner hung before establishing connection.)" There are no other errors getting logged. I can run to the same simulator just fine, and in Xcode 16 the tests launch with no issues. The tests also run fine on an actual iPhone. Thanks in advance.
Replies
11
Boosts
5
Views
1.4k
Activity
Aug ’26
Running Mac App UI Tests fails on a CI runner with locked screen
Hi everyone, I'm trying to run a Mac app UI tests on our CI servers (Mac minis). The servers are logged in, but the lock screen is active (aka, the active process is the com.apple.loginwindow). UI tests end up failing with: Failed to activate application (current state: Running Background) Is there any way to run Mac UI tests on a server like this without having to disable the lock screen? Our admins will likely not accept that solution, and I agree with them. Aside from running a full VM just for the UI tests, I can't find any solution. Thank you, Miguel Arroz
Replies
1
Boosts
0
Views
868
Activity
Aug ’26
XCUITests running incredibly slow with Xcode 15.3
Sometime recently our XCUITests started to hang after awhile and so I had filed this Feedback ticket. With the release of Xcode 15.3 I re-ran the test in the project I had attached to that Feedback ticket (which taps a "Go!" button which pushes a new view controller and then verifies the value of a UILabel) and the tests are running crazy slow on a device now running iOS 17.4. It has been half an hour and only 14 of 100 iterations have been run. Anyone else experience severe performance degradation in their XCUITests with Xcode 15.3?
Replies
3
Boosts
0
Views
1.7k
Activity
Aug ’26
Xcode doesn't gather code coverage for local Swift package targets
My app setup is similar to https://forums.developer.apple.com/thread/133495 - I have an app target, some frameworks and local Swift packages. I added the package tests to the test plan.Now, when "gather code coverage" is just "on" in the test plan, I get code coverage from the package targets. But when I selectively add only the targets I want (including the package targets), the package targets don't show up in the code coverage results at all.Gathering code coverage for all targets isn't really what I want, because that includes a lot of third-party code that I'm not interested in.
Replies
18
Boosts
0
Views
8.1k
Activity
Aug ’26
Parallel swift testing on multiple ios simulators
Due to massive amount of shared state in my project I cannot really use swift testing parallelization in my tests, so my idea was to embed all suites into single one with .serialized and then run them on several simulators to speed up the tests. I ran tests with xcodebuild ... -parallel-testing-enabled YES -parallel-testing-worker-count 2, but swift testing suites seemed to be executed on just one simulator. Is it possible to run swift testing tests in parallel on multiple iOS simulators, but serially within each of them? Or the only way is xctest?
Replies
1
Boosts
0
Views
844
Activity
Jul ’26
xcodebuild test (CLI) does not sync .storekit to storekitd on iOS 26.5 — SKTestSession unusable in CI
On iOS 26.5 simulator runtime, running UI tests via xcodebuild test from the command line does not push the scheme's StoreKitConfigurationFileReference to the destination simulator's storekitd AppGroup Octane container. As a consequence, SKTestSession(configurationFileNamed:) either silently falls through to the production App Store (surfacing a "Sign in to Apple Account" SpringBoard alert during paywall tests), or throws SKInternalErrorDomain Code=3 "Error saving configuration file" if you call any SKTestSession instance method. The same project, same scheme, same .storekit file works correctly when launched via Xcode IDE (Cmd+R / Cmd+U) — which uses DVTDevice.handleStoreKitConfigurationSyncForBundleID:configurationFilePath: via an internal IDELaunchSession XPC path that the public xcodebuild CLI does not invoke. This regression makes StoreKit Test unusable in CI for any project using xcodebuild test or xcodebuild test-without-building against an iOS 26.5 simulator. Environment macOS: 26.x Xcode: 26.4.1 (25E253) iOS Simulator runtime affected: 26.5 iOS Simulator runtime that does not exhibit the bug: 26.1 Test target: XCTest UI tests Test plan: *.xctestplan with "storeKitConfiguration": "MyApp.storekit" in defaultOptions Affected scheme actions: Test (CLI) Not affected: Run, Test (Xcode IDE) Steps to Reproduce Create a SwiftUI iOS app com.example.MyApp. Add a MyApp.storekit with one auto-renewable subscription. Add a UI test target. In the xctestplan: defaultOptions.storeKitConfiguration = "MyApp.storekit". In the UI test base case: private var storeKitSession: SKTestSession? override func setUpWithError() throws { storeKitSession = try SKTestSession(configurationFileNamed: "MyApp") app.launch() } Boot a fresh iOS 26.5 simulator. Run via CLI: xcodebuild test \ -project MyApp.xcodeproj \ -scheme MyApp \ -testPlan MyAppUITests \ -destination "platform=iOS Simulator,name=iPhone 17 Pro" In the test, trigger paywall and call Product.purchase(). Expected Product.purchase() presents the StoreKit Test sheet labeled "[Environment] Xcode". Same behavior as Xcode IDE Cmd+U. Actual Production App Store flow triggers. SpringBoard alert "Sign in to Apple Account" appears. Tests waiting on the "Xcode"-labeled sheet fail with Element does not exist. Evidence The simulator's ~/Library/Developer/CoreSimulator/Devices/<UDID>/data/Containers/Shared/AppGroup/<storekit-AGID>/Documents/Persistence/Octane/com.example.MyApp/Configuration.storekit: Present (≈100 KB) when launched via Xcode IDE. Missing when launched via xcodebuild test CLI on the same simulator UDID. Workarounds Attempted (all fail on iOS 26.5) No-op XCTestCase "warmup" that calls XCUIApplication.launch() + sleep — does not trigger the sync because XCUIApplication.launch() routes through XCTRunner, not IDELaunchSession. Multi-destination xcodebuild test with -parallelize-tests-among-destinations. Manually cp-ing the .storekit file into the AppGroup Octane container — storekitd only loads via the XPC channel. launchctl kickstart -k system/com.apple.storekitd — wipes in-memory state, does not pick up disk file. Only working workaround: open project in Xcode IDE, Cmd+R, wait ~20–30 sec, Cmd+., then Cmd+U. Not viable for CI. Related Open Feedback FB22237318 — SKTestSession instance methods (clearTransactions(), failTransactionsEnabled = true) throw SKInternalErrorDomain Code=3 "Error saving configuration file". Discussion thread: https://developer.apple.com/forums/thread/808030 The iOS 26.5 Release Notes (https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_5-release-notes) under StoreKit Test list this issue as resolved in 26.5: "Fixed: SKTestSession may fail to save its configuration file when invoked outside of an Xcode debug session." However, on the public iOS 26.5 simulator runtime the behavior is unchanged — SKTestSession still hits Code=3 on any mutation, and xcodebuild test from CLI still does not sync the .storekit configuration. The 26.5 fix either did not actually ship, or this report describes a distinct but related issue that the fix did not cover. Impact Any CI/CD pipeline running UI tests for apps with StoreKit subscriptions is broken when targeting an iOS 26.5 simulator. Workarounds are either: Pin CI simulator runtime to iOS 26.1. Manually run the project in Xcode IDE before each test run (impossible headless). Has anyone found a CLI-friendly workaround? Or is there an undocumented xcodebuild flag / simctl command that can trigger the same DVTDevice sync from outside the IDE?
Replies
7
Boosts
4
Views
2.3k
Activity
Jul ’26
iOS 15 - UI Test keeps asking pin code for "Enable UI Automation"
We got the newly issue that our Test devices keeps us asking for the pin code to "Enable UI Automation". Then it works for some hours or days, but after some time it starts again. "Enable UI Automation" is already enabled in "Settings" - "Developer" menu. The devices are located remotely and we can't access them directly, so this is a big issue for us right now. Is there any way to avoid this?
Replies
16
Boosts
4
Views
8.5k
Activity
Jul ’26
QR code scan deeplink not work in XCode test run?
Hi, I'm trying to figure out what is true here - if I am not in the correct forum please direct me :-) A. It is not possible to test a QR code scan that contains a deeplink into my iOS app from an XCoode build test run. In other words, The build must be published to Test Flight for the iOS's QR code scan sub-system to be able to process the deeplink into my app? If I am wrong about this, it sure would help with testing to be able to test directly from the local XCode build test. If so, can someone point me in the direction of what I would need to do for that? Thanks for your input either way!
Replies
1
Boosts
0
Views
1.1k
Activity
Jul ’26