Skip to content

Commit 4665f25

Browse files
authored
Run the FlatList maintainVisibleContentPosition E2E flows in Release only on iOS
**Stack** (iOS RNTester E2E cost, review bottom-up): 1. #59635 2. #59636 3. #59637 4. #59638 ← this PR 5. #59640 6. #59641 7. #59642 ## Summary: Part 4 of the iOS E2E cost stack. The 24 FlatList `maintainVisibleContentPosition` flows are half of the RNTester Maestro suite, ~37 minutes of each iOS job. Android already runs them against the release build only (#58140). They test scroll behavior that doesn't depend on the build flavor. Over Oct 27–29, ~88% of their failed attempts on iOS were in Debug (133 vs 17). Rename their `android-release-only` tag to `release-only` and exclude it from the Debug job on both platforms. Android behavior is unchanged. ## Changelog: [INTERNAL] [CHANGED] - Run the FlatList maintainVisibleContentPosition E2E flows in Release only on iOS ## Test Plan: - `yarn jest .github/workflow-scripts/__tests__/maestro-android-test.js` passes. - `actionlint` reports no new issues. - CI: the iOS Debug job should skip the 24 `release-only` flows; Release and Android are unchanged. Differential Revision: D128581612 Pull Request resolved: #59638
1 parent 8ca22ca commit 4665f25

27 files changed

Lines changed: 34 additions & 36 deletions

‎.github/workflow-scripts/__tests__/maestro-android-test.js‎

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,16 @@ describe('Maestro Android runner', () => {
4747
});
4848

4949
it('excludes flows with matching tags', () => {
50-
const releaseOnlyFlow = path.join(
51-
temporaryDirectory,
52-
'android-release-only.yml',
53-
);
50+
const releaseOnlyFlow = path.join(temporaryDirectory, 'release-only.yml');
5451
const regularFlow = path.join(temporaryDirectory, 'regular.yml');
5552
fs.writeFileSync(
5653
releaseOnlyFlow,
57-
'appId: x\ntags:\n - android-release-only\n---\n- launchApp\n',
54+
'appId: x\ntags:\n - release-only\n---\n- launchApp\n',
5855
);
5956
fs.writeFileSync(regularFlow, 'appId: x\n---\n- launchApp\n');
6057

6158
expect(
62-
filterFlowsByTags(
63-
[releaseOnlyFlow, regularFlow],
64-
['android-release-only'],
65-
),
59+
filterFlowsByTags([releaseOnlyFlow, regularFlow], ['release-only']),
6660
).toEqual([regularFlow]);
6761
});
6862

‎.github/workflows/e2e-android-rntester.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
# These timing-sensitive flows remain covered by the release APK.
7575
# Running the debug ARM64 APK through native translation can delay
7676
# React commits long enough for Maestro to miss taps and assertions.
77-
exclude-tags: ${{ matrix.flavor == 'debug' && 'android-release-only' || '' }}
77+
exclude-tags: ${{ matrix.flavor == 'debug' && 'release-only' || '' }}
7878
- name: Store per-flow test state
7979
if: always()
8080
uses: ./.github/actions/upload-artifact

‎.github/workflows/e2e-ios-rntester.yml‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,11 @@ jobs:
7777
device-model: iPhone-17-Pro
7878
device-os: iOS-26-2
7979
test-state-path: /tmp/maestro-ios-state/results.json
80-
exclude-tags: android-only
80+
# The `release-only` flows (FlatList maintainVisibleContentPosition)
81+
# are half of the suite and test scroll behavior that doesn't depend
82+
# on the build flavor. Nearly 90% of their failed attempts were in
83+
# Debug, so like on Android they only run against Release.
84+
exclude-tags: ${{ matrix.flavor == 'Debug' && 'android-only,release-only' || 'android-only' }}
8185
- name: Store per-flow test state
8286
if: always()
8387
uses: ./.github/actions/upload-artifact

‎packages/rn-tester/.maestro/flatlist-append-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Appending items should NOT affect scroll offset (delta ~0)
33
appId: ${APP_ID}
44
tags:
5-
- android-release-only
5+
- release-only
66
---
77
- launchApp
88
# Change to portrait

‎packages/rn-tester/.maestro/flatlist-complex-mutations-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Tests prepend + append + delete in sequence
33
appId: ${APP_ID}
44
tags:
5-
- android-release-only
5+
- release-only
66
---
77
- launchApp
88
- setOrientation: portrait

‎packages/rn-tester/.maestro/flatlist-delete-anchor-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# When the anchor item (first visible) is deleted, MVCP should select a new anchor
33
appId: ${APP_ID}
44
tags:
5-
- android-release-only
5+
- release-only
66
---
77
- launchApp
88
- setOrientation: portrait

‎packages/rn-tester/.maestro/flatlist-delete-middle-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# When items are deleted from the middle, MVCP should adjust scroll offset
33
appId: ${APP_ID}
44
tags:
5-
- android-release-only
5+
- release-only
66
---
77
- launchApp
88
- setOrientation: portrait

‎packages/rn-tester/.maestro/flatlist-empty-list-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# correction.
55
appId: ${APP_ID}
66
tags:
7-
- android-release-only
7+
- release-only
88
---
99
- launchApp
1010
# Change to portrait

‎packages/rn-tester/.maestro/flatlist-first-prepend-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Single prepend with fixed-height items: delta should be ~44px (40px height + 4px margin)
33
appId: ${APP_ID}
44
tags:
5-
- android-release-only
5+
- release-only
66
---
77
- launchApp
88
# Change to portrait

‎packages/rn-tester/.maestro/flatlist-horizontal-add50-reset-maintainvisible.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# reset returns offset to 0.
44
appId: ${APP_ID}
55
tags:
6-
- android-release-only
6+
- release-only
77
---
88
- launchApp
99
- setOrientation: portrait

0 commit comments

Comments
 (0)