Repository navigation
ci: drop custom simulator boot-wait loop for iOS e2e - #7375
Merged
Merged
Conversation
|
🧪 Flashlight Performance Report (AWS Device Farm) 🔀 Commit: 92d8d21
|
i1skn
approved these changes
Apr 21, 2026
Contributor
|
The built in wait used to fail sometimes and the tests would fail because the simulator didn’t boot yet. We can try removing and monitor, might not be needed anymore on newer xcode versions. |
janicduplessis
approved these changes
Apr 21, 2026
Contributor
Author
Good context @janicduplessis TY. Funny enough this exactly happended on the shard 1 run on this PR. I updated the change to up the action to v5 which has logic to fix this exact issue. See updated PR desc. |
olerass
added a commit
that referenced
this pull request
Apr 27, 2026
Apple's App Store Connect stops accepting iOS uploads built with the iOS 18.5 SDK after Apr 28, 2026. After that date, no iOS release including hotfixes can ship until Rainbow's toolchain moves. This change lifts the iOS toolchain to Xcode 26.3 / iOS 26 SDK, which is the minimum Apple now requires. The actual diff is small: bump `.xcode-version` to `26.3`, swap GH Actions runners from `macos-15-xlarge` to `macos-26-xlarge`, and update the E2E simulator pin to `iPhone 17` + `iOS 26.4`. The pieces that make all of this work cleanly landed on develop independently in the preceding week: * `.xcode-version` source-of-truth wiring (#7372). * Rock cache fingerprint includes `.xcode-version` so Xcode bumps invalidate stale-toolchain artifacts (#7376). * Simulator-action switched to its native `wait_for_boot` and bumped to v5 with retries plus timeout (#7375). * iOS prebuild-hook `stderr` surfaces in CI logs on failure (#7373). We chose Xcode 26.3 over 26.4 deliberately. 26.3 ships Apple Clang 17 and Swift 6.2.4, which avoids the fmt 11.0.2 consteval bug (Clang 21) and the Firebase async-let miscompile (Swift 6.3) that Xcode 26.4 introduces. Same iOS 26 SDK, no Podfile workarounds. Trade-off is "not on latest Xcode," which is the right call for a tight-window emergency fix; we can move to 26.4+ in a calmer cycle once RN 0.81+ lands and stabilizes. Verification has been running on a parallel Bitrise lane for several days. The FEPLAT-91 temp `workflow_testflight_xcode26` workflow (stack pinned to `osx-xcode-26.3.x`) produces iOS 26 SDK TestFlight builds against this branch and feeds Phase 3 QA. Ibrahim has signed off on the FEPLAT-89 QA checklist. Closes FEPLAT-86.
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.
The
Ensure Simulator is fully bootedstep inios-e2e.ymlpollsxcrun simctl list | grep "Booted"with a 120-second timeout. Thesimulator-actionthat creates the simulator already supports await_for_boot: trueinput that uses Apple'ssimctl bootstatusinternally, which is the supported mechanism for detecting simulator readiness. The custom loop was added in #6713 (Aug 2025) during the GH Actions migration with no documented rationale; presumably the action's native wait was simply overlooked at the time.We noticed the grep-based detection is fragile while working on the iOS 26 SDK migration. An iOS 26.4 simulator booted in ~36 seconds, yet our custom loop timed out at 120s because the
grep 'Booted'pattern didn't match reliably during the boot transition. Swapping to the action's native wait fixed it cleanly in that context.This change backports the combined swap to develop's current iPhone 16 / iOS 18.5 setup. Behavior should be equivalent on green runs and more robust on slow boots.
@janicduplessis pointed out on this PR that the built-in wait has historically been flaky:
simctl bootstatussometimes returns while the simulator isn't actually ready, or hangs outright. We actually observed that hang pattern on one shard here. To combat this the change also bumps the simulator-action from v4 to v5, which addresses this exact class of flake. v5 shipsboot_timeout_seconds: 360andboot_retries: 2as defaults (see #563), so a hungbootstatuscall now bails after 6 minutes and retries up to twice before failing the step. No explicit config needed on our side.Ref FEPLAT-81.