Repository navigation
feat(limrun): replace iOS AX automation with the shared XCTest runner - #4224
Conversation
There was a problem hiding this comment.
All reported issues were addressed across 116 files
Reply with feedback, questions, or to request a fix.
View guided diff | Re-trigger cubic
|
At 0ae3dc2, one problem needs live proof before merge. All 17 checks pass, but no Limrun lane runs in CI, so CI does not exercise the forwarded-runner route. No conflicts are known. The PR body says a reused Limrun simulator hit XCTest snapshot timeouts and only a fresh instance passed. Reuse is a supported route: attached instances ( This PR is one commit with 116 files and about 10,370 changed lines, against the 2,500-line limit in Not blocking, and fine to take or leave: (1) Of the open inline threads, these still apply: download test accepts any failure, download test may skip cleanup, raw timeout from unreachable instance, download errors lack typed reason, app log history lost on reconnect, abort listener never removed and shutdown skipped on throw, plus 11 lower-priority threads. The console launch owner, install-leaves-app-stopped, capabilities.md and shared runner products threads no longer apply. Before merge, please post the reused-instance run above. |
0ae3dc2 to
442a6ce
Compare
|
Addressed the review in I reproduced the reuse case at Before/after logs, prepare/launch diagnostics, runner streams, scripts and validation receipts are published. The optional cleanup is included: obsolete producer removal, typed deployment/forwarding failures, one kernel cancellation helper, and explicit scope for the Revyl/iPhone test edits. The inline findings have fixes or documented dispositions. An independent review also caught preparation cancellation races, now covered by regression tests. |
|
At 442a6ce, most of the earlier review is addressed: the typed runner reasons, the snapshot classifier, the shared await-with-signal, preparation waiter ownership and the download and file-staging cleanups are in, and the reuse logs from your fork cover the route CI cannot run. All 17 checks are green and there are no conflicts. One defect remains. The 409 retry in limrun-ios-runner.ts:158 never surfaces Not blocking, take or leave:
Open threads: the runner archive overlays question still needs a release-runner build to confirm, and the commands.md appstate sentence still stands. The other threads are fixed or no longer apply at this head and can be resolved. |
442a6ce to
7e18ad0
Compare
|
Addressed this follow-up in The shared launcher now receives the start deadline. Limrun gives the 409 retry loop a shorter deadline through The sparse-response tests go through forwarded HTTP and For the overlay question, I ran the release workflow's build/package commands with Xcode 26.4 and 27.1. The 26.4 archive contains I left generic waiter extraction out after independent review: artifact-start admission, recording waiters, and runner-product preparation differ in retry retention and whether cleanup must drain before replacement. Sharing those policies would be a separate lifecycle change; they already share
Regression comparison, exact-commit validation receipt, release build logs/checksums, independent review, and live results. No fresh physical-phone run is claimed, and #4225 is unchanged in this round. |
|
At 7e18ad0, the code looks good. The retry-deadline fix from the earlier review is in, so a slot held past the retry budget now surfaces Not blocking, take or leave: the custom-hint test at limrun-ios-runner-errors.test.ts:59 calls the helper with an invented hint, so the shipped hint in The two open inline threads can be resolved: the packaging overlay one is benign (your Xcode 26.4 release build bundled all four overlays, and Xcode 27.1 ships no Testing.framework), and |
…kend wording Limrun iOS runs the shared XCTest runner since #4224, so: - remove resolveAppAlias from the Limrun iOS adapter (no callers), its SDK implementation, fixtures, test, and the facade export it alone used; - wait on Limrun operations through the kernel awaitWithSignal and drop the awaitLimrunOperation wrapper; - fix help, docs and comments that still describe the old element-tree backend: alert language matching, settings --app resolution, the launch-console refusal, and the alert/fill/snapshot contract comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…kend wording (#4243) * refactor(limrun): drop the unused iOS app-alias seam and stale AX-backend wording Limrun iOS runs the shared XCTest runner since #4224, so: - remove resolveAppAlias from the Limrun iOS adapter (no callers), its SDK implementation, fixtures, test, and the facade export it alone used; - wait on Limrun operations through the kernel awaitWithSignal and drop the awaitLimrunOperation wrapper; - fix help, docs and comments that still describe the old element-tree backend: alert language matching, settings --app resolution, the launch-console refusal, and the alert/fill/snapshot contract comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(provider): match the reworded launch-console refusal Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(limrun): pin iOS settings --app display-name resolution through the remote app list Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Replace Limrun iOS AX automation with the native agent-device XCTest runner through Limrun HTTP forwarding. Snapshots, interactions and Apple operations use shared execution paths; commands such as
agent-device snapshot -istay unchanged.Following #4213, this 140-file replacement has two commits: shared prerequisites, then the provider switch and AX deletion. Keeping the switch and deletion together avoids a temporary mixed backend. Scope also includes the Revyl screenshot cancellation test and physical-iPhone replay adjustment. Local app sync follows in #4225.
Validation
Tested
7e18ad0a6fcdb4b677df5b94602afddaaf8fedcb:pnpm check:affected --run --head HEADpasses withexactCommit: true, including 17,297 unit tests, provider integration and compatibility checks. Public evidence includes the regression comparison against442a6ce, independent review, and release-runner builds with Xcode 26.4/27.1. The prerequisite commit independently builds and typechecks; earlier full-gate evidence remains attributed to its original SHA.The packaged 26.4 runner, including verified Testing overlays, passed three connections to one Limrun simulator: 21 snapshot nodes and live foreground state each time. Persistent slot conflicts and sparse captures retain typed recovery errors. Intermittent XCTest capture stalls remain possible; their underlying cause is not claimed fixed. GitHub-owned device/coverage lanes remain CI obligations. No fresh physical-phone run is claimed.
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.