test(e2e): strengthen Appium Snap helpers ahead of remaining migrations - #34054
Conversation
Shared WebView/Appium utilities, TestSnaps page objects/selectors, snap flows, and SmokeSnaps shard scaling so remaining Detox→Appium snap migrations can land as specs-only. Co-authored-by: Cursor <cursoragent@cursor.com>
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 139b1f6. Configure here.
… helper Re-merge PlaywrightGestures onto latest main so the named export used by unit tests is not dropped when adding typeViaIosKeyboard. Co-authored-by: Cursor <cursoragent@cursor.com>
Gate Appium WebView.blurActiveElement behind FrameworkDetector so Detox SmokeSnaps signing flows still blur via the main Detox WebView script. Co-authored-by: Cursor <cursoragent@cursor.com>
| * Dialog Snap custom input. iOS uses textfield selector as testID | ||
| * is not exposed in page source. | ||
| */ | ||
| async fillCustomDialogInput(text: string) { |
There was a problem hiding this comment.
Should we move this into TestSnaps.selectors.ts?
There was a problem hiding this comment.
Moved the locator strings (testIDs / iOS XPath) into TestSnaps.selectors.ts; left resolve/encapsulated in the page object.
| `.resourceIdMatches(".*snap-ui-renderer__selector-item.*").childSelector(new UiSelector().text("${text}"))`, | ||
| ), | ||
| ios: () => | ||
| PlaywrightMatchers.getElementByXPath( |
There was a problem hiding this comment.
Same as above, can it be moved into TestSnaps.selectors.ts?
There was a problem hiding this comment.
Same here — selector-item ID + Android/iOS locator string builders now live in TestSnaps.selectors.ts; encapsulated stays in the page object.
Keep resolve/encapsulated wiring in the page object; hoist custom-input and selector-item IDs/XPaths into TestSnaps.selectors.ts. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|




Summary
WebView,Utilities, gestures, emulator helpers) used by Snap smokes.SmokeSnapsshards (and Android timeout) ahead of migrating the remaining Detox snap suites.Split from #33898. Specs migration and Detox CI removal follow in stacked PRs.
Test plan
SmokeSnapsCI still passes on existing Appium snap suites with 8 shardsSmokeSnapsjobs remain unchanged (still covering remaining Detox suites)Made with Cursor