mirror of
https://github.com/react/react-native.git
synced 2026-09-29 16:58:04 +08:00
Summary: - Adds retry jobs (up to 2 retries) for all 4 E2E test jobs on PRs to handle flakiness - Original E2E jobs use `continue-on-error` on PRs so failures don't block the workflow; on `main`, behavior is unchanged and the existing `rerun-failed-jobs` mechanism continues to work - Each retry runs on a fresh runner (addressing environment-level flakes) and is triggered via step-level outcome captured as a job output - Added `overwrite: true` to artifact uploads in maestro composite actions so retry jobs don't conflict on artifact names ### How it works - **On PRs:** E2E job fails → `retry_1` triggers → if that fails → `retry_2` triggers. All have `continue-on-error` so the workflow stays green. - **On `main`:** `continue-on-error` is `false`, retry jobs are skipped (PR-only), and `rerun-failed-jobs` handles retries as before. ### Known limitation Since these are matrix jobs (Debug/Release), the job output uses the last-to-complete matrix combination's value. If only one flavor fails and the passing one finishes last, the retry may not trigger. In the common flakiness pattern (environment-level issues), both flavors tend to be affected, so this works well in practice. ## Changelog: [Internal] - Add E2E test retry jobs for PRs Pull Request resolved: https://github.com/facebook/react-native/pull/56581 Test Plan: - CI will validate the workflow syntax - On a PR where E2E tests pass: retry jobs should be skipped - On a PR where E2E tests fail due to flakiness: retry jobs should trigger and (ideally) pass on a fresh runner - On pushes to `main`: existing `rerun-failed-jobs` behavior is preserved (retry jobs are skipped) Reviewed By: cortinico Differential Revision: D102327900 Pulled By: cipolleschi fbshipit-source-id: e257e012357fdba442c302085ceed0667355272e