Skip to content

fix(ci): survive cold CoreSimulator on fresh CI runners - #26

Merged
johnnyhuy merged 2 commits into
mainfrom
fix/ci-simulator-cold-start
Oct 3, 2026
Merged

johnnyhuy merged 2 commits into
mainfrom
fix/ci-simulator-cold-start

Conversation

@johnnyhuy

@johnnyhuy johnnyhuy commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Cold-runner fix — the first simctl call on a fresh GitHub runner spins up CoreSimulatorService slowly enough to trip simctl_pick_udid.py's 15s timeout, which hard-failed both new CI jobs from feat: mobilewright e2e suite, coverage automation, and CI gating #25 before their fallbacks could run (and ios:build:dev fails the same way inside ios:e2e). Now: warm the daemon before any simulator query, give the pick script 60s, and let an empty/failed pick fall through to the any-iPhone fallback instead of exiting.
  • e2e timing fixes — app-launch poll in tests/helpers.ts widened from 20s to 60s (first launch after fresh install exceeded the budget under load), and the per-test timeout raised from 60s to 120s (resetAndLaunch counts against the test and CI runners are 2-3x slower — the suite hit the 60s wall mid-assertions).

Consequences

None — task behaviour is unchanged on warm machines.

Testing

  • Cold-start simulation locally (CoreSimulator killed): warmup + 60s pick resolves a UDID
  • Forced-empty pick (bogus runtime) falls through to the any-iPhone fallback
  • mise run ios:e2e 4/4 passed in 58s after the fixes
  • PR CI run 37082758758: iOS UI tests + coverage PASSED (19m) on the cold runner; e2e died only at the 60s test wall being fixed here

johnnyhuy and others added 2 commits October 3, 2026 10:35
The first simctl call on a cold GitHub runner takes long enough to
trip simctl_pick_udid.py's 15s timeout, which hard-failed both new CI
jobs before their fallbacks could run (ios:build:dev fails the same way
inside ios:e2e). Warm the CoreSimulator daemon before any simulator
query, give the pick script 60s, and let an empty/failed pick fall
through to the any-iPhone fallback instead of exiting.

Also widens the e2e app-launch poll from 20s to 60s: first launch after
a fresh install can exceed the old budget under load (observed flake).

Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
resetAndLaunch (uninstall -> install -> launch) counts against the
per-test budget, and CI runners are 2-3x slower than local: the suite
died at the 60s wall mid-assertions. 120s keeps local runs unaffected
and gives CI comfortable headroom.

Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
@johnnyhuy
johnnyhuy merged commit 068497e into main Oct 3, 2026
10 checks passed
@johnnyhuy
johnnyhuy deleted the fix/ci-simulator-cold-start branch October 3, 2026 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant