Skip to content

Stabilize RNTester Maestro flows against app cold-start race#57343

Open
Abbondanzo wants to merge 1 commit into
react:mainfrom
Abbondanzo:export-D109742688
Open

Stabilize RNTester Maestro flows against app cold-start race#57343
Abbondanzo wants to merge 1 commit into
react:mainfrom
Abbondanzo:export-D109742688

Conversation

@Abbondanzo

@Abbondanzo Abbondanzo commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary:
The iOS RNTester Maestro suite is flaky because several flows assert the landing screen immediately after launchApp, with no wait. On a CI simulator the JS bundle hasn't rendered yet when the assertion fires, so flows fail with Assertion is false: "Components" is visible (e.g. text, modal) or fail downstream after entering through the shared launch helper (e.g. pressable). It is a race, not a deterministic failure — flatlist/button use the same pattern and pass on faster runs.

Replace the bare landing-screen assertVisible with extendedWaitUntil (30s) so the bundle has time to render:

  • helpers/launch-app-and-search.yml (Components) — the shared entry path for text, pressable, image, and the new image smoke-test flows.
  • modal.yml, flatlist.yml, button.yml (Components).
  • legacy-native-module.yml (APIs).

extendedWaitUntil returns as soon as the element appears, so this adds no time on the happy path — only headroom on cold start.

This is the actual fix for the red iOS E2E; the earlier spawnSync ETIMEDOUT was the suite failing + retrying + occasionally overrunning the 10-minute per-attempt cap, not a simulator/driver-startup problem. No harness/setup changes.

Changelog: [Internal]

Differential Revision: D109742688

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jun 25, 2026
@meta-codesync

meta-codesync Bot commented Jun 25, 2026

Copy link
Copy Markdown

@Abbondanzo has exported this pull request. If you are a Meta employee, you can view the originating Diff in D109742688.

Summary:
The iOS RNTester Maestro suite is flaky because several flows assert the landing screen immediately after `launchApp`, with no wait. On a CI simulator the JS bundle hasn't rendered yet when the assertion fires, so flows fail with `Assertion is false: "Components" is visible` (e.g. `text`, `modal`) or fail downstream after entering through the shared launch helper (e.g. `pressable`). It is a race, not a deterministic failure — `flatlist`/`button` use the same pattern and pass on faster runs.

Replace the bare landing-screen `assertVisible` with `extendedWaitUntil` (30s) so the bundle has time to render:
- `helpers/launch-app-and-search.yml` (`Components`) — the shared entry path for `text`, `pressable`, `image`, and the new image smoke-test flows.
- `modal.yml`, `flatlist.yml`, `button.yml` (`Components`).
- `legacy-native-module.yml` (`APIs`).

`extendedWaitUntil` returns as soon as the element appears, so this adds no time on the happy path — only headroom on cold start.

This is the actual fix for the red iOS E2E; the earlier `spawnSync ETIMEDOUT` was the suite failing + retrying + occasionally overrunning the 10-minute per-attempt cap, not a simulator/driver-startup problem. No harness/setup changes.

Changelog: [Internal]

Differential Revision: D109742688
@meta-codesync meta-codesync Bot changed the title Harden iOS Maestro E2E harness against driver-startup hangs Stabilize RNTester Maestro flows against app cold-start race Jun 26, 2026
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. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant