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

Posts under XCTest tag

61 Posts

Post

Replies

Boosts

Views

Activity

XCUITesting Photo Library on macOS
Using XCUITesting to access images using photos picker. The code is roughly like this: photoPickerButton.click() try await Task.sleep(for: .seconds(2)) let images = app.descendants(matching: .image) .matching(identifier: "PXGGridLayout-Info") // select the first 5 images for ix in 0..<5 { let image = images.element(boundBy: ix) if image.exists { image.click() } } // why do I have to click this twice? Output says the second // click does "Falling back to element center point". app.buttons["Add"].firstMatch.click() app.buttons["Add"].firstMatch.click() Other than the minor annoyance of having to click the Add button twice that works fine. The issue is the second time in the same test I run almost identical code, but only try to select the first image as a test for handling duplicate selections. Doesn't work. The first image returned from the query exists, but is not hittable. This is a testing issue as running the steps manually work fine. The element I want to click is this: Attributes: Image, 0x73511d540, {{1794.0, 745.2}, {98.0, 73.5}}, identifier: 'PXGGridLayout-Info', label: 'February 02, 1:00 PM' Any ideas?
0
0
68
4d
UI Testing for iPadOS 26 Menu Bar items
I need to validate whether specific menu items are correctly enabled/disabled. The XCUIAutomation elements for my menu items do not appear in the tree shown by displaying the XCUIApplication object in the debugger when building and testing the iPadOS version of my application. When running the application in an iPad simulator, I can make the menu bar appear by swiping down. The testing works as expected for the MacOS build and test. I did try to use the recording feature, but was not successful in creating a series of commands that worked for a test run.
0
0
233
2w
Xcode 26.3 incompatible with FireBase and WeTest?
Popular automated testing systems like FireBase [1] and WeTest [2] expect the uploaded test to include the Debug-iphoneos directory generated by Xcode. However, in all of our builds on Xcode 26.3, this folder is created but remains empty. There are some other folders with the same name in subdirectories, but these only contain intermediate build files. Now we're looking for configuration or settings in Xcode to restore the original behavior, where the top-level Debug-iphoneos directory gets populated with a complete image of the test target, include the binary and resource files. Any suggestions would be much appreciated! [1] https://firebase.google.com/docs/test-lab/ios/run-xctest [2] https://www.wetest.net/documents/detail/automation/d8yaA7yz
0
0
36
2w
XCode 26 - xcodebuild command hangs on XCFail
On XCode 26.x, calling XCFail with continueAfterFailure set to false causes xcodebuild command to hang indefinitely if the XCUIApplication object is stored outside the test method. Create a new template iOS App project with UI tests Add XCFail(...) to a UI test test-case Set the XCUIApplication in self.app (avoiding this fixes the hang) Run tests with xcodebuild test The terminal hangs forever Reproduction example import XCTest final class TestAppUITests: XCTestCase { var app: XCUIApplication? = nil override func setUpWithError() throws { continueAfterFailure = false } override func tearDownWithError() throws { app?.terminate() } @MainActor func testExample() throws { let app = XCUIApplication() self.app = app // <- HERE this causes the problem app.launch() XCTFail() } } Reproduction environment macOS Sequoia 15.7.3 Tested XCode 26.3 and XCode 26.2 have the hang Tested XCode 16.4 does work as expected XCode 16.4 The issue does not happen on XCode 16.4, and is likely introduced in XCode 26. Related threads: https://developer.apple.com/forums/thread/809989 https://developer.apple.com/forums/thread/793307 Work-around Do not store XCUIApplication in the XCTestCase instance, maintain it scoped to the test methods.
3
0
129
2w
Xcode Cloud UI test runs often fail due to "The test runner failed to initialize for UI testing. (Underlying Error: Timed out waiting for AX loaded notification)"
I've yet to encounter these errors when running UI tests locally, but I'd estimate that 80-90% of my test runs on Xcode Cloud fail due to it. I'm just testing with iPhone simulators, I've set it to retry on failure, but no luck. Is there a setting or something I can tweak in my test code to improve the situation? I am on the latest xcode/iOS dev betas - but it was doing this before I switched to them from.
0
0
146
3w
XCTest Bundle cannot access local network.
We’re having an iPad issue accessing the local network with iPadOS 26.3. We have an automation system that tests our app on an iPad using accessibility tags. the XCTest test code sends messages from the iPad via TCP/IP to setup external test equipment. The messages abruptly stopped transmitting across the iPad blood-brain barrier with iPadOS 26.3 (26.2.1 and earlier works fine). The technique that worked involved installing a helper app with the same bundleID as our app, allowing the helper app to access the network, and when our app runs it has network access through the helper. It’s clever and kludgey. Forums that we referenced in the past: https://developer.apple.com/forums/thread/663858 TN3179: Understanding local network privacy | Apple Developer Documentation I suspect that something was changed in 26.3 that closed our window. I need two things: ID what is different in 26.3 and fix the automation system. If there’s a new way for XCUITest code to access the local network I’m happy to try it out.
8
0
161
3w
Not precise scroll in XCTest
I'm working on UI automation tests using XCUITest for an iOS application (iPhone). My goal is to programmatically scroll a view by a very precise number of pixels (e.g., exactly 500 points down). I understand the scroll(byDeltaX:deltaY:) method is not supported on iPhone, so I'm using the coordinate-based drag method as an alternative. Specifically, I am using XCUICoordinate.press(forDuration:thenDragTo:withVelocity:thenHoldForDuration:) to simulate a drag gesture. I calculate a start and end coordinate with a specific vertical offset in points, expecting the view to scroll by that exact amount. However, I'm observing that the resulting scroll offset is not perfectly accurate. There's a consistent error of several pixels, making the scroll amount unpredictable for precise test assertions. Is there a known limitation to the accuracy of coordinate-based dragging for simulating programmatic scrolling? Are there any alternative methods or best practices within XCUITest to achieve a more reliable and pixel-accurate scroll on iPhone, or is this level of precision simply not achievable with the current framework?
1
0
126
4w
XCUIElementTypes used vary between MacOS and iPadOS
I have a UI Test that is trying to drive a stepper. When run as iPad app, the tree has: Button, 0x10ce7f860, {{492.0, 98.5}, {47.0, 32.0}}, identifier: 'GraphDataViewNumBinsStepper-Decrement', label: 'Number of bins: 4, Decrement' Button, 0x10ce802a0, {{539.0, 98.5}, {47.0, 32.0}}, identifier: 'GraphDataViewNumBinsStepper-Increment', label: 'Number of bins: 4, Increment' When run a Mac app, the tree has: StaticText, 0x7fcf5380d670, {{1575.2, 530.0}, {109.0, 16.0}}, identifier: 'GraphDataViewNumBinsStepperText', value: Number of bins: 4 Stepper, 0x7fcf5380d7b0, {{1691.5, 527.0}, {15.0, 22.0}}, identifier: 'GraphDataViewNumBinsStepper', value: 0 IncrementArrow, 0x7fcf5380e420, {{1692.5, 528.0}, {13.0, 10.0}}, Disabled DecrementArrow, 0x7fcf5380e560, {{1692.5, 538.0}, {13.0, 10.0}}, Disabled Is this an expected situation or might I be building for an inappropriate version of MacOS or iPadOS?
0
0
50
Feb ’26
Sign In Failed on Apple
When testing the same warning comes up (sign in failed network error) for the apple and demo sign in I created. The google one works fine. I am confused because when I test in Xcode on multiple devices it works perfect. The tester has got the same error repeatedly? Most recently as a fix have updated the production backend. Does anyone have any insight why the xcode testing works for me but not the tester (I understand they are on a live device- I have even connected my phone and tested on that).
0
0
69
Feb ’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!
0
0
124
Jan ’26
xcodebuild does not retry UI tests with xcode 26.2
I have ios UI tests that are build with command xcodebuild -workspace ... -scheme ... -configuration ... -derivedDataPath ... -destination ... -testPlan ... build-for-testing Then I run them with xcodebuild -destination ... -resultBundlePath ... -parallel-testing-worker-count ... -xctestrun ... test-without-building I also have following settings in testplan "maximumTestRepetitions" : 3, "testRepetitionMode" : "retryOnFailure", With xcode 16.4 tests were retried on failure up to 3 times, but migrating to xcode 26.2 seems to change this behavior and tests are no longer retried. Is it expected behaviour and I should manually add params like -test-iterations 3 -retry-tests-on-failure into xcodebuild test-without-building command? Here is xcresult - https://drive.google.com/file/d/1xHgiZnIK_lptDSUf-fCyEnT9zYubZlCf/view?usp=sharing And testrun file -https://drive.google.com/file/d/1aBi2sTjy8zFYtgYn1KA60T8gwD_OnBCF/view?usp=sharing
1
0
222
Jan ’26
"Application has not loaded accessibility" timeout followed by silent auto-recovery corrupts framework state on iOS 18
On iOS 18, when XCUITest encounters an "Application has not loaded accessibility" error after the 60 second timeout, it performs an undocumented auto-recovery ("Setting up automation session") instead of halting the test as documented. This leaves the XCUITest framework in a corrupted state, causing subsequent tests in the same session to fail with unexpected behavior. Expected Behavior (per Apple documentation): Any failure in the launch sequence will be reported as a test failure and the test will be halted at that point. Actual Behavior: XCUITest waits 60 seconds for accessibility to load Logs "Application has not loaded accessibility" error Instead of halting, performs "Setting up automation session" (auto-recovery) Test continues with corrupted framework state Subsequent tests in the same session fail with phantom element queries Steps Run XCUITest suite on a real iOS 18 device Have an app with moderately heavy initialization (e.g., synchronous network operations during bootstrap) Observe intermittent "accessibility not loaded" errors When error occurs, subsequent tests fail with unexpected behavior Test Logs Evidence First test (accessibility failure + recovery): t = 11.11s Wait for accessibility to load t = 71.14s Capturing diagnostic spindump t = 76.24s Assertion Failure: Application 'com.example.app' has not loaded accessibility t = 76.26s Setting up automation session ← Undocumented recovery t = 77.29s Tear Down Second test (corrupted state): t = 35.01s Tap "signin-button" t = 35.55s Waiting for "bannerButtonStackFirstItem" ← Query NOT in test code! t = 40.58s Assertion Failure: Failed to find element The second test executes element queries that do not exist in its source code, indicating leaked/corrupted state from the previous test's failed recovery. Note: The tearDown() method terminates the app but cannot reset the internal state of the XCUITest framework itself, so corruption persists across tests. We are observing this behavior consistently on iOS 18 real devices. We would like to know: Is this a known issue with XCUITest on iOS 18? Is anyone experiencing similar "accessibility not loaded" failures followed by auto-recovery? Is the "Setting up automation session" recovery behavior intentional or a bug? Is there a recommended workaround to prevent framework state corruption between tests?
0
1
215
Jan ’26
XCUIDevice.shared.appearance = .dark no longer works when running UI tests via xcodebuild on newer iOS versions
I am seeing a regression with XCUIDevice.shared.appearance = .dark in UI tests that only affects xcodebuild, not Xcode’s UI test runner. Setup • UI tests written using XCTest • Dark mode forced in setUp() using: XCUIDevice.shared.appearance = .dark • Tests target an iOS simulator • Same test target, same scheme Expected behavior The app launches in Dark Mode for UI tests, as it did previously. Actual behavior • When running UI tests from Xcode (Product > Test), Dark Mode is applied correctly. • When running the same UI tests via xcodebuild test, Dark Mode is ignored and the app launches in Light Mode. • No test failures, no warnings, no logs indicating the appearance override was skipped. Regression details • This used to work on older iOS versions when running via xcodebuild. • The regression appears after updating iOS simulators (exact version boundary still unclear). • No relevant changes were made to the test code, scheme, or CI configuration. • xcodebuild otherwise launches and runs UI tests normally. Notes • The issue is specific to XCUIDevice.shared.appearance. • Other UI test functionality behaves as expected. • This makes CI results inconsistent with local Xcode runs and breaks visual assumptions in snapshot and layout-based tests. Question Is this a known regression or an intentional behavior change in recent iOS / Xcode versions? If intentional, what is the supported way to reliably force Dark Mode in UI tests when running via xcodebuild? This currently makes xcodebuild-based CI UI testing unreliable compared to Xcode’s test runner.
1
1
109
Jan ’26
UI Tests troubles with Xcode 26.1 and Xcode 26.2
Since I moved to Xcode 26.1 and Xcode 26.2 then, my UI tests all fail only for iOS 26+, for both simulator and real device. Everything worked perfectly with Xcode 26.0, and the code base of the application under test and the test cases are the same. With Xcode 26.0, the tests pass for iOS 26+ and iOS < 26, for both simulator and real device. In addition, even the Accessibility Inspector tool fails to display the view hierarchy for iOS 26+ with Xcode 26.2. With Xcode 26.0, whatever are the devices and the OS versions, the tool was able to display the view hierarchy. Otherwise the tool is empty even if the device and app are selected. This failing tests issue occurs both on my local environment and on GitHub Actions runners, excluding the hypothesis I have troubles with my own side. The error message for failing tests explains the element cannot be found anymore. Given for example the test case: @MainActor func testMakeScreenshotsForDocumentation_Button() { let app = launchApp() goToComponentsSheet(app) waitForButtonToAppear(withWording: "app_components_button_label", app) tapButton(withWording: "app_components_button_label", app) tapButton(withWording: "Strong", app) takeScreenshot(named: "component_button_", ACDC.buttonX, ACDC.buttonY, ACDC.buttonWidth, ACDC.buttonHeight, app) } the goToComponentSheet(app) line shows the error: ActionsDocumentationScreenshots.testMakeScreenshotsForDocumentation_Button() In details the function: /// Opens the page of the components, i.e. tap on the 2nd of the tab bar @MainActor func goToComponentsSheet(_ app: XCUIApplication) { app.tabBars.buttons.element(boundBy: 1).tap() } with the following error on the app.tabBars line: .../AppTestCase.swift:157 testMakeScreenshotsForDocumentation_Button(): Failed to tap Button (Element at index 1): No matches found for Descendants matching type TabBar from input {(Application, pid: 1883)} I have the feeling with Xcode 26.2 (and Xcode 26.1) the view hierarchy is not accessible anymore for both XCUITest framework and Accessibility Inspector tool. Note I have on my side macOS Tahoe 26.1 (25B78) and my GitHub Actions runner are on macOS 26.0.1 (25A362). When I used Xcode 26.0 I was on macOS Tahoe 26.1 (25B78) . Any ideas? 🙂
2
0
335
Jan ’26
Xcode 16 issues with mac virtualisation
I have created a virtualised Mac machine where I am running the latest Xcode version 16.4 with macOS Sequoia as the base image. While running XCTest tests, I am observing a clear difference in behaviour between virtualised and non-virtualised setups. Below is the command I am using to run the tests: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -xctestrun /Users/ltuser/290103613/xcui.xctestrun -destination "platform=iOS Simulator,id=79A5F8CC-4A2E-4C91-895D-AE97E25CB824,arch=arm64,OS=18.0" test-without-building "-only-testing:ClassName/MethodName/testName" -derivedDataPath /Users/ltuser/290103613/Archive -verbose IDELogLevel=debug IDETestLogLevel=debug ONLY_ACTIVE_ARCH=YES Observed Issue On virtualised hosts: Every XCTest is executed twice This happens for both passed and failed tests The behaviour is consistent across all virtualised machines On non-virtualised (bare-metal) Macs: Tests execute only once, as expected Debugging Steps Taken Multiple destination suspicion Initially, I noticed the following warning: --- xcodebuild: WARNING: Using the first of multiple matching destinations: { platform:iOS Simulator, id:0FFB9082-94AB-4D0A-A731-CC4452BDD4E7, OS:17.0, name:iPhone 15 } { platform:iOS Simulator, id:0FFB9082-94AB-4D0A-A731-CC4452BDD4E7, OS:17.0, name:iPhone 15 } This raised suspicion that tests might be running twice due to multiple matching destinations. Destination narrowed down I then explicitly restricted the destination to a single simulator UDID, after which: The warning disappeared However, the issue still persists Tests continue to run twice on virtualised hosts Version Comparison Xcode 16.4 + macOS Sequoia (virtualised) → Tests run twice Xcode 15.x (same setup otherwise) → Tests run once Questions Has anyone else faced this issue with Xcode 16.x on virtualised macOS? Is this a known issue with Xcode 16 + Virtualisation? Is there any recommended workaround or configuration change to avoid duplicate test execution? I am currently blocked on this issue and would appreciate confirmation on whether this is an Xcode or virtualisation-related problem. Thank you.
2
1
203
Jan ’26
Xcode Crashes when viewing XCUITest Result
I've been working on UI Tests for a month or two and things have been great. But I believe there was a recent update to Xcode [running Version 26.2 (17C52)] and since then about 80% of the time when I try to view the test results so I can see the screenshots and video, Xcode crashes hard and I have to open it again. I've tried cleaning the Build folder and Derived Data and all sorts of stuff like that. Restarted Xcode, restarted my computer, etc. Any idea of how I can avoid these crashes?
3
1
208
Jan ’26
Code Coverage Not Generated in Xcode 26.1 Despite Successful Test Runs
We’re facing an issue with Xcode 26.1 where code coverage is not being generated. All our test cases run and pass successfully, but the .xccovreport / .xccovarchive files are never produced. Code coverage is enabled in the scheme, and this setup used to work correctly in earlier Xcode versions. We are trying to determine whether this is a configuration issue on our end or a possible Xcode 26.1 bug. Is anyone else experiencing the same problem with code coverage in Xcode 26.1? Any insights or workarounds would be appreciated.
1
1
282
Dec ’25
XCTFail immediately aborts the test in Xcode 26 — no retry on failure
Hi, I’m seeing an unexpected change in how XCTFail behaves in UI tests after updating Xcode. I use the following helper method: `func waitForExistance(file: StaticString, line: UInt) -> Self { if !(element.exists || element.waitForExistence(timeout: Configuration.current.predicateTimeout)) { XCTFail("couldn't find element: \(element) after \(Configuration.current.predicateTimeout) seconds", file: file, line: line) return self } else { return self } }` In Xcode 16.4, this worked as expected: – when an element wasn’t found, XCTFail was triggered, but the test continued running, allowing my retry logic to execute. After updating to Xcode 26.1 / 26.2 - the test now immediately aborts after XCTFail, without executing the next retry. The logs show: `t = 113.22s Tear Down t = 113.22s Terminate com.viessmann.care:81789 *** Assertion failure in -[UITests.Tests _caughtUnhandledDeveloperExceptionPermittingControlFlowInterruptions:caughtInterruptionException:whileExecutingBlock:], XCTestCase+IssueHandling.m:273 Test Case '-[UITests.Tests test_case]' failed (114.323 seconds). Flushing outgoing messages to the IDE with timeout 600.00s Received confirmation that IDE processed remaining outgoing messages` It looks like XCTFail in Xcode 26 is now treated as an unhandled developer exception, which stops the test execution immediately, even when it’s called inside a helper method. This was not the case in earlier versions. My questions: Is this a regression in XCTest? Or an intentional change in how XCTFail behaves in newer Xcode versions? Should failures now be reported differently (e.g., using record(.init(type: .assertionFailure, …))) if I want to continue the test instead of aborting it? I would like to restore the previous behavior where the failure is logged without terminating the entire test, so my retry mechanism can still run. Has anyone else run into this after upgrading? Thanks in advance! If you’d like, I can also add recommended workarounds that actually work with Xcode 16.4 (e.g., replacing XCTFail with a non-terminating issue record).
4
3
586
Feb ’26
Failed to generate code coverage report on iPhone
Failed to generate code coverage report when doing Swift Testing on iPhone device, but it's ok in UI testing or running on "My Mac(Designed for iPad)". I have enable code coverage in test plan. My app can't run on simulator due to frameworks limitations. Platform: Mac mini M2 w/ macOS15.7, iPhoneXR 18.6.2 Xcode version: 26.1 & 16.0 error msg: Failed to download profiles from paths ["/private/var/mobile/Containers/Data/Application/76A1F9BC-98C8-4349-998B-0FC030DEE3EC/tmp/3A424286-872D-40AD-B4CA-65B232B57EB4"] on device 'iPhoneXR' for application with bundle ID 'xxx.xxxx.xxxx' to directory /Users//Library/Developer/Xcode/DerivedData/-bosqsqmqiqwweldrfrtgsfpnhroht/Build/ProfileData/00008020-00042C2A3E38002E: Failed to retrieve the file node for tmp/3A424286-872D-40AD-B4CA-65B232B57EB4. (Underlying Error: Failed to retrieve the file node for tmp/3A424286-872D-40AD-B4CA-65B232B57EB4)
0
0
150
Nov ’25
XCUITesting Photo Library on macOS
Using XCUITesting to access images using photos picker. The code is roughly like this: photoPickerButton.click() try await Task.sleep(for: .seconds(2)) let images = app.descendants(matching: .image) .matching(identifier: "PXGGridLayout-Info") // select the first 5 images for ix in 0..<5 { let image = images.element(boundBy: ix) if image.exists { image.click() } } // why do I have to click this twice? Output says the second // click does "Falling back to element center point". app.buttons["Add"].firstMatch.click() app.buttons["Add"].firstMatch.click() Other than the minor annoyance of having to click the Add button twice that works fine. The issue is the second time in the same test I run almost identical code, but only try to select the first image as a test for handling duplicate selections. Doesn't work. The first image returned from the query exists, but is not hittable. This is a testing issue as running the steps manually work fine. The element I want to click is this: Attributes: Image, 0x73511d540, {{1794.0, 745.2}, {98.0, 73.5}}, identifier: 'PXGGridLayout-Info', label: 'February 02, 1:00 PM' Any ideas?
Replies
0
Boosts
0
Views
68
Activity
4d
UI Testing for iPadOS 26 Menu Bar items
I need to validate whether specific menu items are correctly enabled/disabled. The XCUIAutomation elements for my menu items do not appear in the tree shown by displaying the XCUIApplication object in the debugger when building and testing the iPadOS version of my application. When running the application in an iPad simulator, I can make the menu bar appear by swiping down. The testing works as expected for the MacOS build and test. I did try to use the recording feature, but was not successful in creating a series of commands that worked for a test run.
Replies
0
Boosts
0
Views
233
Activity
2w
Xcode 26.3 incompatible with FireBase and WeTest?
Popular automated testing systems like FireBase [1] and WeTest [2] expect the uploaded test to include the Debug-iphoneos directory generated by Xcode. However, in all of our builds on Xcode 26.3, this folder is created but remains empty. There are some other folders with the same name in subdirectories, but these only contain intermediate build files. Now we're looking for configuration or settings in Xcode to restore the original behavior, where the top-level Debug-iphoneos directory gets populated with a complete image of the test target, include the binary and resource files. Any suggestions would be much appreciated! [1] https://firebase.google.com/docs/test-lab/ios/run-xctest [2] https://www.wetest.net/documents/detail/automation/d8yaA7yz
Replies
0
Boosts
0
Views
36
Activity
2w
XCode 26 - xcodebuild command hangs on XCFail
On XCode 26.x, calling XCFail with continueAfterFailure set to false causes xcodebuild command to hang indefinitely if the XCUIApplication object is stored outside the test method. Create a new template iOS App project with UI tests Add XCFail(...) to a UI test test-case Set the XCUIApplication in self.app (avoiding this fixes the hang) Run tests with xcodebuild test The terminal hangs forever Reproduction example import XCTest final class TestAppUITests: XCTestCase { var app: XCUIApplication? = nil override func setUpWithError() throws { continueAfterFailure = false } override func tearDownWithError() throws { app?.terminate() } @MainActor func testExample() throws { let app = XCUIApplication() self.app = app // <- HERE this causes the problem app.launch() XCTFail() } } Reproduction environment macOS Sequoia 15.7.3 Tested XCode 26.3 and XCode 26.2 have the hang Tested XCode 16.4 does work as expected XCode 16.4 The issue does not happen on XCode 16.4, and is likely introduced in XCode 26. Related threads: https://developer.apple.com/forums/thread/809989 https://developer.apple.com/forums/thread/793307 Work-around Do not store XCUIApplication in the XCTestCase instance, maintain it scoped to the test methods.
Replies
3
Boosts
0
Views
129
Activity
2w
Xcode Cloud UI test runs often fail due to "The test runner failed to initialize for UI testing. (Underlying Error: Timed out waiting for AX loaded notification)"
I've yet to encounter these errors when running UI tests locally, but I'd estimate that 80-90% of my test runs on Xcode Cloud fail due to it. I'm just testing with iPhone simulators, I've set it to retry on failure, but no luck. Is there a setting or something I can tweak in my test code to improve the situation? I am on the latest xcode/iOS dev betas - but it was doing this before I switched to them from.
Replies
0
Boosts
0
Views
146
Activity
3w
XCTest Bundle cannot access local network.
We’re having an iPad issue accessing the local network with iPadOS 26.3. We have an automation system that tests our app on an iPad using accessibility tags. the XCTest test code sends messages from the iPad via TCP/IP to setup external test equipment. The messages abruptly stopped transmitting across the iPad blood-brain barrier with iPadOS 26.3 (26.2.1 and earlier works fine). The technique that worked involved installing a helper app with the same bundleID as our app, allowing the helper app to access the network, and when our app runs it has network access through the helper. It’s clever and kludgey. Forums that we referenced in the past: https://developer.apple.com/forums/thread/663858 TN3179: Understanding local network privacy | Apple Developer Documentation I suspect that something was changed in 26.3 that closed our window. I need two things: ID what is different in 26.3 and fix the automation system. If there’s a new way for XCUITest code to access the local network I’m happy to try it out.
Replies
8
Boosts
0
Views
161
Activity
3w
Not precise scroll in XCTest
I'm working on UI automation tests using XCUITest for an iOS application (iPhone). My goal is to programmatically scroll a view by a very precise number of pixels (e.g., exactly 500 points down). I understand the scroll(byDeltaX:deltaY:) method is not supported on iPhone, so I'm using the coordinate-based drag method as an alternative. Specifically, I am using XCUICoordinate.press(forDuration:thenDragTo:withVelocity:thenHoldForDuration:) to simulate a drag gesture. I calculate a start and end coordinate with a specific vertical offset in points, expecting the view to scroll by that exact amount. However, I'm observing that the resulting scroll offset is not perfectly accurate. There's a consistent error of several pixels, making the scroll amount unpredictable for precise test assertions. Is there a known limitation to the accuracy of coordinate-based dragging for simulating programmatic scrolling? Are there any alternative methods or best practices within XCUITest to achieve a more reliable and pixel-accurate scroll on iPhone, or is this level of precision simply not achievable with the current framework?
Replies
1
Boosts
0
Views
126
Activity
4w
XCUIElementTypes used vary between MacOS and iPadOS
I have a UI Test that is trying to drive a stepper. When run as iPad app, the tree has: Button, 0x10ce7f860, {{492.0, 98.5}, {47.0, 32.0}}, identifier: 'GraphDataViewNumBinsStepper-Decrement', label: 'Number of bins: 4, Decrement' Button, 0x10ce802a0, {{539.0, 98.5}, {47.0, 32.0}}, identifier: 'GraphDataViewNumBinsStepper-Increment', label: 'Number of bins: 4, Increment' When run a Mac app, the tree has: StaticText, 0x7fcf5380d670, {{1575.2, 530.0}, {109.0, 16.0}}, identifier: 'GraphDataViewNumBinsStepperText', value: Number of bins: 4 Stepper, 0x7fcf5380d7b0, {{1691.5, 527.0}, {15.0, 22.0}}, identifier: 'GraphDataViewNumBinsStepper', value: 0 IncrementArrow, 0x7fcf5380e420, {{1692.5, 528.0}, {13.0, 10.0}}, Disabled DecrementArrow, 0x7fcf5380e560, {{1692.5, 538.0}, {13.0, 10.0}}, Disabled Is this an expected situation or might I be building for an inappropriate version of MacOS or iPadOS?
Replies
0
Boosts
0
Views
50
Activity
Feb ’26
Sign In Failed on Apple
When testing the same warning comes up (sign in failed network error) for the apple and demo sign in I created. The google one works fine. I am confused because when I test in Xcode on multiple devices it works perfect. The tester has got the same error repeatedly? Most recently as a fix have updated the production backend. Does anyone have any insight why the xcode testing works for me but not the tester (I understand they are on a live device- I have even connected my phone and tested on that).
Replies
0
Boosts
0
Views
69
Activity
Feb ’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
0
Boosts
0
Views
124
Activity
Jan ’26
xcodebuild does not retry UI tests with xcode 26.2
I have ios UI tests that are build with command xcodebuild -workspace ... -scheme ... -configuration ... -derivedDataPath ... -destination ... -testPlan ... build-for-testing Then I run them with xcodebuild -destination ... -resultBundlePath ... -parallel-testing-worker-count ... -xctestrun ... test-without-building I also have following settings in testplan "maximumTestRepetitions" : 3, "testRepetitionMode" : "retryOnFailure", With xcode 16.4 tests were retried on failure up to 3 times, but migrating to xcode 26.2 seems to change this behavior and tests are no longer retried. Is it expected behaviour and I should manually add params like -test-iterations 3 -retry-tests-on-failure into xcodebuild test-without-building command? Here is xcresult - https://drive.google.com/file/d/1xHgiZnIK_lptDSUf-fCyEnT9zYubZlCf/view?usp=sharing And testrun file -https://drive.google.com/file/d/1aBi2sTjy8zFYtgYn1KA60T8gwD_OnBCF/view?usp=sharing
Replies
1
Boosts
0
Views
222
Activity
Jan ’26
"Application has not loaded accessibility" timeout followed by silent auto-recovery corrupts framework state on iOS 18
On iOS 18, when XCUITest encounters an "Application has not loaded accessibility" error after the 60 second timeout, it performs an undocumented auto-recovery ("Setting up automation session") instead of halting the test as documented. This leaves the XCUITest framework in a corrupted state, causing subsequent tests in the same session to fail with unexpected behavior. Expected Behavior (per Apple documentation): Any failure in the launch sequence will be reported as a test failure and the test will be halted at that point. Actual Behavior: XCUITest waits 60 seconds for accessibility to load Logs "Application has not loaded accessibility" error Instead of halting, performs "Setting up automation session" (auto-recovery) Test continues with corrupted framework state Subsequent tests in the same session fail with phantom element queries Steps Run XCUITest suite on a real iOS 18 device Have an app with moderately heavy initialization (e.g., synchronous network operations during bootstrap) Observe intermittent "accessibility not loaded" errors When error occurs, subsequent tests fail with unexpected behavior Test Logs Evidence First test (accessibility failure + recovery): t = 11.11s Wait for accessibility to load t = 71.14s Capturing diagnostic spindump t = 76.24s Assertion Failure: Application 'com.example.app' has not loaded accessibility t = 76.26s Setting up automation session ← Undocumented recovery t = 77.29s Tear Down Second test (corrupted state): t = 35.01s Tap "signin-button" t = 35.55s Waiting for "bannerButtonStackFirstItem" ← Query NOT in test code! t = 40.58s Assertion Failure: Failed to find element The second test executes element queries that do not exist in its source code, indicating leaked/corrupted state from the previous test's failed recovery. Note: The tearDown() method terminates the app but cannot reset the internal state of the XCUITest framework itself, so corruption persists across tests. We are observing this behavior consistently on iOS 18 real devices. We would like to know: Is this a known issue with XCUITest on iOS 18? Is anyone experiencing similar "accessibility not loaded" failures followed by auto-recovery? Is the "Setting up automation session" recovery behavior intentional or a bug? Is there a recommended workaround to prevent framework state corruption between tests?
Replies
0
Boosts
1
Views
215
Activity
Jan ’26
XCUIDevice.shared.appearance = .dark no longer works when running UI tests via xcodebuild on newer iOS versions
I am seeing a regression with XCUIDevice.shared.appearance = .dark in UI tests that only affects xcodebuild, not Xcode’s UI test runner. Setup • UI tests written using XCTest • Dark mode forced in setUp() using: XCUIDevice.shared.appearance = .dark • Tests target an iOS simulator • Same test target, same scheme Expected behavior The app launches in Dark Mode for UI tests, as it did previously. Actual behavior • When running UI tests from Xcode (Product > Test), Dark Mode is applied correctly. • When running the same UI tests via xcodebuild test, Dark Mode is ignored and the app launches in Light Mode. • No test failures, no warnings, no logs indicating the appearance override was skipped. Regression details • This used to work on older iOS versions when running via xcodebuild. • The regression appears after updating iOS simulators (exact version boundary still unclear). • No relevant changes were made to the test code, scheme, or CI configuration. • xcodebuild otherwise launches and runs UI tests normally. Notes • The issue is specific to XCUIDevice.shared.appearance. • Other UI test functionality behaves as expected. • This makes CI results inconsistent with local Xcode runs and breaks visual assumptions in snapshot and layout-based tests. Question Is this a known regression or an intentional behavior change in recent iOS / Xcode versions? If intentional, what is the supported way to reliably force Dark Mode in UI tests when running via xcodebuild? This currently makes xcodebuild-based CI UI testing unreliable compared to Xcode’s test runner.
Replies
1
Boosts
1
Views
109
Activity
Jan ’26
UI Tests troubles with Xcode 26.1 and Xcode 26.2
Since I moved to Xcode 26.1 and Xcode 26.2 then, my UI tests all fail only for iOS 26+, for both simulator and real device. Everything worked perfectly with Xcode 26.0, and the code base of the application under test and the test cases are the same. With Xcode 26.0, the tests pass for iOS 26+ and iOS < 26, for both simulator and real device. In addition, even the Accessibility Inspector tool fails to display the view hierarchy for iOS 26+ with Xcode 26.2. With Xcode 26.0, whatever are the devices and the OS versions, the tool was able to display the view hierarchy. Otherwise the tool is empty even if the device and app are selected. This failing tests issue occurs both on my local environment and on GitHub Actions runners, excluding the hypothesis I have troubles with my own side. The error message for failing tests explains the element cannot be found anymore. Given for example the test case: @MainActor func testMakeScreenshotsForDocumentation_Button() { let app = launchApp() goToComponentsSheet(app) waitForButtonToAppear(withWording: "app_components_button_label", app) tapButton(withWording: "app_components_button_label", app) tapButton(withWording: "Strong", app) takeScreenshot(named: "component_button_", ACDC.buttonX, ACDC.buttonY, ACDC.buttonWidth, ACDC.buttonHeight, app) } the goToComponentSheet(app) line shows the error: ActionsDocumentationScreenshots.testMakeScreenshotsForDocumentation_Button() In details the function: /// Opens the page of the components, i.e. tap on the 2nd of the tab bar @MainActor func goToComponentsSheet(_ app: XCUIApplication) { app.tabBars.buttons.element(boundBy: 1).tap() } with the following error on the app.tabBars line: .../AppTestCase.swift:157 testMakeScreenshotsForDocumentation_Button(): Failed to tap Button (Element at index 1): No matches found for Descendants matching type TabBar from input {(Application, pid: 1883)} I have the feeling with Xcode 26.2 (and Xcode 26.1) the view hierarchy is not accessible anymore for both XCUITest framework and Accessibility Inspector tool. Note I have on my side macOS Tahoe 26.1 (25B78) and my GitHub Actions runner are on macOS 26.0.1 (25A362). When I used Xcode 26.0 I was on macOS Tahoe 26.1 (25B78) . Any ideas? 🙂
Replies
2
Boosts
0
Views
335
Activity
Jan ’26
Xcode 16 issues with mac virtualisation
I have created a virtualised Mac machine where I am running the latest Xcode version 16.4 with macOS Sequoia as the base image. While running XCTest tests, I am observing a clear difference in behaviour between virtualised and non-virtualised setups. Below is the command I am using to run the tests: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -xctestrun /Users/ltuser/290103613/xcui.xctestrun -destination "platform=iOS Simulator,id=79A5F8CC-4A2E-4C91-895D-AE97E25CB824,arch=arm64,OS=18.0" test-without-building "-only-testing:ClassName/MethodName/testName" -derivedDataPath /Users/ltuser/290103613/Archive -verbose IDELogLevel=debug IDETestLogLevel=debug ONLY_ACTIVE_ARCH=YES Observed Issue On virtualised hosts: Every XCTest is executed twice This happens for both passed and failed tests The behaviour is consistent across all virtualised machines On non-virtualised (bare-metal) Macs: Tests execute only once, as expected Debugging Steps Taken Multiple destination suspicion Initially, I noticed the following warning: --- xcodebuild: WARNING: Using the first of multiple matching destinations: { platform:iOS Simulator, id:0FFB9082-94AB-4D0A-A731-CC4452BDD4E7, OS:17.0, name:iPhone 15 } { platform:iOS Simulator, id:0FFB9082-94AB-4D0A-A731-CC4452BDD4E7, OS:17.0, name:iPhone 15 } This raised suspicion that tests might be running twice due to multiple matching destinations. Destination narrowed down I then explicitly restricted the destination to a single simulator UDID, after which: The warning disappeared However, the issue still persists Tests continue to run twice on virtualised hosts Version Comparison Xcode 16.4 + macOS Sequoia (virtualised) → Tests run twice Xcode 15.x (same setup otherwise) → Tests run once Questions Has anyone else faced this issue with Xcode 16.x on virtualised macOS? Is this a known issue with Xcode 16 + Virtualisation? Is there any recommended workaround or configuration change to avoid duplicate test execution? I am currently blocked on this issue and would appreciate confirmation on whether this is an Xcode or virtualisation-related problem. Thank you.
Replies
2
Boosts
1
Views
203
Activity
Jan ’26
Xcode Crashes when viewing XCUITest Result
I've been working on UI Tests for a month or two and things have been great. But I believe there was a recent update to Xcode [running Version 26.2 (17C52)] and since then about 80% of the time when I try to view the test results so I can see the screenshots and video, Xcode crashes hard and I have to open it again. I've tried cleaning the Build folder and Derived Data and all sorts of stuff like that. Restarted Xcode, restarted my computer, etc. Any idea of how I can avoid these crashes?
Replies
3
Boosts
1
Views
208
Activity
Jan ’26
Xcode 26 - How do I hide "Start Recording UI Test" (red dot) button showing on left side ?
Hi there, ever since I updated to Xcode 26.1, I have been seeing Record UI Button that is showing up on the left hand side which I believe is a new feature. Is there a way to hide this button ? I am using Vim bind with relative line numbers, and now I can't see which line number I am in when writing test cases...
Replies
1
Boosts
1
Views
161
Activity
Jan ’26
Code Coverage Not Generated in Xcode 26.1 Despite Successful Test Runs
We’re facing an issue with Xcode 26.1 where code coverage is not being generated. All our test cases run and pass successfully, but the .xccovreport / .xccovarchive files are never produced. Code coverage is enabled in the scheme, and this setup used to work correctly in earlier Xcode versions. We are trying to determine whether this is a configuration issue on our end or a possible Xcode 26.1 bug. Is anyone else experiencing the same problem with code coverage in Xcode 26.1? Any insights or workarounds would be appreciated.
Replies
1
Boosts
1
Views
282
Activity
Dec ’25
XCTFail immediately aborts the test in Xcode 26 — no retry on failure
Hi, I’m seeing an unexpected change in how XCTFail behaves in UI tests after updating Xcode. I use the following helper method: `func waitForExistance(file: StaticString, line: UInt) -> Self { if !(element.exists || element.waitForExistence(timeout: Configuration.current.predicateTimeout)) { XCTFail("couldn't find element: \(element) after \(Configuration.current.predicateTimeout) seconds", file: file, line: line) return self } else { return self } }` In Xcode 16.4, this worked as expected: – when an element wasn’t found, XCTFail was triggered, but the test continued running, allowing my retry logic to execute. After updating to Xcode 26.1 / 26.2 - the test now immediately aborts after XCTFail, without executing the next retry. The logs show: `t = 113.22s Tear Down t = 113.22s Terminate com.viessmann.care:81789 *** Assertion failure in -[UITests.Tests _caughtUnhandledDeveloperExceptionPermittingControlFlowInterruptions:caughtInterruptionException:whileExecutingBlock:], XCTestCase+IssueHandling.m:273 Test Case '-[UITests.Tests test_case]' failed (114.323 seconds). Flushing outgoing messages to the IDE with timeout 600.00s Received confirmation that IDE processed remaining outgoing messages` It looks like XCTFail in Xcode 26 is now treated as an unhandled developer exception, which stops the test execution immediately, even when it’s called inside a helper method. This was not the case in earlier versions. My questions: Is this a regression in XCTest? Or an intentional change in how XCTFail behaves in newer Xcode versions? Should failures now be reported differently (e.g., using record(.init(type: .assertionFailure, …))) if I want to continue the test instead of aborting it? I would like to restore the previous behavior where the failure is logged without terminating the entire test, so my retry mechanism can still run. Has anyone else run into this after upgrading? Thanks in advance! If you’d like, I can also add recommended workarounds that actually work with Xcode 16.4 (e.g., replacing XCTFail with a non-terminating issue record).
Replies
4
Boosts
3
Views
586
Activity
Feb ’26
Failed to generate code coverage report on iPhone
Failed to generate code coverage report when doing Swift Testing on iPhone device, but it's ok in UI testing or running on "My Mac(Designed for iPad)". I have enable code coverage in test plan. My app can't run on simulator due to frameworks limitations. Platform: Mac mini M2 w/ macOS15.7, iPhoneXR 18.6.2 Xcode version: 26.1 & 16.0 error msg: Failed to download profiles from paths ["/private/var/mobile/Containers/Data/Application/76A1F9BC-98C8-4349-998B-0FC030DEE3EC/tmp/3A424286-872D-40AD-B4CA-65B232B57EB4"] on device 'iPhoneXR' for application with bundle ID 'xxx.xxxx.xxxx' to directory /Users//Library/Developer/Xcode/DerivedData/-bosqsqmqiqwweldrfrtgsfpnhroht/Build/ProfileData/00008020-00042C2A3E38002E: Failed to retrieve the file node for tmp/3A424286-872D-40AD-B4CA-65B232B57EB4. (Underlying Error: Failed to retrieve the file node for tmp/3A424286-872D-40AD-B4CA-65B232B57EB4)
Replies
0
Boosts
0
Views
150
Activity
Nov ’25