Split the iOS E2E template-app workflow and harden the Maestro runner - #58484
Open
jwajgelt wants to merge 6 commits into
Open
Split the iOS E2E template-app workflow and harden the Maestro runner#58484jwajgelt wants to merge 6 commits into
jwajgelt wants to merge 6 commits into
Conversation
Build the app in a job of its own and hand it to the test job as an artifact, as the RNTester E2E already does.
Address the simulator by explicit UDID rather than the 'booted' alias, skip helper fragments that have no launchApp of their own, and await the video recorder's exit so it is reaped rather than left as a zombie per flow and the movie is fully written before the next flow starts. Give the two ScrollView maintainVisibleContentPosition flows a 90s scrollUntilVisible timeout: the example sits far down the list and each scroll step serialises the whole accessibility tree.
The repository Jest setup fails any test that calls console.error, and the runner logs one when a flow exhausts its retries — exactly the path this test exercises. Silence it for this test only and assert the message, so the guard still covers the rest of the suite.
cipolleschi
reviewed
Sep 11, 2026
cipolleschi
left a comment
Contributor
There was a problem hiding this comment.
Hi thanks for working on this, but can I ask what's the rationale here?
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.
Summary:
This PR separates the template app's iOS build from its Maestro test run and updates the shared iOS runner:
buildjob. The project initialization, CocoaPods setup, andxcodebuildcommands come from the previous combinedtestjob;Prepare artifactsis renamed toBuild the app.testjob that depends onbuildand runs the Debug and Release apps. It repeats the checkout, Node, and Yarn setup from the old job and moves the existing Maestro execution and status reporting into this job. Both jobs keepmacos-26-large.Prepare project for Metrofor Debug tests. Its package lookup, template-branch selection, andinit-project-e2e.jsinvocation are copied from the existingPrepare artifactsstep. The new job has a fresh filesystem, so it needs to recreate the JavaScript project for Metro; this step only repeats project initialization, leaving CocoaPods and the native build in the build job.app-pathto point to the downloadedRNTestProject.app, replacing the path to the previous job's local Xcode build output.booted, so both target the same simulator as Maestro.helpers/when collecting flows, since these files are fragments included by other tests throughrunFlow.Changelog:
[INTERNAL] [CHANGED] - Separate iOS template-app E2E builds from test execution and improve Maestro runner reliability.
Test Plan:
macos-26instead of the checked-inmacos-26-large: RNTester passed 38/38 flows in both Debug and Release, and the template app passed in both configurations. These runs were not repeated during this review.yarn jest .github/workflow-scripts/__tests__/maestro-ios-test.js.node --check .github/workflow-scripts/maestro-ios.js— passed.git diff --check— passed.