fix(platform-ios): gracefully stop XCTest agent#139
Merged
V3RON merged 1 commit intoJul 20, 2026
Merged
Conversation
|
@mrousavy is attempting to deploy a commit to the Callstack Team on Vercel. A member of the Team first needs to authorize it. |
V3RON
force-pushed
the
codex/graceful-ios-harness-agent-shutdown
branch
from
July 20, 2026 09:18
86f3b63 to
04befee
Compare
V3RON
marked this pull request as ready for review
July 20, 2026 09:18
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 is this?
Harness now ends the iOS XCTest permission agent gracefully when a test run finishes, instead of immediately signalling
xcodebuildto stop. Previously, normal teardown sentSIGTERMto the long-runningxcodebuild test-without-buildingsession while its UI test was still active, interrupting an otherwise-passing agent session and leaving stray simulator andxcodebuildprocesses behind.How does it work?
The on-device XCTest agent gains a
/shutdownendpoint. When it receives the request it flips an internal flag, its session loop exits on the next tick, and the UI test completes on its own soxcodebuildfinishes and tears down its own child processes. During teardown the platform controller asks the agent to shut down first and waits, bounded by a timeout, for the process to exit. If the request fails or the agent does not stop in time, Harness falls back to the existingSIGTERM/SIGKILLtermination. The shutdown timeout is raised to accommodate the slower-but-clean exit.Why is this useful?
Test runs finish without cutting off a healthy agent session, and fewer orphaned simulator and
xcodebuildprocesses survive teardown — reducing flakiness and resource leaks across consecutive iOS runs.