-
-
Notifications
You must be signed in to change notification settings - Fork 643
refactor(tests): test-tabs-tab-bar-more-navigation-controller + scenario #3861
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
LKuchno
wants to merge
21
commits into
main
Choose a base branch
from
@lkuchno/test-tabs-tab-bar-more-navigation-controller
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+169
−2
Open
Changes from 16 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
39f85ca
refactor(tests): test-tabs-tab-bar-more-navigation-controller + scenario
LKuchno 650f80a
Merge branch 'main' of github.com:software-mansion/react-native-scree…
LKuchno 519b347
scenario extension
LKuchno eeb6b94
misspeling correct
LKuchno 81bee95
scenario for iPad in full size app - no More tab- added
LKuchno e796a44
Merge branch 'main' of github.com:software-mansion/react-native-scree…
LKuchno 2beb2b3
Merge branch 'main' of github.com:software-mansion/react-native-scree…
LKuchno 1b5a8b7
update after cahnges in prop works
LKuchno e9e24f7
scenario first update
LKuchno ddb1501
scenario update and toast message
LKuchno 0569ee9
start adding checks on event states in console log
LKuchno 78597e7
update screnario description, and add checks on cosole log onMoreTabS…
LKuchno a05d6d8
Merge branch 'main' of github.com:software-mansion/react-native-scree…
LKuchno 07298f5
change in OS section
LKuchno 25087f6
final version of scenario
LKuchno 4ee453c
Merge branch 'main' of github.com:software-mansion/react-native-scree…
LKuchno 1c29f34
Update apps/src/tests/single-feature-tests/tabs/test-tabs-more-naviga…
LKuchno 634c619
onTabSelected added to display toast on screen, scenario updated to d…
LKuchno 78ead25
removing spaces
LKuchno f2d611a
step 7 for iphone and 11 for ipad was added to check repeated More ta…
LKuchno 1a421c0
removed Round-trip navigation, fix formatting of More tab in expc
LKuchno File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
159 changes: 159 additions & 0 deletions
159
...ests/single-feature-tests/tabs/test-tabs-more-navigation-controller/scenario.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,159 @@ | ||
| # Test Scenario: More Navigation Controller | ||
|
|
||
| ## Details | ||
|
|
||
| **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:** iOS: 18.6 and 26.2 | ||
|
|
||
| ## E2E test | ||
|
|
||
| Other: Ongoing research. | ||
|
|
||
| ## Prerequisites | ||
|
|
||
| - iOS device or simulator: iPhone and iPad (iOS18.6 and iOS26.2) | ||
|
|
||
| ## 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. | ||
|
LKuchno marked this conversation as resolved.
Outdated
|
||
|
|
||
| - 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 | ||
|
|
||
| ### Baseline | ||
|
|
||
| 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. | ||
|
|
||
| --- | ||
|
|
||
| ### 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. 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. 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, and the route key label reads `Third`. | ||
|
|
||
| 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. | ||
|
|
||
| 6. 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. | ||
|
|
||
| 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, and the route key label reads `Fourth`. | ||
|
|
||
| 9. 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. | ||
|
|
||
| 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. | ||
|
|
||
| --- | ||
|
|
||
| ### Round-trip navigation | ||
|
|
||
| 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. | ||
|
|
||
| ## Steps - iPad | ||
|
|
||
| ### Baseline - without More navigation controler displayed | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| --- | ||
|
|
||
| ### More tab — tap interaction with app resizing | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 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, 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. 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 **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'. | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 14. 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. | ||
|
|
||
| - [ ] Expected: **More** tab appears and becomes active, and the route key label reads `Fifth`. | ||
|
|
||
| 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. | ||
|
|
||
| 17. 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`. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we could add here test flows with resizing the app on iPad.
There is at least one more behaviour worth documenting.
When more navigation controller is selected on iPad (More list), and we resize the app, so that the "bottom tab bar" disappears, the previously selected tab is selected.
It would be ideal if we also were able to test navigation state updates in such case. Let's talk about this.