From 1c855e0b171e4bdb358eb83d60be25aefbd67b3c Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 10 Sep 2026 03:34:57 -0700 Subject: [PATCH 1/4] Add deep-link Maestro flows for RNTester basics Summary: Add Maestro coverage for portable RNTester interaction scenarios using direct example deep links. The flows cover alerts, animations, appearance, filters, text input, and touchables without screenshot baselines. Changelog: [Internal] Differential Revision: D119484759 --- packages/rn-tester/.maestro/alert.yml | 24 ++++++++++ .../.maestro/animated-fade-in-view.yml | 21 +++++++++ packages/rn-tester/.maestro/appearance.yml | 14 ++++++ .../.maestro/filter-animated-blur.yml | 15 +++++++ .../.maestro/textinput-uncontrolled.yml | 19 ++++++++ packages/rn-tester/.maestro/touchable.yml | 44 +++++++++++++++++++ 6 files changed, 137 insertions(+) create mode 100644 packages/rn-tester/.maestro/alert.yml create mode 100644 packages/rn-tester/.maestro/animated-fade-in-view.yml create mode 100644 packages/rn-tester/.maestro/appearance.yml create mode 100644 packages/rn-tester/.maestro/filter-animated-blur.yml create mode 100644 packages/rn-tester/.maestro/textinput-uncontrolled.yml create mode 100644 packages/rn-tester/.maestro/touchable.yml diff --git a/packages/rn-tester/.maestro/alert.yml b/packages/rn-tester/.maestro/alert.yml new file mode 100644 index 000000000000..513029744ee8 --- /dev/null +++ b/packages/rn-tester/.maestro/alert.yml @@ -0,0 +1,24 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/AlertExample/default-button +- extendedWaitUntil: + visible: + id: 'alert-with-default-button' + timeout: 10000 +- tapOn: + id: 'alert-with-default-button' +- assertVisible: 'An external USB drive has been detected!' +- tapOn: 'OK' +- openLink: rntester://example/AlertExample/three-buttons +- extendedWaitUntil: + visible: + id: 'alert-with-three-buttons' + timeout: 10000 +- tapOn: + id: 'alert-with-three-buttons' +- assertVisible: 'Do you want to save your changes?' +- tapOn: 'Cancel' diff --git a/packages/rn-tester/.maestro/animated-fade-in-view.yml b/packages/rn-tester/.maestro/animated-fade-in-view.yml new file mode 100644 index 000000000000..e7b96d2e4794 --- /dev/null +++ b/packages/rn-tester/.maestro/animated-fade-in-view.yml @@ -0,0 +1,21 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/Animated/fadeInView +- extendedWaitUntil: + visible: + id: 'toggle-button' + timeout: 10000 +- assertVisible: + id: 'fade-in-view' +- tapOn: + id: 'toggle-button' +- assertNotVisible: + id: 'fade-in-view' +- tapOn: + id: 'toggle-button' +- assertVisible: + id: 'fade-in-view' diff --git a/packages/rn-tester/.maestro/appearance.yml b/packages/rn-tester/.maestro/appearance.yml new file mode 100644 index 000000000000..08c022a98951 --- /dev/null +++ b/packages/rn-tester/.maestro/appearance.yml @@ -0,0 +1,14 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- assertVisible: + id: 'components-tab' +- assertVisible: + id: 'apis-tab' +- openLink: rntester://example/AppearanceExample +- extendedWaitUntil: + visible: 'useColorScheme hook' + timeout: 10000 diff --git a/packages/rn-tester/.maestro/filter-animated-blur.yml b/packages/rn-tester/.maestro/filter-animated-blur.yml new file mode 100644 index 000000000000..b3e9368c652e --- /dev/null +++ b/packages/rn-tester/.maestro/filter-animated-blur.yml @@ -0,0 +1,15 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/Filter/animated-blur +- extendedWaitUntil: + visible: + id: 'animated-blur-button' + timeout: 10000 +- tapOn: + id: 'animated-blur-button' +- assertVisible: + id: 'animated-blur-view' diff --git a/packages/rn-tester/.maestro/textinput-uncontrolled.yml b/packages/rn-tester/.maestro/textinput-uncontrolled.yml new file mode 100644 index 000000000000..ff85bbe42833 --- /dev/null +++ b/packages/rn-tester/.maestro/textinput-uncontrolled.yml @@ -0,0 +1,19 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/TextInput/uncontrolledComponent +- extendedWaitUntil: + visible: + id: 'uncontrolled-textinput' + timeout: 10000 +- tapOn: + id: 'uncontrolled-textinput' +- eraseText +- inputText: 'New value' +- hideKeyboard +- assertVisible: + id: 'uncontrolled-textinput' + text: 'New value' diff --git a/packages/rn-tester/.maestro/touchable.yml b/packages/rn-tester/.maestro/touchable.yml new file mode 100644 index 000000000000..b027f447cdfc --- /dev/null +++ b/packages/rn-tester/.maestro/touchable.yml @@ -0,0 +1,44 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/TouchableExample/feedback-events +- extendedWaitUntil: + visible: + id: 'touchable_feedback_events_button' + timeout: 10000 +- tapOn: + id: 'touchable_feedback_events_button' +- assertVisible: + id: 'touchable_feedback_events_console' +- openLink: rntester://example/TouchableExample/highlight +- extendedWaitUntil: + visible: + id: 'touchable_highlight_text_button' + timeout: 10000 +- tapOn: + id: 'touchable_highlight_text_button' +- assertVisible: + id: 'touchable_highlight_console' + text: 'TouchableHighlight onPress' +- openLink: rntester://example/TouchableExample/hit-slop +- extendedWaitUntil: + visible: + id: 'touchable_hit_slop_button' + timeout: 10000 +- tapOn: + id: 'touchable_hit_slop_button' +- assertVisible: + id: 'touchable_hit_slop' +- openLink: rntester://example/TouchableExample/without-feedback +- extendedWaitUntil: + visible: + id: 'touchable_without_feedback_button' + timeout: 10000 +- tapOn: + id: 'touchable_without_feedback_button' +- assertVisible: + id: 'touchable_without_feedback_console' + text: 'TouchableWithoutFeedback onPress' From b37ac07f7c60e5368dacc1b1298f51581c510ced Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 10 Sep 2026 09:52:02 -0700 Subject: [PATCH 2/4] Add deep-link Maestro flows for RNTester lists Summary: Add Maestro coverage for FlatList and SectionList viewability behavior using direct RNTester example deep links. Platform-specific assertions remain conditional within the flows. Changelog: [Internal] Differential Revision: D119484760 --- .../.maestro/flatlist-viewability.yml | 48 ++++++++++++++ .../.maestro/sectionlist-viewability.yml | 62 +++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 packages/rn-tester/.maestro/flatlist-viewability.yml create mode 100644 packages/rn-tester/.maestro/sectionlist-viewability.yml diff --git a/packages/rn-tester/.maestro/flatlist-viewability.yml b/packages/rn-tester/.maestro/flatlist-viewability.yml new file mode 100644 index 000000000000..94c140d96db3 --- /dev/null +++ b/packages/rn-tester/.maestro/flatlist-viewability.yml @@ -0,0 +1,48 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/FlatListExample/onViewableItemsChanged-horizontal-noWaitForInteraction +- extendedWaitUntil: + visible: + id: 'flat_list' + timeout: 10000 +- assertVisible: + id: 'output' + text: '.*Pizza, Burger.*' +- openLink: rntester://example/FlatListExample/onViewableItemsChanged-horizontal-waitForInteraction +- extendedWaitUntil: + visible: + id: 'flat_list' + timeout: 10000 +- repeat: + times: 3 + commands: + - swipe: + start: 90%, 50% + end: 10%, 50% + speed: fast +- extendedWaitUntil: + visible: + id: 'output' + text: '.*Cheesecake.*' + timeout: 10000 +- openLink: rntester://example/FlatListExample/onViewableItemsChanged-waitForInteraction +- extendedWaitUntil: + visible: + id: 'flat_list' + timeout: 10000 +- repeat: + times: 2 + commands: + - swipe: + start: 50%, 80% + end: 50%, 20% + speed: fast +- extendedWaitUntil: + visible: + id: 'output' + text: '.*Cheesecake, Brownie.*' + timeout: 10000 diff --git a/packages/rn-tester/.maestro/sectionlist-viewability.yml b/packages/rn-tester/.maestro/sectionlist-viewability.yml new file mode 100644 index 000000000000..d671825b9621 --- /dev/null +++ b/packages/rn-tester/.maestro/sectionlist-viewability.yml @@ -0,0 +1,62 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/SectionList/onEndReached +- extendedWaitUntil: + visible: + id: 'start_test' + timeout: 10000 +- tapOn: + id: 'start_test' +- assertVisible: + id: 'output' + text: 'onEndReached' +- openLink: rntester://example/SectionList/onViewableItemsChanged-horizontal-noWaitForInteraction +- extendedWaitUntil: + visible: + id: 'section_list' + timeout: 10000 +- assertVisible: + id: 'output' + text: '.*Pizza.*' +- openLink: rntester://example/SectionList/onViewableItemsChanged-horizontal-waitForInteraction +- extendedWaitUntil: + visible: + id: 'section_list' + timeout: 10000 +- repeat: + times: 3 + commands: + - swipe: + start: 90%, 50% + end: 10%, 50% + speed: fast +- extendedWaitUntil: + visible: + id: 'output' + text: '.*Cheesecake.*' + timeout: 10000 +- runFlow: + when: + platform: Android + commands: + - openLink: rntester://example/SectionList/onViewableItemsChanged-waitForInteraction + - extendedWaitUntil: + visible: + id: 'section_list' + timeout: 10000 + - repeat: + times: 2 + commands: + - swipe: + start: 50%, 80% + end: 50%, 20% + speed: fast + - extendedWaitUntil: + visible: + id: 'output' + text: '.*Cheesecake.*' + timeout: 10000 From 22b0e8efa7ae8456b2f7afc038946ea5ce4d7b9a Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 10 Sep 2026 09:52:04 -0700 Subject: [PATCH 3/4] Deep-link RNTester Pressable and Modal Maestro flows Summary: Update the existing Pressable and Modal Maestro flows to open their RNTester examples directly. Extend the Pressable flow to cover content presses, feedback events, hit slop, and text presses. Changelog: [Internal] Differential Revision: D119484761 --- packages/rn-tester/.maestro/modal.yml | 26 ++++++----- packages/rn-tester/.maestro/pressable.yml | 57 ++++++++++++++--------- 2 files changed, 49 insertions(+), 34 deletions(-) diff --git a/packages/rn-tester/.maestro/modal.yml b/packages/rn-tester/.maestro/modal.yml index e3b7bef53886..fcfafc715495 100644 --- a/packages/rn-tester/.maestro/modal.yml +++ b/packages/rn-tester/.maestro/modal.yml @@ -6,20 +6,22 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: 'Components' timeout: 30000 -- scrollUntilVisible: - element: - id: 'Modal' - direction: DOWN - speed: 60 +- openLink: rntester://example/Modal/onShow +- extendedWaitUntil: + visible: + id: 'open-modal' + timeout: 10000 - tapOn: - id: 'Modal' + id: 'open-modal' - assertVisible: - text: 'Show Modal' -- tapOn: - text: 'Show Modal' + id: 'dismiss-modal' - assertVisible: - text: 'Close' + id: 'modal-on-show-count' + text: 'onShow is called 1 times' - tapOn: - text: 'Close' + id: 'dismiss-modal' +- assertNotVisible: + id: 'dismiss-modal' - assertVisible: - text: 'Show Modal' + id: 'on-show-count' + text: 'onShow is called 1 times' diff --git a/packages/rn-tester/.maestro/pressable.yml b/packages/rn-tester/.maestro/pressable.yml index 86a8b2b00231..2cc66d3f6348 100644 --- a/packages/rn-tester/.maestro/pressable.yml +++ b/packages/rn-tester/.maestro/pressable.yml @@ -1,37 +1,31 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp --- -- runFlow: ./helpers/launch-app-and-search.yml -- inputText: - text: 'Pressable' -- assertVisible: - id: 'Pressable' -- tapOn: - id: 'Pressable' -- assertVisible: - text: 'Change content based on Press' -- assertVisible: - text: 'Change style based on Press' +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/PressableExample/content-press +- extendedWaitUntil: + visible: + id: 'one_press_me_button' + timeout: 10000 - tapOn: id: 'one_press_me_button' - assertVisible: + id: 'pressable_press_console' text: 'onPress' - tapOn: id: 'one_press_me_button' - assertVisible: + id: 'pressable_press_console' text: '2x onPress' -- scrollUntilVisible: - element: - id: 'pressable_feedback_events' - direction: DOWN - speed: 10 - visibilityPercentage: 100 +- openLink: rntester://example/PressableExample/feedback-events +- extendedWaitUntil: + visible: + id: 'pressable_feedback_events_button' + timeout: 10000 - tapOn: id: 'pressable_feedback_events_button' -- scrollUntilVisible: - element: - text: 'pressIn' - direction: DOWN - speed: 10 - assertVisible: text: 'press' - assertVisible: @@ -44,3 +38,22 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo text: 'longPress' - assertVisible: text: 'pressOut' +- openLink: rntester://example/PressableExample/hit-slop +- extendedWaitUntil: + visible: + id: 'pressable_hit_slop_button' + timeout: 10000 +- tapOn: + id: 'pressable_hit_slop_button' +- assertVisible: + id: 'pressable_hit_slop' +- openLink: rntester://example/PressableExample/text-press +- extendedWaitUntil: + visible: + id: 'tappable_text' + timeout: 10000 +- tapOn: + id: 'tappable_text' +- assertVisible: + id: 'tappable_text_console' + text: 'text onPress' From 2ef2e545b3af986f63274f6e6e88ac51f9a9a37f Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 10 Sep 2026 10:06:31 -0700 Subject: [PATCH 4/4] Expand RNTester native interop Maestro coverage (#58444) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58444 Add direct-deep-link Maestro coverage for Fabric interop child insertion and expand the legacy native module flow to validate its complete platform-specific result set. Launch RNTester, wait for the landing screen so the JavaScript Linking listener is ready, and then open each example as a warm deep link. Exclude the local screenshot-baseline flow from Maestro Cloud. Differential Revision: D119484762 --- .github/workflows/test-all.yml | 2 +- packages/rn-tester/.maestro/alert.yml | 4 +- .../.maestro/animated-fade-in-view.yml | 2 +- packages/rn-tester/.maestro/appearance.yml | 6 +- .../.maestro/fabric-interop-add-children.yml | 31 ++ .../.maestro/filter-animated-blur.yml | 2 +- .../.maestro/flatlist-viewability.yml | 6 +- .../.maestro/legacy-native-module.yml | 449 ++++++++++++++++-- packages/rn-tester/.maestro/modal.yml | 4 +- packages/rn-tester/.maestro/pressable.yml | 8 +- .../.maestro/sectionlist-viewability.yml | 8 +- .../.maestro/textinput-uncontrolled.yml | 2 +- packages/rn-tester/.maestro/touchable.yml | 8 +- 13 files changed, 460 insertions(+), 72 deletions(-) create mode 100644 packages/rn-tester/.maestro/fabric-interop-add-children.yml diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index f1ee1caab331..ef728d36251c 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -184,7 +184,7 @@ jobs: download-path: /tmp/RNTesterBuild/RNTester.app app-file: /tmp/RNTesterBuild/RNTester.app app-id: com.meta.RNTester.localDevelopment - exclude-tags: android-only + exclude-tags: android-only,local-screenshot-baseline secrets: inherit test_e2e_ios_rntester: diff --git a/packages/rn-tester/.maestro/alert.yml b/packages/rn-tester/.maestro/alert.yml index 513029744ee8..970c59daccc4 100644 --- a/packages/rn-tester/.maestro/alert.yml +++ b/packages/rn-tester/.maestro/alert.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'alert-with-default-button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'alert-with-default-button' - assertVisible: 'An external USB drive has been detected!' @@ -17,7 +17,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'alert-with-three-buttons' - timeout: 10000 + timeout: 30000 - tapOn: id: 'alert-with-three-buttons' - assertVisible: 'Do you want to save your changes?' diff --git a/packages/rn-tester/.maestro/animated-fade-in-view.yml b/packages/rn-tester/.maestro/animated-fade-in-view.yml index e7b96d2e4794..6e99d635ad77 100644 --- a/packages/rn-tester/.maestro/animated-fade-in-view.yml +++ b/packages/rn-tester/.maestro/animated-fade-in-view.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'toggle-button' - timeout: 10000 + timeout: 30000 - assertVisible: id: 'fade-in-view' - tapOn: diff --git a/packages/rn-tester/.maestro/appearance.yml b/packages/rn-tester/.maestro/appearance.yml index 08c022a98951..02cbd4ff9e22 100644 --- a/packages/rn-tester/.maestro/appearance.yml +++ b/packages/rn-tester/.maestro/appearance.yml @@ -4,11 +4,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: 'Components' timeout: 30000 -- assertVisible: - id: 'components-tab' -- assertVisible: - id: 'apis-tab' - openLink: rntester://example/AppearanceExample - extendedWaitUntil: visible: 'useColorScheme hook' - timeout: 10000 + timeout: 30000 diff --git a/packages/rn-tester/.maestro/fabric-interop-add-children.yml b/packages/rn-tester/.maestro/fabric-interop-add-children.yml new file mode 100644 index 000000000000..b2c82955a977 --- /dev/null +++ b/packages/rn-tester/.maestro/fabric-interop-add-children.yml @@ -0,0 +1,31 @@ +appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp +--- +- launchApp +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- runFlow: + when: + platform: iOS + commands: + - openLink: rntester://example/FabricInteropLayer/add-children + - extendedWaitUntil: + visible: + id: 'add-marker-btn' + timeout: 30000 + - assertVisible: + id: 'marker_0' + - assertVisible: + id: 'marker_1' + - assertVisible: + id: 'marker_2' + - assertVisible: + id: 'marker_3' + - assertVisible: + id: 'marker_4' + - assertNotVisible: + id: 'marker_5' + - tapOn: + id: 'add-marker-btn' + - assertVisible: + id: 'marker_5' diff --git a/packages/rn-tester/.maestro/filter-animated-blur.yml b/packages/rn-tester/.maestro/filter-animated-blur.yml index b3e9368c652e..11b018273e64 100644 --- a/packages/rn-tester/.maestro/filter-animated-blur.yml +++ b/packages/rn-tester/.maestro/filter-animated-blur.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'animated-blur-button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'animated-blur-button' - assertVisible: diff --git a/packages/rn-tester/.maestro/flatlist-viewability.yml b/packages/rn-tester/.maestro/flatlist-viewability.yml index 94c140d96db3..dd5471900f9f 100644 --- a/packages/rn-tester/.maestro/flatlist-viewability.yml +++ b/packages/rn-tester/.maestro/flatlist-viewability.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'flat_list' - timeout: 10000 + timeout: 30000 - assertVisible: id: 'output' text: '.*Pizza, Burger.*' @@ -16,7 +16,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'flat_list' - timeout: 10000 + timeout: 30000 - repeat: times: 3 commands: @@ -33,7 +33,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'flat_list' - timeout: 10000 + timeout: 30000 - repeat: times: 2 commands: diff --git a/packages/rn-tester/.maestro/legacy-native-module.yml b/packages/rn-tester/.maestro/legacy-native-module.yml index e68fbaa30edd..e0eb8974783b 100644 --- a/packages/rn-tester/.maestro/legacy-native-module.yml +++ b/packages/rn-tester/.maestro/legacy-native-module.yml @@ -1,50 +1,413 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp --- - launchApp -# Wait for the JS bundle to render the landing screen instead of asserting -# immediately, which races app cold start on CI. +- extendedWaitUntil: + visible: 'Components' + timeout: 30000 +- openLink: rntester://example/LegacyModule/SampleLegacyModule - extendedWaitUntil: visible: - text: 'APIs' + id: 'run-all-tests' timeout: 30000 - tapOn: - id: 'apis-tab' -- runFlow: ./helpers/search.yml -- inputText: - text: 'Legacy Native' -- assertVisible: - id: 'Legacy Native Module' -- tapOn: - id: 'Legacy Native Module' -- tapOn: - text: 'voidFunc' -- assertVisible: - id: 'voidFunc-result' -- tapOn: - text: 'getBool' -- assertVisible: - id: 'getBool-result' -- tapOn: - text: 'getEnum' -- assertVisible: - id: 'getEnum-result' -- tapOn: - text: 'getInt' -- assertVisible: - id: 'getInt-result' -- tapOn: - text: 'getString' -- assertVisible: - id: 'getString-result' -- tapOn: - text: 'getObject' -- assertVisible: - id: 'getObject-result' -- tapOn: - text: 'getUnsafeObject' -- assertVisible: - id: 'getUnsafeObject-result' -- tapOn: - text: 'getValue' -- assertVisible: - id: 'getValue-result' + id: 'run-all-tests' +- runFlow: + when: + platform: iOS + commands: + - assertVisible: + id: 'voidFunc-result' + - assertVisible: + id: 'getBool-result' + text: 'true' + - assertVisible: + id: 'getEnum-result' + text: '1' + - scrollUntilVisible: + element: + id: 'getNumber-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getNumber-result' + text: '99.95' + - scrollUntilVisible: + element: + id: 'getFloat-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getFloat-result' + text: '99.94999694824219' + - scrollUntilVisible: + element: + id: 'getInt-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getInt-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getLongLong-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getLongLong-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getUnsignedLongLong-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getUnsignedLongLong-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getNSInteger-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getNSInteger-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getNSUInteger-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getNSUInteger-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getArray-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getArray-result' + text: '.*foo.*' + - scrollUntilVisible: + element: + id: 'getObject-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getObject-result' + text: '.*foo.*' + - scrollUntilVisible: + element: + id: 'getString-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getString-result' + text: '.*Hello.*' + - scrollUntilVisible: + element: + id: 'getNullString-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getNullString-result' + text: 'null' + - scrollUntilVisible: + element: + id: 'getNSNumber-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getNSNumber-result' + text: '20' + - scrollUntilVisible: + element: + id: 'getUnsafeObject-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getUnsafeObject-result' + text: '.*foo.*' + - scrollUntilVisible: + element: + id: 'getRootTag-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getRootTag-result' + text: '11' + - scrollUntilVisible: + element: + id: 'getValue-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getValue-result' + text: '.*test.*' + - scrollUntilVisible: + element: + id: 'callback-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'callback-result' + text: '.*value from callback!.*' + - scrollUntilVisible: + element: + id: 'promise-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'promise-result' + text: '.*result!.*' + - scrollUntilVisible: + element: + id: 'rejectPromise-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'rejectPromise-result' + text: '.*intentional promise rejection.*' + - scrollUntilVisible: + element: + id: 'getConstants-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConstants-result' + text: '.*something.*' + - scrollUntilVisible: + element: + id: 'getConst1-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConst1-result' + text: 'true' + - scrollUntilVisible: + element: + id: 'getConst2-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConst2-result' + text: '390' + - scrollUntilVisible: + element: + id: 'getConst3-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConst3-result' + text: '.*something.*' +- runFlow: + when: + platform: Android + commands: + - assertVisible: + id: 'voidFunc-result' + - assertVisible: + id: 'getBool-result' + text: 'true' + - assertVisible: + id: 'getEnum-result' + text: '1' + - scrollUntilVisible: + element: + id: 'getDouble-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDouble-result' + text: '99.95' + - scrollUntilVisible: + element: + id: 'getInt-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getInt-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getFloat-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getFloat-result' + text: '99.94999694824219' + - scrollUntilVisible: + element: + id: 'getObjectDouble-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getObjectDouble-result' + text: '99.95' + - scrollUntilVisible: + element: + id: 'getObjectInteger-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getObjectInteger-result' + text: '99' + - scrollUntilVisible: + element: + id: 'getObjectFloat-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getObjectFloat-result' + text: '99.94999694824219' + - scrollUntilVisible: + element: + id: 'getString-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getString-result' + text: '.*Hello.*' + - scrollUntilVisible: + element: + id: 'getRootTag-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getRootTag-result' + text: '11' + - scrollUntilVisible: + element: + id: 'getObject-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getObject-result' + text: '.*foo.*' + - scrollUntilVisible: + element: + id: 'getUnsafeObject-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getUnsafeObject-result' + text: '.*foo.*' + - scrollUntilVisible: + element: + id: 'getValue-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getValue-result' + text: '.*test.*' + - scrollUntilVisible: + element: + id: 'getDynamicWithNull-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDynamicWithNull-result' + text: '.*Null.*' + - scrollUntilVisible: + element: + id: 'getDynamicWithBoolean-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDynamicWithBoolean-result' + text: '.*Boolean.*' + - scrollUntilVisible: + element: + id: 'getDynamicWithNumber-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDynamicWithNumber-result' + text: '.*42.*' + - scrollUntilVisible: + element: + id: 'getDynamicWithString-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDynamicWithString-result' + text: '.*The answer is 42.*' + - scrollUntilVisible: + element: + id: 'getDynamicWithArray-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDynamicWithArray-result' + text: '.*the.*' + - scrollUntilVisible: + element: + id: 'getDynamicWithMap-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getDynamicWithMap-result' + text: '.*answer.*' + - scrollUntilVisible: + element: + id: 'callback-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'callback-result' + text: '.*Value From Callback.*' + - scrollUntilVisible: + element: + id: 'getArray-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getArray-result' + text: '.*foo.*' + - scrollUntilVisible: + element: + id: 'promise-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'promise-result' + text: '.*result.*' + - scrollUntilVisible: + element: + id: 'rejectPromise-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'rejectPromise-result' + text: '.*intentional promise rejection.*' + - scrollUntilVisible: + element: + id: 'getConstants-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConstants-result' + text: '.*something.*' + - scrollUntilVisible: + element: + id: 'getConst1-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConst1-result' + text: 'true' + - scrollUntilVisible: + element: + id: 'getConst2-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConst2-result' + text: '390' + - scrollUntilVisible: + element: + id: 'getConst3-result' + direction: DOWN + speed: 40 + - assertVisible: + id: 'getConst3-result' + text: '.*something.*' diff --git a/packages/rn-tester/.maestro/modal.yml b/packages/rn-tester/.maestro/modal.yml index fcfafc715495..c1b016b5f950 100644 --- a/packages/rn-tester/.maestro/modal.yml +++ b/packages/rn-tester/.maestro/modal.yml @@ -1,8 +1,6 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebook.react.uiapp --- - launchApp -# Wait for the JS bundle to render the landing screen instead of asserting -# immediately, which races app cold start on CI. - extendedWaitUntil: visible: 'Components' timeout: 30000 @@ -10,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'open-modal' - timeout: 10000 + timeout: 30000 - tapOn: id: 'open-modal' - assertVisible: diff --git a/packages/rn-tester/.maestro/pressable.yml b/packages/rn-tester/.maestro/pressable.yml index 2cc66d3f6348..0dd9e88c325e 100644 --- a/packages/rn-tester/.maestro/pressable.yml +++ b/packages/rn-tester/.maestro/pressable.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'one_press_me_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'one_press_me_button' - assertVisible: @@ -23,7 +23,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'pressable_feedback_events_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'pressable_feedback_events_button' - assertVisible: @@ -42,7 +42,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'pressable_hit_slop_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'pressable_hit_slop_button' - assertVisible: @@ -51,7 +51,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'tappable_text' - timeout: 10000 + timeout: 30000 - tapOn: id: 'tappable_text' - assertVisible: diff --git a/packages/rn-tester/.maestro/sectionlist-viewability.yml b/packages/rn-tester/.maestro/sectionlist-viewability.yml index d671825b9621..5d1cc7efb9e3 100644 --- a/packages/rn-tester/.maestro/sectionlist-viewability.yml +++ b/packages/rn-tester/.maestro/sectionlist-viewability.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'start_test' - timeout: 10000 + timeout: 30000 - tapOn: id: 'start_test' - assertVisible: @@ -18,7 +18,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'section_list' - timeout: 10000 + timeout: 30000 - assertVisible: id: 'output' text: '.*Pizza.*' @@ -26,7 +26,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'section_list' - timeout: 10000 + timeout: 30000 - repeat: times: 3 commands: @@ -47,7 +47,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'section_list' - timeout: 10000 + timeout: 30000 - repeat: times: 2 commands: diff --git a/packages/rn-tester/.maestro/textinput-uncontrolled.yml b/packages/rn-tester/.maestro/textinput-uncontrolled.yml index ff85bbe42833..8ef177f0c1fb 100644 --- a/packages/rn-tester/.maestro/textinput-uncontrolled.yml +++ b/packages/rn-tester/.maestro/textinput-uncontrolled.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'uncontrolled-textinput' - timeout: 10000 + timeout: 30000 - tapOn: id: 'uncontrolled-textinput' - eraseText diff --git a/packages/rn-tester/.maestro/touchable.yml b/packages/rn-tester/.maestro/touchable.yml index b027f447cdfc..101c77306af1 100644 --- a/packages/rn-tester/.maestro/touchable.yml +++ b/packages/rn-tester/.maestro/touchable.yml @@ -8,7 +8,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'touchable_feedback_events_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'touchable_feedback_events_button' - assertVisible: @@ -17,7 +17,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'touchable_highlight_text_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'touchable_highlight_text_button' - assertVisible: @@ -27,7 +27,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'touchable_hit_slop_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'touchable_hit_slop_button' - assertVisible: @@ -36,7 +36,7 @@ appId: ${APP_ID} # iOS: com.meta.RNTester.localDevelopment | Android: com.facebo - extendedWaitUntil: visible: id: 'touchable_without_feedback_button' - timeout: 10000 + timeout: 30000 - tapOn: id: 'touchable_without_feedback_button' - assertVisible: