Skip to content

Overlap simulator boot with the rest of the iOS E2E setup - #59640

Open
cipolleschi wants to merge 1 commit into
cipolleschi/e2e-ios-5-deep-link-flatlistfrom
cipolleschi/e2e-ios-6-overlap-setup
Open

cipolleschi wants to merge 1 commit into
cipolleschi/e2e-ios-5-deep-link-flatlistfrom
cipolleschi/e2e-ios-6-overlap-setup

Conversation

@cipolleschi

@cipolleschi cipolleschi commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Stack (iOS RNTester E2E cost, review bottom-up):

  1. Retry failing iOS E2E flows once and stop rerunning real failures #59635
  2. Cancel superseded Test All runs on pull requests #59636
  3. Run iOS E2E flows in a single Maestro invocation #59637
  4. Run the FlatList maintainVisibleContentPosition E2E flows in Release only on iOS #59638
  5. Deep-link into the FlatList maintainVisibleContentPosition example in E2E flows #59639
  6. Overlap simulator boot with the rest of the iOS E2E setup #59640 ← this PR
  7. Fail iOS RNTester E2E straight away when the app artifact is missing #59641
  8. Run iOS RNTester E2E tests on Apple Silicon runners #59642

Summary:

Part 6 of the iOS E2E cost stack.

The iOS E2E action ran all of its setup one step after another before touching the simulator, and xcrun simctl install then waited ~2 minutes for the simulator to finish booting.

  • Start booting the simulator as the first step (new boot subcommand of maestro-ios.js, which picks the simulator the same way as the test step). It then boots while Maestro, Java, the node modules and Metro are set up.
  • Drop the brew install idb-companion step (~16s). Maestro removed its IDB dependency on iOS in 1.x ("Removed IDB on iOS" in its changelog), and nothing in the 2.6.1 sources references it.
  • Drop the second Node.js setup inside the action. Both callers (RNTester and the template app) already set up Node.js in the same job.

Changelog:

[INTERNAL] [CHANGED] - Overlap simulator boot with the rest of the iOS E2E setup

Test Plan:

  • node .github/workflow-scripts/maestro-ios.js boot <model> <os> locally: picks the configured simulator, boots it and returns. It accepts an already-booted simulator and auto-selects when given empty arguments, like the template app does.
  • yarn jest .github/workflow-scripts/__tests__/maestro-ios-test.js passes.
  • CI: the "Run tests" step should no longer spend ~2 minutes in Installing app.

The iOS E2E action did all of its setup one step after another before
touching the simulator. `xcrun simctl install` then waited ~2 minutes for
the simulator to finish booting.

- Start booting the simulator as the first step (new `boot` subcommand
  of maestro-ios.js), so it boots while Maestro, Java, the node modules
  and Metro are being set up.
- Drop the `idb-companion` install. Maestro removed its IDB dependency on
  iOS in 1.x (see "Removed IDB on iOS" in its changelog) and 2.6.1 doesn't
  reference it.
- Drop the second Node.js setup: both callers (RNTester and the template
  app) already set up Node.js before using the action.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant