Repository navigation
fix(ios): driver keeps no XCTest attachments (keepNever) - #2
Merged
Merged
Conversation
The runner's one test never succeeds - Maestro stops it at session end - so the scheme's default deleteOnSuccess kept every screenshot XCTest took while Maestro polled the screen. On a real iPhone they stay in testmanagerd's data container, where nothing on the host can delete them: +238 full-size PNGs in 60 s during one Maestro session on an iPhone 17 Pro Max, ~2,900 that day, and 93 GB of attachments filling an iPhone 15. Set systemAttachmentLifetime/userAttachmentLifetime = keepNever on the scheme's TestAction, which build-for-testing writes into the .xctestrun (checked: a simulator build-for-testing now emits keepNever for both), and in the checked-in config xctestrun templates.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
maestro-driver-iosscheme'sTestActionnow setssystemAttachmentLifetime = "keepNever"anduserAttachmentLifetime = "keepNever".maestro-driver-ios-config.xctestruntemplates (driver-iphoneos,driver-iPhoneSimulator) are set to match.build-maestro-ios-runner.shregenerates them from the build anyway.Why
The runner's single test never succeeds, because Maestro stops it at session end. So the default
deleteOnSuccesskept every screenshot XCTest took while Maestro polled the screen.On real iPhones those screenshots stay in testmanagerd's data container. Nothing on the host can delete them:
remove-fileis refused at the container rootMeasured on the TestingBot fleet (2026-10-26):
Verified
All three build paths run
xcodebuild build-for-testing -scheme maestro-driver-ios, so they all pick this up: the physical-driver workflow,build-maestro-ios-runner.sh, andDriverBuilder.A local simulator
build-for-testing(Xcode 26.4) now emits:Both templates pass
plutil -lint.After merge
workflow_dispatch).maestro-iphoneos-driver-build-ios18.zipand-ios26.zip.Until then, testingbot/vm#178 patches the copied
.xctestrunat install time.