-
Notifications
You must be signed in to change notification settings - Fork 38
Fix/maestro e2e flows for ios #2076
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
Changes from all commits
869966e
ee3b44a
5534a01
abbb0c1
0262939
a264d3d
77d894f
4e8371e
88f9e26
7d82003
2b3184d
38f881b
306ff9c
caafc42
58a51ef
bf15a10
390ef54
12aa52e
6becbf4
26dff98
eb993e9
383df5a
42bc875
6ae2155
09fecf9
8f69f89
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,77 +2,43 @@ appId: ${APP_ID} | |
| --- | ||
| # Catalog Item Detail Flow: Tap a catalog item and verify detail page | ||
| - waitForAnimationToEnd | ||
|
|
||
| # Navigate to Catalog tab (scroll-to-top if already active; normal tab tap otherwise) | ||
| - tapOn: | ||
| text: "Catalog" | ||
| - waitForAnimationToEnd | ||
|
|
||
| # iOS: returning to the Catalog tab can restore the search bar as first responder, | ||
| # overlaying the screen and suppressing the FlatList items from the accessibility tree. | ||
| # Dismiss it if visible. | ||
| - runFlow: | ||
| when: | ||
| platform: iOS | ||
| commands: | ||
| - runFlow: | ||
| when: | ||
| visible: | ||
| text: "Cancel" | ||
| commands: | ||
| - tapOn: | ||
| text: "Cancel" | ||
| - waitForAnimationToEnd | ||
|
|
||
| # Wait for catalog items to load via testID. | ||
| # catalog-browse-flow already loaded items (30s wait) so these should appear | ||
| # quickly. Use a generous timeout to handle the case where this flow is run | ||
| # standalone (fresh load). | ||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "catalog-item-card" | ||
| timeout: 30000 | ||
|
|
||
| # Tap the first visible catalog item by testID. | ||
| # Wait for items to load | ||
| - assertVisible: | ||
| text: ".*items.*" | ||
| # Tap first visible item using index | ||
| - tapOn: | ||
| id: "catalog-item-card" | ||
| id: "catalog:item-.*" | ||
| index: 0 | ||
|
Comment on lines
+9
to
+14
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wait for the target element ID before tapping.
Proposed change-- assertVisible:
- text: ".*items.*"
+- assertVisible:
+ id: "catalog-item"🤖 Prompt for AI Agents |
||
| - waitForAnimationToEnd | ||
|
|
||
| # Wait for the detail screen container to confirm navigation happened. | ||
| # The add-to-pack button is below the fold in a ScrollView; on iOS XCTest | ||
| # does not expose off-screen ScrollView children in the accessibility tree | ||
| # until they are scrolled into view. | ||
| # Use 30s: CI network latency can delay initial data load past 15s. | ||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "catalog-detail-content" | ||
| timeout: 30000 | ||
|
|
||
| # Scroll the detail screen to bring the action buttons into view. | ||
| # Scroll down to find action buttons | ||
| - scrollUntilVisible: | ||
| element: | ||
| id: "add-to-pack-button" | ||
| direction: DOWN | ||
| timeout: 15000 | ||
|
|
||
| - assertVisible: | ||
| id: "add-to-pack-button" | ||
| - scrollUntilVisible: | ||
| element: | ||
| id: "view-retailer-button" | ||
| direction: DOWN | ||
| speed: 10 | ||
| timeout: 10000 | ||
| - assertVisible: | ||
| id: "view-retailer-button" | ||
|
|
||
| # Go back | ||
| # iOS: XCTest synthetic swipes do not trigger UIScreenEdgePanGestureRecognizer. | ||
| # Tap the native navigation bar back button instead (accessibility label "Back"). | ||
| # Go back - platform specific | ||
| - runFlow: | ||
| when: | ||
| platform: iOS | ||
| platform: Android | ||
| commands: | ||
| - tapOn: | ||
| text: "Back" | ||
| - waitForAnimationToEnd | ||
| - back | ||
| - runFlow: | ||
| when: | ||
| platform: Android | ||
| platform: iOS | ||
| commands: | ||
| - back | ||
| - waitForAnimationToEnd | ||
| - tapOn: | ||
| text: ".*Back.*" | ||
|
Comment on lines
+38
to
+43
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The iOS back step is brittle with This assumes a visible English back label, which is not guaranteed. Add a deterministic back control testID in the screen/header and tap by 🤖 Prompt for AI Agents |
||
| - waitForAnimationToEnd | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,18 +1,26 @@ | ||
| appId: ${APP_ID} | ||
| --- | ||
| # Dashboard Tiles Flow: Verify dashboard tab loads | ||
| # Dashboard Tiles Flow: Verify dashboard loads with key tiles | ||
| - waitForAnimationToEnd | ||
|
|
||
| # Navigate to Dashboard tab | ||
| # Navigate to Dashboard (home tab) | ||
| - tapOn: | ||
| text: "Dashboard" | ||
|
Comment on lines
7
to
+8
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid localized text selector for dashboard tab tap. Line 8 taps by 🤖 Prompt for AI Agents |
||
| - waitForAnimationToEnd | ||
|
|
||
| # Verify we landed on the Dashboard screen (large-title header). | ||
| # NativeWindUI ListItem tile titles are not exposed as individual nodes in | ||
| # the iOS accessibility tree, so we only assert on the screen header here. | ||
| # Verify key dashboard tiles are present | ||
| - scrollUntilVisible: | ||
| element: | ||
| id: "dashboard-tile-packrat-ai" | ||
| direction: DOWN | ||
| - assertVisible: | ||
| text: "Dashboard" | ||
| id: "dashboard-tile-packrat-ai" | ||
|
|
||
| # Scroll to check more tiles | ||
| - scrollUntilVisible: | ||
| element: | ||
| text: ".*Pack.*" | ||
| direction: DOWN | ||
|
|
||
| # Return to stable state | ||
| - tapOn: | ||
|
|
||
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.
Locale-dependent text matching makes this flow fragile.
.*items.*andShowing.*itemsdepend on English copy. The screen text is translation-driven, so this can break with locale changes. Prefer testID-based assertions for the count/showing labels.🤖 Prompt for AI Agents