From 39f85ca08ac6fd0c2b604cbc89bf10af3ec08df1 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Thu, 9 Apr 2026 11:10:40 +0200 Subject: [PATCH 01/16] refactor(tests): test-tabs-tab-bar-more-navigation-controller + scenario --- .../tests/single-feature-tests/tabs/index.ts | 4 +- .../index.tsx} | 2 +- .../scenario.md | 48 +++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) rename apps/src/tests/single-feature-tests/tabs/{test-tabs-more-navigation-controller.tsx => test-tabs-tab-bar-more-navigation-controller/index.tsx} (97%) create mode 100644 apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md diff --git a/apps/src/tests/single-feature-tests/tabs/index.ts b/apps/src/tests/single-feature-tests/tabs/index.ts index 0b75a5afae..e00c932122 100644 --- a/apps/src/tests/single-feature-tests/tabs/index.ts +++ b/apps/src/tests/single-feature-tests/tabs/index.ts @@ -9,7 +9,7 @@ import TestTabsColorScheme from './test-tabs-color-scheme'; import TestTabsTabBarLayoutDirection from './test-tabs-tab-bar-layout-direction'; import TestTabsIMEInsets from './test-tabs-ime-insets'; import TestTabsSimpleNav from './test-tabs-simple-nav'; -import TestTabsMoreNavigationController from './test-tabs-more-navigation-controller'; +import TestTabsTabBarMoreNavigationController from './test-tabs-tab-bar-more-navigation-controller'; import TestTabsStaleStateUpdateRejection from './test-tabs-stale-update-rejection'; import TestTabsTabBarMinimizeBehavior from './test-tabs-tab-bar-minimize-behavior-ios'; @@ -23,7 +23,7 @@ const scenarios = { TestTabsTabBarLayoutDirection, TestTabsIMEInsets, TestTabsSimpleNav, - TestTabsMoreNavigationController, + TestTabsTabBarMoreNavigationController, TestTabsStaleStateUpdateRejection, TestTabsTabBarMinimizeBehavior, }; diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller.tsx b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/index.tsx similarity index 97% rename from apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller.tsx rename to apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/index.tsx index 8bec444691..b98fed1702 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller.tsx +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/index.tsx @@ -12,7 +12,7 @@ import { SCREEN_KEY_MORE_NAV_CTRL } from 'react-native-screens'; const SCENARIO: Scenario = { name: 'More navigation controller', - key: 'test-tabs-more-navigation-controller', + key: 'test-tabs-tab-bar-more-navigation-controller', details: 'Test navigation and interactions with "More Naviagation Controller"', platforms: ['ios'], AppComponent: App, diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md new file mode 100644 index 0000000000..8e4019830b --- /dev/null +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md @@ -0,0 +1,48 @@ +# Test Scenario: More Naviagation Controller + +**E2E test:** ongoing research + +## Prerequisites + +- iOS device or simulator +- 6 tabs are configured (First–Sixth). iOS tab bar displays a maximum of 4 tabs + the built-in **"More"** tab, so Fifth and Sixth are accessible only via the More screen. + +## Note + +- On iPad: to display **More** tab - app window size have to correspond to iPhone view. + +## Steps + +### Baseline + +1. Launch the app and navigate to the **More navigation controller** scenario. + +- [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. + +--- + +### More tab — tap interaction + +2. Tap the **More** tab in the tab bar. + +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. + +3. Tap **Fifth** in the More screen list. + +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. + +4. Tap **Third** tab in the tab bar. + +- [ ] Expected: **Third** tab becomes active. Tab bar selection updates. Route key label reads `Third`. + +5. Tap the **More** tab in the tab bar. + +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. + +6. Tap the **More** tab in the tab bar. + +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. + +7. Tap **Sixth** in the More screen list. + +- [ ] Expected: The **Sixth** tab content is shown. The route key label reads `Sixth`. From 519b347b2dca42e943581e67bb60d51bd514a657 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Thu, 9 Apr 2026 13:20:50 +0200 Subject: [PATCH 02/16] scenario extension --- .../scenario.md | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md index 8e4019830b..6c19d7cb38 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md @@ -5,7 +5,6 @@ ## Prerequisites - iOS device or simulator -- 6 tabs are configured (First–Sixth). iOS tab bar displays a maximum of 4 tabs + the built-in **"More"** tab, so Fifth and Sixth are accessible only via the More screen. ## Note @@ -37,12 +36,48 @@ 5. Tap the **More** tab in the tab bar. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. -6. Tap the **More** tab in the tab bar. +6. Tap the **More** tab again. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. 7. Tap **Sixth** in the More screen list. - [ ] Expected: The **Sixth** tab content is shown. The route key label reads `Sixth`. + +--- + +### Navigation using buttons + +8. Tap **"Select Fourth"**. + +- [ ] Expected: **Fourth** tab becomes active. Tab bar selection updates. Route key label reads `Fourth`. + +9. Tap **"Select Fifth"**. + +- [ ] Expected: **Fifth** tab content is shown. Route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. + +10. From any visible tab (e.g. **First**), tap **"Select Sixth"**. + +- [ ] Expected: **Sixth** tab content is shown. Route key label reads `Sixth`. The More tab remains selected in the tab bar. + +--- + +### Selecting More tab directly + +11. Tap **Third** tab in the tab bar. + +- [ ] Expected: **Third** tab becomes active. Tab bar selection updates. Route key label reads `Third`. + +12. Tap **"Select MoreTab"**. + +- [ ] Expected: The More screen is opened. The More tab is selected in the tab bar. The native More list is displayed showing **Fifth** and **Sixth**. + +--- + +### Round-trip navigation + +13. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third** → **More** . + +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth, More) show the More tab as selected. No visual glitches or stale route key labels. From eeb6b94cc3e7d71ecfa0fb72b558ae0edff77d21 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Thu, 9 Apr 2026 13:22:27 +0200 Subject: [PATCH 03/16] misspeling correct --- .../test-tabs-tab-bar-more-navigation-controller/scenario.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md index 6c19d7cb38..2009f71daf 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md @@ -1,4 +1,4 @@ -# Test Scenario: More Naviagation Controller +# Test Scenario: More Navigation Controller **E2E test:** ongoing research From 81bee95380fb47c28c5f5c56698efe7e1c9a6c90 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Thu, 9 Apr 2026 13:41:08 +0200 Subject: [PATCH 04/16] scenario for iPad in full size app - no More tab- added --- .../scenario.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md index 2009f71daf..09327f698a 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md @@ -81,3 +81,23 @@ 13. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third** → **More** . - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth, More) show the More tab as selected. No visual glitches or stale route key labels. + +--- + +### iPad without More tab displayed - quick check + +14. Open app on iPad in full size and navigate to the **More navigation controller** scenario. + +- [ ] Expected: Tab bar shows all six tabs. The **First** tab is selected. The content area displays `First` as the route key. + +15. Navigate between tabs using tab items from tab bar. + +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. + +16. Navigate between tabs using buttons from screen. + +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. + +17. Tap **"Select MoreTab"**. + +- [ ] Expected: Nothing change, previously selected tab is still selected in tab bar and content area displays it's name as the route key. From 1b5a8b7e2ea04e41a946fe4fb62b54d15dca25db Mon Sep 17 00:00:00 2001 From: lkuchno Date: Tue, 14 Apr 2026 10:07:05 +0200 Subject: [PATCH 05/16] update after cahnges in prop works --- apps/src/tests/single-feature-tests/tabs/index.ts | 4 ++-- .../index.tsx | 0 .../scenario.md | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) rename apps/src/tests/single-feature-tests/tabs/{test-tabs-tab-bar-more-navigation-controller => test-tabs-more-navigation-controller}/index.tsx (100%) rename apps/src/tests/single-feature-tests/tabs/{test-tabs-tab-bar-more-navigation-controller => test-tabs-more-navigation-controller}/scenario.md (88%) diff --git a/apps/src/tests/single-feature-tests/tabs/index.ts b/apps/src/tests/single-feature-tests/tabs/index.ts index 3ee6d4c9e7..4703ab3fb9 100644 --- a/apps/src/tests/single-feature-tests/tabs/index.ts +++ b/apps/src/tests/single-feature-tests/tabs/index.ts @@ -9,7 +9,7 @@ import TestTabsTabBarColorScheme from './test-tabs-tab-bar-color-scheme'; import TestTabsTabBarLayoutDirection from './test-tabs-tab-bar-layout-direction'; import TestTabsIMEInsets from './test-tabs-ime-insets'; import TestTabsSimpleNav from './test-tabs-simple-nav'; -import TestTabsTabBarMoreNavigationController from './test-tabs-tab-bar-more-navigation-controller'; +import TestTabsMoreNavigationController from './test-tabs-more-navigation-controller'; import TestTabsPreventNativeSelection from './test-tabs-prevent-native-selection'; import TestTabsStaleStateUpdateRejection from './test-tabs-stale-update-rejection'; import TestTabsTabBarMinimizeBehavior from './test-tabs-tab-bar-minimize-behavior-ios'; @@ -25,7 +25,7 @@ const scenarios = { TestTabsTabBarLayoutDirection, TestTabsIMEInsets, TestTabsSimpleNav, - TestTabsTabBarMoreNavigationController, + TestTabsMoreNavigationController, TestTabsPreventNativeSelection, TestTabsStaleStateUpdateRejection, TestTabsTabBarMinimizeBehavior, diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/index.tsx b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx similarity index 100% rename from apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/index.tsx rename to apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md similarity index 88% rename from apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md rename to apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 09327f698a..26f5e66890 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-tab-bar-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -1,7 +1,17 @@ # Test Scenario: More Navigation Controller +## Details + +**Description:** Test cover chech + **E2E test:** ongoing research +## Technical information + +**PR introducing functionality:** [#3785](https://github.com/software-mansion/react-native-screens/pull/3785) [#3813](https://github.com/software-mansion/react-native-screens/pull/3813) refactor: [#3875](https://github.com/software-mansion/react-native-screens/pull/3875) [#3877](https://github.com/software-mansion/react-native-screens/pull/3877) + +**OS test creation version:** iOS18.6 and iOS26.2 + ## Prerequisites - iOS device or simulator From e9e24f77940eeecc702655466e507b579e09a216 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Tue, 14 Apr 2026 12:20:40 +0200 Subject: [PATCH 06/16] scenario first update --- .../scenario.md | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 26f5e66890..7f343e9366 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -2,7 +2,7 @@ ## Details -**Description:** Test cover chech +**Description:** Test cover checks on **E2E test:** ongoing research @@ -14,15 +14,15 @@ ## Prerequisites -- iOS device or simulator +- iOS device or simulator: iPhone and iPad ## Note -- On iPad: to display **More** tab - app window size have to correspond to iPhone view. +- On iPad: to display **More** tab - app window size has to correspond to iPhone view. ## Steps -### Baseline +### iPhone baseline 1. Launch the app and navigate to the **More navigation controller** scenario. @@ -70,25 +70,13 @@ 10. From any visible tab (e.g. **First**), tap **"Select Sixth"**. -- [ ] Expected: **Sixth** tab content is shown. Route key label reads `Sixth`. The More tab remains selected in the tab bar. - ---- - -### Selecting More tab directly - -11. Tap **Third** tab in the tab bar. - -- [ ] Expected: **Third** tab becomes active. Tab bar selection updates. Route key label reads `Third`. - -12. Tap **"Select MoreTab"**. - -- [ ] Expected: The More screen is opened. The More tab is selected in the tab bar. The native More list is displayed showing **Fifth** and **Sixth**. +- [ ] Expected: **Sixth** tab content is shown. Route key label reads `Sixth`. The More tab is selected in the tab bar. --- ### Round-trip navigation -13. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third** → **More** . +1. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth, More) show the More tab as selected. No visual glitches or stale route key labels. From ddb1501530c149abb77bbe40c66ef67cf4c11106 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Tue, 14 Apr 2026 13:38:10 +0200 Subject: [PATCH 07/16] scenario update and toast message --- .../index.tsx | 2 +- .../scenario.md | 93 ++++++++++++++++--- 2 files changed, 81 insertions(+), 14 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx index 5dece0bfa7..465e2d4287 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx @@ -100,7 +100,7 @@ function AppContents() { onMoreTabSelected: (event: NativeSyntheticEvent) => { const message = `onMoreTabSelected: ${JSON.stringify(event.nativeEvent, undefined, 2)}`; console.warn(message); - toast.push({ message, backgroundColor: Colors.GreenLight60 }); + toast.push({ message: 'onMoreTabSelected', backgroundColor: Colors.GreenLight60 }); }, }} /> diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 7f343e9366..bfc492255f 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -14,15 +14,16 @@ ## Prerequisites -- iOS device or simulator: iPhone and iPad +- iOS device or simulator: iPhone and iPad (iOS18.6 and iOS26.2) ## Note -- On iPad: to display **More** tab - app window size has to correspond to iPhone view. +- On iPad: to display **More** tab - app window size has to correspond to iPhone view. To resize app on iOS18 and lower split view with other app has to be trigger. +- New toast should appear only after steps where expected section mention this. -## Steps +## Steps - iPhone -### iPhone baseline +### Baseline 1. Launch the app and navigate to the **More navigation controller** scenario. @@ -34,7 +35,7 @@ 2. Tap the **More** tab in the tab bar. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. On the bottom green toast appear with `onMoreTabSelected` message. 3. Tap **Fifth** in the More screen list. @@ -50,7 +51,7 @@ 6. Tap the **More** tab again. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. 7. Tap **Sixth** in the More screen list. @@ -76,26 +77,92 @@ ### Round-trip navigation -1. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. +11. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth, More) show the More tab as selected. No visual glitches or stale route key labels. --- -### iPad without More tab displayed - quick check +## Steps - iPad -14. Open app on iPad in full size and navigate to the **More navigation controller** scenario. +### Baseline - without More navigation controler displayed + +1. Open app on iPad in full size and navigate to the **More navigation controller** scenario. - [ ] Expected: Tab bar shows all six tabs. The **First** tab is selected. The content area displays `First` as the route key. -15. Navigate between tabs using tab items from tab bar. +2. Navigate between tabs using tab items from tab bar. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. -16. Navigate between tabs using buttons from screen. +3. Navigate between tabs using buttons from screen. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. -17. Tap **"Select MoreTab"**. +--- + +### More tab — tap interaction + +4. Select `First` tab and resize app to iPhone size view. + +- [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. + +5. Tap the **More** tab in the tab bar. + +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. On the bottom green toast appear with `onMoreTabSelected` message. + +6. Tap **Fifth** in the More screen list. + +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. + +7. Tap **Third** tab in the tab bar. + +- [ ] Expected: **Third** tab becomes active. Tab bar selection updates. Route key label reads `Third`. + +8. Tap the **More** tab in the tab bar. + +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. + +9. Tap the **More** tab again. + +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. + +10. Tap **Sixth** in the More screen list. + +- [ ] Expected: The **Sixth** tab content is shown. The route key label reads `Sixth`. + +--- + +### Navigation with app resizing + +11. Tap **Second** tab in the tab bar. + +- [ ] Expected: **Second** tab becomes active. Tab bar selection updates. Route key label reads `Second`. + +12. Tap **"More"** tab bar item and select **"Sixth"** from the More list. + +- [ ] Expected: **Sixth** tab content is shown. Route key label reads `Sixth`. The More tab is selected in the tab bar. No crash or blank screen. + +13. Tap the **More** tab again. + +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. + +14. Resize app to full size. + +- [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Second** tab becomes active. Route key label reads `Second`. + +15. Select **Third** tab and switch to **Fifth** + +- [ ] Expected: **Fifth** tab is selected. Route key label reads `Fifth`. + +16. Resize app to iPhone size view. + +- [ ] Expected: **More** tab appears and becomes active. Route key label reads `Fifth`. + +17. Tap the **More** tab again. + +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. + +18. Resize app to full size. -- [ ] Expected: Nothing change, previously selected tab is still selected in tab bar and content area displays it's name as the route key. +- [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Second** tab becomes active. Route key label reads `Second`. From 0569ee98e60584914d51d9833c1a20f70a64f4e1 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Tue, 14 Apr 2026 13:58:10 +0200 Subject: [PATCH 08/16] start adding checks on event states in console log --- .../tabs/test-tabs-more-navigation-controller/scenario.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index bfc492255f..ad33d346b7 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -25,7 +25,7 @@ ### Baseline -1. Launch the app and navigate to the **More navigation controller** scenario. +1. Launch the app and navigate to the **More navigation controller** scenario. Open DevTools. - [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. @@ -35,7 +35,7 @@ 2. Tap the **More** tab in the tab bar. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. On the bottom green toast appear with `onMoreTabSelected` message. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. On the bottom green toast appear with `onMoreTabSelected` message. In Console log onMoreTabSelected event should appear with 'First' as selectedScreenKey. 3. Tap **Fifth** in the More screen list. From 78597e79b4cfe0782cab39bab7e835596519b675 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Thu, 16 Apr 2026 15:06:34 +0200 Subject: [PATCH 09/16] update screnario description, and add checks on cosole log onMoreTabSelected --- .../scenario.md | 85 +++++++++---------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index ad33d346b7..1093991bd2 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -2,15 +2,13 @@ ## Details -**Description:** Test cover checks on +**Description:** Validates the native iOS More navigation controller - the overflow mechanism UIKit creates when a tab bar has more than five tabs. Tests cover user-driven and JS-driven navigation to overflow tabs (Fifth, Sixth), correct onMoreTabSelected event lifecycle (fires only when opening the More list, not on subsequent selections within it), and iPad resize transitions between compact and regular size classes. -**E2E test:** ongoing research - -## Technical information +**OS test creation version:** iOS18.6 and iOS26.2 -**PR introducing functionality:** [#3785](https://github.com/software-mansion/react-native-screens/pull/3785) [#3813](https://github.com/software-mansion/react-native-screens/pull/3813) refactor: [#3875](https://github.com/software-mansion/react-native-screens/pull/3875) [#3877](https://github.com/software-mansion/react-native-screens/pull/3877) +## E2E test -**OS test creation version:** iOS18.6 and iOS26.2 +Other: Ongoing research. ## Prerequisites @@ -18,8 +16,11 @@ ## Note -- On iPad: to display **More** tab - app window size has to correspond to iPhone view. To resize app on iOS18 and lower split view with other app has to be trigger. -- New toast should appear only after steps where expected section mention this. +- On iPad: The More tab only appears when the window is resized to an iPhone-like view. For iOS 18 and older, a Split View must be triggered to achieve this. + +- Toasts: A new toast should appear only after the steps where the "Expected" section explicitly mentions it. + +- DevTools: On the focused device, press Shift+Cmd+D and select 'Open DevTools' from the menu. To view the logs relevant to this scenario, filter the console output by `TabSelected`. ## Steps - iPhone @@ -35,19 +36,19 @@ 2. Tap the **More** tab in the tab bar. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. On the bottom green toast appear with `onMoreTabSelected` message. In Console log onMoreTabSelected event should appear with 'First' as selectedScreenKey. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. A green toast appears at the bottom with the message onMoreTabSelected. In the console, the onMoreTabSelected event should be logged with selectedScreenKey,provenance and target values corresponding to last onTabSelected event. 3. Tap **Fifth** in the More screen list. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. No new onMoreTabSelected event appears in the console log. 4. Tap **Third** tab in the tab bar. -- [ ] Expected: **Third** tab becomes active. Tab bar selection updates. Route key label reads `Third`. +- [ ] Expected: **Third** tab becomes active. Tab bar selection updates, and the route key label reads `Third`. 5. Tap the **More** tab in the tab bar. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. +- [ ] Expected: The Fifth tab content is displayed, and the route key label reads `Fifth`. The Tab Bar updates to show that the More tab is selected. No new onMoreTabSelected event appears in the console log. 6. Tap the **More** tab again. @@ -63,15 +64,15 @@ 8. Tap **"Select Fourth"**. -- [ ] Expected: **Fourth** tab becomes active. Tab bar selection updates. Route key label reads `Fourth`. +- [ ] Expected: **Fourth** tab becomes active. Tab bar selection updates, and the route key label reads `Fourth`. 9. Tap **"Select Fifth"**. -- [ ] Expected: **Fifth** tab content is shown. Route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. +- [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. 10. From any visible tab (e.g. **First**), tap **"Select Sixth"**. -- [ ] Expected: **Sixth** tab content is shown. Route key label reads `Sixth`. The More tab is selected in the tab bar. +- [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. --- @@ -79,9 +80,7 @@ 11. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. -- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth, More) show the More tab as selected. No visual glitches or stale route key labels. - ---- +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth) show the More tab as selected. No visual glitches or stale route key labels. ## Steps - iPad @@ -93,23 +92,23 @@ 2. Navigate between tabs using tab items from tab bar. -- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. No onMoreTabSelected event appears in the console log. -3. Navigate between tabs using buttons from screen. +3. Navigate between tabs using buttons from screen. -- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. No onMoreTabSelected event appears in the console log. --- -### More tab — tap interaction +### More tab — tap interaction on iPad 4. Select `First` tab and resize app to iPhone size view. -- [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. +- [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. No onMoreTabSelected event appears in the console log. 5. Tap the **More** tab in the tab bar. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. On the bottom green toast appear with `onMoreTabSelected` message. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. A green toast appears at the bottom with the message onMoreTabSelected. In the console, the onMoreTabSelected event should be logged with selectedScreenKey,provenance and target values corresponding to last onTabSelected event. 6. Tap **Fifth** in the More screen list. @@ -117,52 +116,48 @@ 7. Tap **Third** tab in the tab bar. -- [ ] Expected: **Third** tab becomes active. Tab bar selection updates. Route key label reads `Third`. +- [ ] Expected: **Third** tab becomes active. Tab bar selection updates, and the route key label reads `Third`. 8. Tap the **More** tab in the tab bar. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. No onMoreTabSelected event appears in the console log. 9. Tap the **More** tab again. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -10. Tap **Sixth** in the More screen list. - -- [ ] Expected: The **Sixth** tab content is shown. The route key label reads `Sixth`. - --- -### Navigation with app resizing +### Navigation with app resizing -11. Tap **Second** tab in the tab bar. +10. Tap **Second** tab in the tab bar. -- [ ] Expected: **Second** tab becomes active. Tab bar selection updates. Route key label reads `Second`. +- [ ] Expected: **Second** tab becomes active. Tab bar selection updates, and the route key label reads `Second`. In the console, the onTabSelected event should be logged with selectedScreenKey set to 'Second'. -12. Tap **"More"** tab bar item and select **"Sixth"** from the More list. +11. Tap **"More"** tab bar item and select **"Sixth"** from the More list. -- [ ] Expected: **Sixth** tab content is shown. Route key label reads `Sixth`. The More tab is selected in the tab bar. No crash or blank screen. +- [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. No crash or blank screen. -13. Tap the **More** tab again. +12. Tap the **More** tab again. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -14. Resize app to full size. +13. Resize app to full size. -- [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Second** tab becomes active. Route key label reads `Second`. +- [ ] Expected: The More tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. In the console, the onTabSelected event should be logged with selectedScreenKey set to 'Second', taget set to the same value as in step 11, and provenance increased by 2. -15. Select **Third** tab and switch to **Fifth** +14. Select **Third** tab and switch to **Fifth** -- [ ] Expected: **Fifth** tab is selected. Route key label reads `Fifth`. +- [ ] Expected: **Fifth** tab is selected, and the route key label reads `Fifth`. -16. Resize app to iPhone size view. +15. Resize app to iPhone size view. -- [ ] Expected: **More** tab appears and becomes active. Route key label reads `Fifth`. +- [ ] Expected: **More** tab appears and becomes active, and the route key label reads `Fifth`. -17. Tap the **More** tab again. +16. Tap the **More** tab again. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -18. Resize app to full size. +17. Resize app to full size. -- [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Second** tab becomes active. Route key label reads `Second`. +- [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Fifth** tab becomes active, and the route key label reads `Fifth`. From 07298f5ac0b8e5f79433a247854dab44da237157 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Fri, 17 Apr 2026 15:17:16 +0200 Subject: [PATCH 10/16] change in OS section --- .../tabs/test-tabs-more-navigation-controller/scenario.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 1093991bd2..f943188270 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -4,7 +4,7 @@ **Description:** Validates the native iOS More navigation controller - the overflow mechanism UIKit creates when a tab bar has more than five tabs. Tests cover user-driven and JS-driven navigation to overflow tabs (Fifth, Sixth), correct onMoreTabSelected event lifecycle (fires only when opening the More list, not on subsequent selections within it), and iPad resize transitions between compact and regular size classes. -**OS test creation version:** iOS18.6 and iOS26.2 +**OS test creation version:** iOS: 18.6 and 26.2 ## E2E test From 25087f61f3360df4e58d7e5454113ac9fe950bab Mon Sep 17 00:00:00 2001 From: lkuchno Date: Mon, 20 Apr 2026 07:43:16 +0200 Subject: [PATCH 11/16] final version of scenario --- .../test-tabs-more-navigation-controller/scenario.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index f943188270..1056582520 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -70,7 +70,7 @@ Other: Ongoing research. - [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. -10. From any visible tab (e.g. **First**), tap **"Select Sixth"**. +1. Tap **"Select First"** and then tap **"Select Sixth"**. - [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. @@ -86,7 +86,7 @@ Other: Ongoing research. ### Baseline - without More navigation controler displayed -1. Open app on iPad in full size and navigate to the **More navigation controller** scenario. +1. Open app on iPad in full size and navigate to the **More navigation controller** scenario. Open DevTools. - [ ] Expected: Tab bar shows all six tabs. The **First** tab is selected. The content area displays `First` as the route key. @@ -100,7 +100,7 @@ Other: Ongoing research. --- -### More tab — tap interaction on iPad +### More tab — tap interaction with app resizing 4. Select `First` tab and resize app to iPhone size view. @@ -126,11 +126,7 @@ Other: Ongoing research. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. ---- - -### Navigation with app resizing - -10. Tap **Second** tab in the tab bar. +10. Tap **Second** tab in the tab bar. - [ ] Expected: **Second** tab becomes active. Tab bar selection updates, and the route key label reads `Second`. In the console, the onTabSelected event should be logged with selectedScreenKey set to 'Second'. From 1c29f34e4d67213f6b1b421c2db21cd88c2edc08 Mon Sep 17 00:00:00 2001 From: lkuchno <45803783+LKuchno@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:12:14 +0200 Subject: [PATCH 12/16] Update apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md Co-authored-by: Kacper Kafara --- .../tabs/test-tabs-more-navigation-controller/scenario.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 1056582520..0902e9cbe5 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -16,7 +16,7 @@ Other: Ongoing research. ## Note -- On iPad: The More tab only appears when the window is resized to an iPhone-like view. For iOS 18 and older, a Split View must be triggered to achieve this. +- On iPad: The More tab only appears when the window is resized to a compact width size class. For iOS 18 and older, a Split View must be triggered to achieve this. - Toasts: A new toast should appear only after the steps where the "Expected" section explicitly mentions it. From 634c61961c7e59a1cf63af33d6508e9270441466 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Mon, 20 Apr 2026 12:11:01 +0200 Subject: [PATCH 13/16] onTabSelected added to display toast on screen, scenario updated to dont use devtools --- .../index.tsx | 8 ++++- .../scenario.md | 32 +++++++++---------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx index 517babcab8..71211955fc 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/index.tsx @@ -11,7 +11,7 @@ import { import { CenteredLayoutView } from '@apps/shared/CenteredLayoutView'; import { ToastProvider, useToast } from '@apps/shared/'; import { Colors } from '@apps/shared/styling'; -import type { MoreTabSelectedEvent } from 'react-native-screens'; +import type { MoreTabSelectedEvent, TabSelectedEvent } from 'react-native-screens'; const scenarioDescription: ScenarioDescription = { name: 'More navigation controller', @@ -107,6 +107,12 @@ function AppContents() { toast.push({ message: 'onMoreTabSelected', backgroundColor: Colors.GreenLight60 }); }, }} + onTabSelected={(event: NativeSyntheticEvent) => { + toast.push({ + backgroundColor: Colors.BlueLight100, + message: `onTabSelected: ${JSON.stringify(event.nativeEvent.selectedScreenKey)}`, + }); + }} /> ); } diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 0902e9cbe5..c853c270d4 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -18,15 +18,13 @@ Other: Ongoing research. - On iPad: The More tab only appears when the window is resized to a compact width size class. For iOS 18 and older, a Split View must be triggered to achieve this. -- Toasts: A new toast should appear only after the steps where the "Expected" section explicitly mentions it. - -- DevTools: On the focused device, press Shift+Cmd+D and select 'Open DevTools' from the menu. To view the logs relevant to this scenario, filter the console output by `TabSelected`. +- Toasts: A blue toast with the message `onTabSelected:""` should appear after each tab selection - except when the More tab list is displayed (which triggers a green `onMoreTabSelected` toast instead). In this scenario, this action is only mentioned in steps involving non-intuitive situations. ## Steps - iPhone ### Baseline -1. Launch the app and navigate to the **More navigation controller** scenario. Open DevTools. +1. Launch the app and navigate to the **More navigation controller** scenario. - [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. @@ -36,11 +34,11 @@ Other: Ongoing research. 2. Tap the **More** tab in the tab bar. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. A green toast appears at the bottom with the message onMoreTabSelected. In the console, the onMoreTabSelected event should be logged with selectedScreenKey,provenance and target values corresponding to last onTabSelected event. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. A green toast appears at the bottom with the message `onMoreTabSelected`. 3. Tap **Fifth** in the More screen list. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. No new onMoreTabSelected event appears in the console log. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. 4. Tap **Third** tab in the tab bar. @@ -48,7 +46,7 @@ Other: Ongoing research. 5. Tap the **More** tab in the tab bar. -- [ ] Expected: The Fifth tab content is displayed, and the route key label reads `Fifth`. The Tab Bar updates to show that the More tab is selected. No new onMoreTabSelected event appears in the console log. +- [ ] Expected: The Fifth tab content is displayed, and the route key label reads `Fifth`. The Tab Bar updates to show that the More tab is selected. 6. Tap the **More** tab again. @@ -70,7 +68,7 @@ Other: Ongoing research. - [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. -1. Tap **"Select First"** and then tap **"Select Sixth"**. +10. Tap **"Select First"** and then tap **"Select Sixth"**. - [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. @@ -92,11 +90,11 @@ Other: Ongoing research. 2. Navigate between tabs using tab items from tab bar. -- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. No onMoreTabSelected event appears in the console log. +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. 3. Navigate between tabs using buttons from screen. -- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. No onMoreTabSelected event appears in the console log. +- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. --- @@ -104,11 +102,11 @@ Other: Ongoing research. 4. Select `First` tab and resize app to iPhone size view. -- [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. No onMoreTabSelected event appears in the console log. +- [ ] Expected: Tab bar shows **First**, **Second**, **Third**, **Fourth**, and **More**. The **First** tab is selected. The content area displays `First` as the route key. 5. Tap the **More** tab in the tab bar. -- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. A green toast appears at the bottom with the message onMoreTabSelected. In the console, the onMoreTabSelected event should be logged with selectedScreenKey,provenance and target values corresponding to last onTabSelected event. +- [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. A green toast appears at the bottom with the message `onMoreTabSelected`. 6. Tap **Fifth** in the More screen list. @@ -120,7 +118,7 @@ Other: Ongoing research. 8. Tap the **More** tab in the tab bar. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. No onMoreTabSelected event appears in the console log. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. 9. Tap the **More** tab again. @@ -128,9 +126,9 @@ Other: Ongoing research. 10. Tap **Second** tab in the tab bar. -- [ ] Expected: **Second** tab becomes active. Tab bar selection updates, and the route key label reads `Second`. In the console, the onTabSelected event should be logged with selectedScreenKey set to 'Second'. +- [ ] Expected: **Second** tab becomes active. Tab bar selection updates, and the route key label reads `Second`. A blue toast appears at the bottom with the message `onTabSelected:"Second"`. -11. Tap **"More"** tab bar item and select **"Sixth"** from the More list. +11. Tap **"More"** tab bar item and select **"Sixth"** from the More list. - [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. No crash or blank screen. @@ -140,9 +138,9 @@ Other: Ongoing research. 13. Resize app to full size. -- [ ] Expected: The More tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. In the console, the onTabSelected event should be logged with selectedScreenKey set to 'Second', taget set to the same value as in step 11, and provenance increased by 2. +- [ ] Expected: The More tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. -14. Select **Third** tab and switch to **Fifth** +14. Select **Third** tab and switch to **Fifth** - [ ] Expected: **Fifth** tab is selected, and the route key label reads `Fifth`. From 78ead25285aca087761b7577497231eb93dccc14 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Mon, 20 Apr 2026 12:17:57 +0200 Subject: [PATCH 14/16] removing spaces --- .../tabs/test-tabs-more-navigation-controller/scenario.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index c853c270d4..459065ae96 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -68,7 +68,7 @@ Other: Ongoing research. - [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. -10. Tap **"Select First"** and then tap **"Select Sixth"**. +10. Tap **"Select First"** and then tap **"Select Sixth"**. - [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. @@ -76,7 +76,7 @@ Other: Ongoing research. ### Round-trip navigation -11. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. +11. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth) show the More tab as selected. No visual glitches or stale route key labels. @@ -92,7 +92,7 @@ Other: Ongoing research. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. -3. Navigate between tabs using buttons from screen. +3. Navigate between tabs using buttons from screen. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. No visual glitches or stale route key labels. @@ -140,7 +140,7 @@ Other: Ongoing research. - [ ] Expected: The More tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. -14. Select **Third** tab and switch to **Fifth** +14. Select **Third** tab and switch to **Fifth** - [ ] Expected: **Fifth** tab is selected, and the route key label reads `Fifth`. From f2d611a646ca0cb6b0f0b6a3ce66cd0be7e94d6b Mon Sep 17 00:00:00 2001 From: lkuchno Date: Mon, 20 Apr 2026 12:33:47 +0200 Subject: [PATCH 15/16] step 7 for iphone and 11 for ipad was added to check repeated More tab selection --- .../scenario.md | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 459065ae96..0606872f5e 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -52,7 +52,11 @@ Other: Ongoing research. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -7. Tap **Sixth** in the More screen list. +7. Tap the **More** tab few more times. + +- [ ] Expected: The native More screen remains open, listing "Fifth" and "Sixth" as available tabs. No new green toast appears with an `onMoreTabSelected` message. + +8. Tap **Sixth** in the More screen list. - [ ] Expected: The **Sixth** tab content is shown. The route key label reads `Sixth`. @@ -60,15 +64,15 @@ Other: Ongoing research. ### Navigation using buttons -8. Tap **"Select Fourth"**. +9. Tap **"Select Fourth"**. - [ ] Expected: **Fourth** tab becomes active. Tab bar selection updates, and the route key label reads `Fourth`. -9. Tap **"Select Fifth"**. +10. Tap **"Select Fifth"**. - [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. -10. Tap **"Select First"** and then tap **"Select Sixth"**. +11. Tap **"Select First"** and then tap **"Select Sixth"**. - [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. @@ -76,7 +80,7 @@ Other: Ongoing research. ### Round-trip navigation -11. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. +12. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. - [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth) show the More tab as selected. No visual glitches or stale route key labels. @@ -124,34 +128,38 @@ Other: Ongoing research. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -10. Tap **Second** tab in the tab bar. +10. Tap the **More** tab few more times. + +- [ ] Expected: The native More screen remains open, listing "Fifth" and "Sixth" as available tabs. No new green toast appears with an `onMoreTabSelected` message. + +11. Tap **Second** tab in the tab bar. - [ ] Expected: **Second** tab becomes active. Tab bar selection updates, and the route key label reads `Second`. A blue toast appears at the bottom with the message `onTabSelected:"Second"`. -11. Tap **"More"** tab bar item and select **"Sixth"** from the More list. +12. Tap **"More"** tab bar item and select **"Sixth"** from the More list. - [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. No crash or blank screen. -12. Tap the **More** tab again. +13. Tap the **More** tab again. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -13. Resize app to full size. +14. Resize app to full size. - [ ] Expected: The More tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. -14. Select **Third** tab and switch to **Fifth** +15. Select **Third** tab and switch to **Fifth** - [ ] Expected: **Fifth** tab is selected, and the route key label reads `Fifth`. -15. Resize app to iPhone size view. +16. Resize app to iPhone size view. - [ ] Expected: **More** tab appears and becomes active, and the route key label reads `Fifth`. -16. Tap the **More** tab again. +17. Tap the **More** tab again. - [ ] Expected: The native More screen opens, listing **Fifth** and **Sixth** as available tabs. New green toast appear with `onMoreTabSelected` message. -17. Resize app to full size. +18. Resize app to full size. - [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Fifth** tab becomes active, and the route key label reads `Fifth`. From 1a421c018c5ee7223f25d5ca8f9e7f00451e53e8 Mon Sep 17 00:00:00 2001 From: lkuchno Date: Mon, 20 Apr 2026 13:52:41 +0200 Subject: [PATCH 16/16] removed Round-trip navigation, fix formatting of More tab in expc --- .../scenario.md | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md index 0606872f5e..332f81d9b4 100644 --- a/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md +++ b/apps/src/tests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md @@ -16,9 +16,9 @@ Other: Ongoing research. ## Note -- On iPad: The More tab only appears when the window is resized to a compact width size class. For iOS 18 and older, a Split View must be triggered to achieve this. +- On iPad: The **More** tab only appears when the window is resized to a compact width size class. For iOS 18 and older, a Split View must be triggered to achieve this. -- Toasts: A blue toast with the message `onTabSelected:""` should appear after each tab selection - except when the More tab list is displayed (which triggers a green `onMoreTabSelected` toast instead). In this scenario, this action is only mentioned in steps involving non-intuitive situations. +- Toasts: A blue toast with the message `onTabSelected:""` should appear after each tab selection - except when the **More** tab list is displayed (which triggers a green `onMoreTabSelected` toast instead). In this scenario, this action is only mentioned in steps involving non-intuitive situations. ## Steps - iPhone @@ -38,7 +38,7 @@ Other: Ongoing research. 3. Tap **Fifth** in the More screen list. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The **More** tab remains selected in the tab bar. 4. Tap **Third** tab in the tab bar. @@ -46,7 +46,7 @@ Other: Ongoing research. 5. Tap the **More** tab in the tab bar. -- [ ] Expected: The Fifth tab content is displayed, and the route key label reads `Fifth`. The Tab Bar updates to show that the More tab is selected. +- [ ] Expected: The Fifth tab content is displayed, and the route key label reads `Fifth`. The Tab Bar updates to show that the **More** tab is selected. 6. Tap the **More** tab again. @@ -70,19 +70,15 @@ Other: Ongoing research. 10. Tap **"Select Fifth"**. -- [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The More tab is selected in the tab bar. No crash or blank screen. +- [ ] Expected: **Fifth** tab content is shown, and the route key label reads `Fifth`. The **More** tab is selected in the tab bar. No crash or blank screen. -11. Tap **"Select First"** and then tap **"Select Sixth"**. +11. Tap **"Select First"**. -- [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. +- [ ] Expected: **First** tab becomes active. Tab bar selection updates, and the route key label reads `First`. ---- - -### Round-trip navigation - -12. Tap through tabs in this order using the select buttons: **First** → **Sixth** → **Second** → **Fifth** → **Third**. +12. Tap **"Select Sixth"**. -- [ ] Expected: Each transition updates the route key label and tab bar selection correctly. Tabs behind More (Fifth, Sixth) show the More tab as selected. No visual glitches or stale route key labels. +- [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The **More** tab is selected in the tab bar. ## Steps - iPad @@ -114,7 +110,7 @@ Other: Ongoing research. 6. Tap **Fifth** in the More screen list. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The More tab remains selected in the tab bar. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. The **More** tab remains selected in the tab bar. 7. Tap **Third** tab in the tab bar. @@ -122,7 +118,7 @@ Other: Ongoing research. 8. Tap the **More** tab in the tab bar. -- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - More tab is selected. +- [ ] Expected: The **Fifth** tab content is shown. The route key label reads `Fifth`. Tab bar selection updates - **More** tab is selected. 9. Tap the **More** tab again. @@ -138,7 +134,7 @@ Other: Ongoing research. 12. Tap **"More"** tab bar item and select **"Sixth"** from the More list. -- [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The More tab is selected in the tab bar. No crash or blank screen. +- [ ] Expected: **Sixth** tab content is shown, and the route key label reads `Sixth`. The **More** tab is selected in the tab bar. No crash or blank screen. 13. Tap the **More** tab again. @@ -146,7 +142,7 @@ Other: Ongoing research. 14. Resize app to full size. -- [ ] Expected: The More tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. +- [ ] Expected: The **More** tab disappears, and the tab bar shows all six tabs at the top of the screen. The **Second** tab becomes active, and the route key label reads `Second`. 15. Select **Third** tab and switch to **Fifth** @@ -162,4 +158,4 @@ Other: Ongoing research. 18. Resize app to full size. -- [ ] Expected: More tab disappear, tab bar shows all six tabs on top of the screen. **Fifth** tab becomes active, and the route key label reads `Fifth`. +- [ ] Expected: **More** tab disappear, tab bar shows all six tabs on top of the screen. **Fifth** tab becomes active, and the route key label reads `Fifth`.