Skip to content

Deep-link into the FlatList maintainVisibleContentPosition example in E2E flows - #59639

Open
cipolleschi wants to merge 1 commit into
cipolleschi/e2e-ios-4-release-only-mvcpfrom
cipolleschi/e2e-ios-5-deep-link-flatlist
Open

cipolleschi wants to merge 1 commit into
cipolleschi/e2e-ios-4-release-only-mvcpfrom
cipolleschi/e2e-ios-5-deep-link-flatlist

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 ← this PR
  6. Overlap simulator boot with the rest of the iOS E2E setup #59640
  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 5 of the iOS E2E cost stack.

The 24 FlatList maintainVisibleContentPosition flows reached their example by scrolling the RNTester component list at speed: 40 twice: to "FlatList", then to "maintainVisibleContentPosition". Every other list flow already opens its example with an rntester:// deep link (#58481, #58794), which doesn't depend on where the example sits in the list. Over Oct 27–29, ~17% of the failed attempts of these flows on iOS (25 of 150) were navigation failures: No visible element found: id: maintainVisibleContentPosition or id: FlatList.

This is a reliability change, not a speed change. Locally the deep-linked flows are ~6.5s slower each. helpers/confirm-open-link.yml does an optional tapOn: 'Open' that waits ~8.6s whenever no confirmation dialog appears (the existing deep-linked flows pay the same cost). Making that helper cheaper would speed up every deep-linked flow; it's out of scope here.

Open rntester://example/FlatListExample/maintainVisibleContentPosition directly, then wait for the example's scroll-offset-display. The portrait orientation setup is unchanged.

I didn't merge the flows. After part 3 each flow only costs an app relaunch plus a deep link, and merging would let one failing scenario hide the ones after it and carry list state from one scenario into the next.

Note: flatlist-maintainvisible.yml contains a second YAML document (a second header plus commands) that Maestro most likely never runs. I converted it too, for consistency.

Changelog:

[INTERNAL] [CHANGED] - Deep-link into the FlatList maintainVisibleContentPosition example in E2E flows

Test Plan:

  • Ran all 24 converted flows locally with Maestro 2.6.1 against RNTesterApp-NewArch-Release from CI run 40888922130 (iPhone 17 Pro / iOS 26.5, Apple Silicon), in a single Maestro run: 24/24 passed in 9m43s (20–29s per flow). The same 24 flows from main (scrolling the list) passed in 7m06s (12–16s per flow) on the same simulator. Per-command timings show the difference is the optional Open tap in confirm-open-link.yml (~8.6s, status WARNED because no dialog appeared).
  • rntester://example/FlatListExample/maintainVisibleContentPosition resolves through RNTester's existing deep link handling (FlatListExample → FlatListExampleIndex, example name: 'maintainVisibleContentPosition') on both iOS and Android.

… E2E flows

The 24 FlatList maintainVisibleContentPosition flows reached their
example by scrolling the RNTester component list at `speed: 40` twice
(to "FlatList", then to "maintainVisibleContentPosition"). Every other
list flow already opens its example with an `rntester://` deep link,
which is faster and doesn't depend on where the example sits in the list.

Open `rntester://example/FlatListExample/maintainVisibleContentPosition`
directly and wait for the example's scroll offset display before
starting. The portrait orientation setup is unchanged.

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