Repository navigation
Retry failing iOS E2E flows once and stop rerunning real failures - #59635
Open
cipolleschi wants to merge 1 commit into
Open
cipolleschi wants to merge 1 commit into
cipolleschi wants to merge 1 commit into
Conversation
Each RNTester iOS flow had 5 attempts inside the job, and the whole job (both flavors, every flow, all setup) was retried up to 3 times on top, so a flow could run 15 times. The runner also stopped at the first flow that exhausted its attempts, hiding later failures. - Give each flow 2 attempts, rebooting the simulator before the retry. - Keep running the remaining flows after a failure and report every failed flow at the end, with a step summary. - Persist per-flow results between CI attempts (same format as the Android runner) so retries skip flows that already passed. - Only retry the workflow when a job stopped before running every flow. A flow that failed both attempts fails the run immediately. - Upload the recording, JUnit report and Maestro debug output for failed attempts only.
This was referenced Oct 29, 2026
This branch has not been deployed
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.
Stack (iOS RNTester E2E cost, review bottom-up):
Summary:
Part 1 of a stack that cuts the cost of the iOS RNTester E2E jobs (2 × macos-26-large, ~80 min each per run). Over Oct 27–29, 48% of Test All runs needed a workflow-level retry of these jobs and 44% of their macOS minutes went to those retries. The biggest offender was
sectionlist-viewability: it failed ~88% of attempts for over a day, and the retries let some runs pass anyway.Each flow had 5 attempts inside the job, and the whole job (both flavors, every flow, all setup) was retried up to 3 times on top. That's up to 15 runs of a broken flow. The runner also stopped at the first flow that used up its attempts, so later failures stayed hidden.
This PR:
retryableoutput). A flow that failed both attempts fails the run immediately.The template app E2E shares the action and script. It gets the new in-job behavior (2 attempts, continue past failures) but keeps its own workflow retries unchanged.
Changelog:
[INTERNAL] [CHANGED] - Retry failing iOS E2E flows once and stop rerunning real failures
Test Plan:
yarn jest .github/workflow-scripts/__tests__/maestro-ios-test.js: 9 tests pass, covering continuing past failures, one retry with a simulator reboot, and skipping flows that passed in an earlier CI attempt.RNTesterApp-NewArch-Releasefrom run 40888922130, on an iPhone 17 Pro / iOS 26.5 simulator, withappearance,button,image-wide-gamutand a flow that always fails. The three passing flows ran once. The failing flow ran twice with a reboot in between, then the script exited 1. The state file recordedpassed/failedand attempt counts, and/tmp/MaestroLogsonly contained the failing flow's recording, report and debug output.actionlintreports no new issues for the changed workflows.