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

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?
0
1
146
1w
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
1w
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
912
3w
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
9k
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
307
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.3k
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
691
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
772
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.0k
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.3k
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
1k
Jul ’26
Drag on a Canvas with XCUICoordinate.press(...)
I am trying to create a test case in XCTest using the UI Test target. I have a use case where I use a SwiftUI Canvas to draw a network graph; and the user can drag the graph on the Canvas. After the drag, the user may click on a node. The application presents a popup with the information about the network node clicked. SwiftUI provides the information required for the application to translate the location of the tap into the original location prior to the drag; and so the logic behind the popup can determine which node the network graph was tapped by the user. It appears that the distance of the drag operation performed does not match distance that the image actually moved. The drag distance is always larger than the actual distance dragged. I can observe this during the test execution. The arrow starts at the correct spot but then goes further than the object being dragged. I also observe this when I am driving the application. Is there some standard and supported way to determine the distance that the image on the screen was moved given a specific distance of the "thenDragTo:" coordinate?
3
0
655
May ’26
XCUItest - Accessing page content when using deeply nested React Navigation navigators on iOS Using
Hello! I've been trying to automate tests using Appium/XCUITests in a React Native APP, but I'm finding many blockers. They are related to the amount of nested elements in the "DOM" in which the XCUItest can not go deeper to get all the elements we need. snapshotMaxDepth -> The XCUITest does not support more than 60 value, otherwise it returns the following error: Got response with status 404: {"value":{"error":"stale element reference","message":"The previously found element "Application 'xyz.xxx.xxx'" is not present in the current view anymore. Make sure the application UI has the expected state. Original error: Error kAXErrorIllegalArgument getting snapshot for element <AXUIElementRef 0x600003aaf750> {pid=95967} {uid=[ID:1 hash:0x0]}","traceback":"(\n\t0 CoreFoundation 0x00007fff20405604 __exceptionPreprocess + 242\n\t1 libobjc.A.dylib 0x00007fff201a4a45 objc_exception_throw + 48\n\t2 WebDriverAgentLib 0x000000010a3caa53 -[XCUIElement(FBUtilities) fb_takeSnapshot] + 723\n\t3 WebDriverAgentLib 0x000000010a3cad07 -[XCUIElement(FBUtilities) fb_snapshotWithAttributes:maxDepth:] + 183\n\t4 WebDriverAgentLib 0x000000010a37baea +[FBXPath writeXmlWithRootElement:indexPath:elementStore:includedAttributes:writer:] + 778\n\t5 WebDriverAgentLib 0x000000010a37b12c +[FBXPath xmlRep... But if I inform less than 60, the XCUITest is not able to get all the elements we need to automate: There are many threads about this, all of them the issue is in the XCUITest: https://github.com/appium/appium/issues/14825 https://discuss.appium.io/t/handling-staleelementreferenceexception/35095/11 https://github.com/appium/appium/issues/18085 https://discuss.appium.io/t/error-in-appium-desktop-refreshing-source-after-adding-snapshotmaxdepth-greater-than-62/34058 https://stackoverflow.com/questions/74235441/appium-cant-reach-elements-in-ios-source-tree-they-are-too-deep-works-fine-in Tested all possible solutions suggested in the threads, but I will have the issue.
16
13
5.5k
May ’26
Xcode 26.4: xcodebuild test crashes on iOS 15.2 Simulators before XCTest bootstrap due to ResultDataPublisher missing Foundation.URLRequest.httpMethod symbol
I’m seeing a crash when running XCTest on iOS 15.2 Simulators with Xcode 26.4. The test bundle never starts. xctest crashes before establishing the XCTest connection. This appears to be a regression from Xcode 26.2. The same test flow worked with Xcode 26.2, but crashes with Xcode 26.4. This does not appear to be caused by my app or package code. I can reproduce it with a minimal Swift Package that only imports Foundation and has one XCTest case using URLRequest.httpMethod. Environment: Xcode with failure: 26.4 Xcode that worked: 26.2 macOS: 26.2 Destinations tested: iPhone SE (2nd generation), iOS 15.2 Simulator iPad mini (6th generation), iOS 15.2 Simulator Test command: xcodebuild test Swift Package deployment target: iOS 15.2 Swift tools version: 6.1 Minimal reproduction package: Package.swift // swift-tools-version:6.1 import PackageDescription let package = Package( name: "FoundationOnlyRepro", platforms: [.iOS("15.2")], products: [ .library( name: "FoundationOnlyRepro", targets: ["FoundationOnlyRepro"] ) ], targets: [ .target(name: "FoundationOnlyRepro"), .testTarget( name: "FoundationOnlyReproTests", dependencies: ["FoundationOnlyRepro"] ) ], swiftLanguageModes: [.v6] ) Sources/FoundationOnlyRepro/FoundationOnlyRepro.swift import Foundation public struct FoundationOnlyRepro { public init() {} public func makeRequest() -> URLRequest { var request = URLRequest(url: URL(string: "https://example.invalid")!) request.httpMethod = "GET" return request } } Tests/FoundationOnlyReproTests/FoundationOnlyReproTests.swift import XCTest import Foundation @testable import FoundationOnlyRepro final class FoundationOnlyReproTests: XCTestCase { func testURLRequestHTTPMethod() { let request = FoundationOnlyRepro().makeRequest() XCTAssertEqual(request.httpMethod, "GET") } } Command used: xcodebuild test \ -scheme FoundationOnlyRepro \ -destination 'platform=iOS Simulator,name=iPhone SE (2nd generation),OS=15.2' \ -derivedDataPath /tmp/rdp-dd \ -quiet The same kind of crash also occurs when using an iPad mini (6th generation) iOS 15.2 Simulator destination. Result: Testing failed: xctest (...) encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying Error: Test crashed with signal abrt before establishing connection.)) ** TEST FAILED ** The diagnostic stderr shows: dyld[28688]: Symbol not found: _$s10Foundation10URLRequestV10httpMethodSSSgvs Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/ResultDataPublisher.framework/ ResultDataPublisher Expected in: /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 15.2.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/Foundation.framework/Foundation Demangling the missing symbol: xcrun swift-demangle '_$s10Foundation10URLRequestV10httpMethodSSSgvs' Output: Foundation.URLRequest.httpMethod.setter : Swift.String? I also checked the iOS 15.2 simulator runtime. The symbol appears to exist in: /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 15.2.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/libswiftFoundation.dylib but ResultDataPublisher.framework appears to be resolving it from: .../System/Library/Frameworks/Foundation.framework/Foundation This suggests the crash is in Xcode’s XCTest/result publishing infrastructure, not in the app/test bundle. Questions: Is Xcode 26.4 + iOS 15.2 Simulator + xcodebuild test expected to be supported? Is there a supported workaround to disable or avoid ResultDataPublisher.framework for command-line XCTest runs?
1
0
549
Apr ’26
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.
9
0
893
Apr ’26
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
802
Mar ’26
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
0
Boosts
1
Views
146
Activity
1w
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
1w
iOS 16.4 - Saving password on simulator - how to disable ? XCUITest
Hello. Is there a possibility to disable saving password to account functionality in iOS Simulator ? (It breaks an automation tests) Thanks
Replies
2
Boosts
1
Views
1.3k
Activity
3w
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
912
Activity
3w
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
9k
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
307
Activity
Sep ’26
XCTHitchMetric doesn't work with MTKView
Hello! I was recently trying out XCTHitchMetric with my MTKView and it doesn't seem to record anything. But if I use the Animation Hitches instrument then I do see the hitches get recorded when a frame is presented on screen later than expected. I'm curious if there is a reason for this or maybe I am missing something?
Replies
0
Boosts
0
Views
256
Activity
Aug ’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.3k
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
691
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
772
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.0k
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.3k
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
1k
Activity
Jul ’26
Drag on a Canvas with XCUICoordinate.press(...)
I am trying to create a test case in XCTest using the UI Test target. I have a use case where I use a SwiftUI Canvas to draw a network graph; and the user can drag the graph on the Canvas. After the drag, the user may click on a node. The application presents a popup with the information about the network node clicked. SwiftUI provides the information required for the application to translate the location of the tap into the original location prior to the drag; and so the logic behind the popup can determine which node the network graph was tapped by the user. It appears that the distance of the drag operation performed does not match distance that the image actually moved. The drag distance is always larger than the actual distance dragged. I can observe this during the test execution. The arrow starts at the correct spot but then goes further than the object being dragged. I also observe this when I am driving the application. Is there some standard and supported way to determine the distance that the image on the screen was moved given a specific distance of the "thenDragTo:" coordinate?
Replies
3
Boosts
0
Views
655
Activity
May ’26
XCUItest - Accessing page content when using deeply nested React Navigation navigators on iOS Using
Hello! I've been trying to automate tests using Appium/XCUITests in a React Native APP, but I'm finding many blockers. They are related to the amount of nested elements in the "DOM" in which the XCUItest can not go deeper to get all the elements we need. snapshotMaxDepth -> The XCUITest does not support more than 60 value, otherwise it returns the following error: Got response with status 404: {"value":{"error":"stale element reference","message":"The previously found element "Application 'xyz.xxx.xxx'" is not present in the current view anymore. Make sure the application UI has the expected state. Original error: Error kAXErrorIllegalArgument getting snapshot for element <AXUIElementRef 0x600003aaf750> {pid=95967} {uid=[ID:1 hash:0x0]}","traceback":"(\n\t0 CoreFoundation 0x00007fff20405604 __exceptionPreprocess + 242\n\t1 libobjc.A.dylib 0x00007fff201a4a45 objc_exception_throw + 48\n\t2 WebDriverAgentLib 0x000000010a3caa53 -[XCUIElement(FBUtilities) fb_takeSnapshot] + 723\n\t3 WebDriverAgentLib 0x000000010a3cad07 -[XCUIElement(FBUtilities) fb_snapshotWithAttributes:maxDepth:] + 183\n\t4 WebDriverAgentLib 0x000000010a37baea +[FBXPath writeXmlWithRootElement:indexPath:elementStore:includedAttributes:writer:] + 778\n\t5 WebDriverAgentLib 0x000000010a37b12c +[FBXPath xmlRep... But if I inform less than 60, the XCUITest is not able to get all the elements we need to automate: There are many threads about this, all of them the issue is in the XCUITest: https://github.com/appium/appium/issues/14825 https://discuss.appium.io/t/handling-staleelementreferenceexception/35095/11 https://github.com/appium/appium/issues/18085 https://discuss.appium.io/t/error-in-appium-desktop-refreshing-source-after-adding-snapshotmaxdepth-greater-than-62/34058 https://stackoverflow.com/questions/74235441/appium-cant-reach-elements-in-ios-source-tree-they-are-too-deep-works-fine-in Tested all possible solutions suggested in the threads, but I will have the issue.
Replies
16
Boosts
13
Views
5.5k
Activity
May ’26
Xcode 26.4: xcodebuild test crashes on iOS 15.2 Simulators before XCTest bootstrap due to ResultDataPublisher missing Foundation.URLRequest.httpMethod symbol
I’m seeing a crash when running XCTest on iOS 15.2 Simulators with Xcode 26.4. The test bundle never starts. xctest crashes before establishing the XCTest connection. This appears to be a regression from Xcode 26.2. The same test flow worked with Xcode 26.2, but crashes with Xcode 26.4. This does not appear to be caused by my app or package code. I can reproduce it with a minimal Swift Package that only imports Foundation and has one XCTest case using URLRequest.httpMethod. Environment: Xcode with failure: 26.4 Xcode that worked: 26.2 macOS: 26.2 Destinations tested: iPhone SE (2nd generation), iOS 15.2 Simulator iPad mini (6th generation), iOS 15.2 Simulator Test command: xcodebuild test Swift Package deployment target: iOS 15.2 Swift tools version: 6.1 Minimal reproduction package: Package.swift // swift-tools-version:6.1 import PackageDescription let package = Package( name: "FoundationOnlyRepro", platforms: [.iOS("15.2")], products: [ .library( name: "FoundationOnlyRepro", targets: ["FoundationOnlyRepro"] ) ], targets: [ .target(name: "FoundationOnlyRepro"), .testTarget( name: "FoundationOnlyReproTests", dependencies: ["FoundationOnlyRepro"] ) ], swiftLanguageModes: [.v6] ) Sources/FoundationOnlyRepro/FoundationOnlyRepro.swift import Foundation public struct FoundationOnlyRepro { public init() {} public func makeRequest() -> URLRequest { var request = URLRequest(url: URL(string: "https://example.invalid")!) request.httpMethod = "GET" return request } } Tests/FoundationOnlyReproTests/FoundationOnlyReproTests.swift import XCTest import Foundation @testable import FoundationOnlyRepro final class FoundationOnlyReproTests: XCTestCase { func testURLRequestHTTPMethod() { let request = FoundationOnlyRepro().makeRequest() XCTAssertEqual(request.httpMethod, "GET") } } Command used: xcodebuild test \ -scheme FoundationOnlyRepro \ -destination 'platform=iOS Simulator,name=iPhone SE (2nd generation),OS=15.2' \ -derivedDataPath /tmp/rdp-dd \ -quiet The same kind of crash also occurs when using an iPad mini (6th generation) iOS 15.2 Simulator destination. Result: Testing failed: xctest (...) encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying Error: Test crashed with signal abrt before establishing connection.)) ** TEST FAILED ** The diagnostic stderr shows: dyld[28688]: Symbol not found: _$s10Foundation10URLRequestV10httpMethodSSSgvs Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/ResultDataPublisher.framework/ ResultDataPublisher Expected in: /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 15.2.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/Foundation.framework/Foundation Demangling the missing symbol: xcrun swift-demangle '_$s10Foundation10URLRequestV10httpMethodSSSgvs' Output: Foundation.URLRequest.httpMethod.setter : Swift.String? I also checked the iOS 15.2 simulator runtime. The symbol appears to exist in: /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 15.2.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/libswiftFoundation.dylib but ResultDataPublisher.framework appears to be resolving it from: .../System/Library/Frameworks/Foundation.framework/Foundation This suggests the crash is in Xcode’s XCTest/result publishing infrastructure, not in the app/test bundle. Questions: Is Xcode 26.4 + iOS 15.2 Simulator + xcodebuild test expected to be supported? Is there a supported workaround to disable or avoid ResultDataPublisher.framework for command-line XCTest runs?
Replies
1
Boosts
0
Views
549
Activity
Apr ’26
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
9
Boosts
0
Views
893
Activity
Apr ’26
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
802
Activity
Mar ’26