Skip to content

feat(maestro): shared WalletConnect Pay E2E test actions#77

Draft
ignaciosantise wants to merge 11 commits intomasterfrom
feat/maestro-pay-actions
Draft

feat(maestro): shared WalletConnect Pay E2E test actions#77
ignaciosantise wants to merge 11 commits intomasterfrom
feat/maestro-pay-actions

Conversation

@ignaciosantise
Copy link
Copy Markdown

@ignaciosantise ignaciosantise commented Apr 7, 2026

Summary

  • Add three reusable composite actions for Maestro Pay E2E testing across wallet platforms (React Native, Kotlin, Swift, Flutter)
    • maestro/setup — Install Maestro CLI
    • maestro/pay-tests — Copy 11 test flows + 3 sub-flows + 2 helper scripts into consumer workspace
    • maestro/run — Execute tests with WalletConnect Pay secret passthrough + artifact upload
  • Add comprehensive README documenting all 28 required testIDs, 6 merchant secrets, test input field requirement (with RN reference implementation), test catalog, and iOS/Android usage examples

Context

Built from the Maestro E2E tests developed in react-native-examples across PRs #452, #455, #457, #458. These tests cover the full WalletConnect Pay lifecycle: happy paths (single/multi option, KYC/no-KYC), error handling (insufficient funds, expired, cancelled), navigation (back/close buttons), edge cases (double scan, deep links), and server-side cancellation scenarios.

Test plan

  • Point a wallet sample's CI workflow at WalletConnect/actions/maestro/setup@feat/maestro-pay-actions, WalletConnect/actions/maestro/pay-tests@feat/maestro-pay-actions, and WalletConnect/actions/maestro/run@feat/maestro-pay-actions
  • Trigger E2E workflow on iOS — confirm flows are copied, Maestro installs, tests run, artifacts upload
  • Trigger E2E workflow on Android — confirm inline maestro test command works with copied flows
  • Verify README renders correctly on GitHub

🤖 Generated with Claude Code

Add three reusable composite actions for Maestro Pay E2E testing across
wallet platforms (React Native, Kotlin, Swift, Flutter):

- maestro/setup: Install Maestro CLI
- maestro/pay-tests: Copy 11 test flows + 3 sub-flows + 2 scripts
- maestro/run: Execute tests with secret passthrough + artifact upload

Includes README documenting all 28 required testIDs, 6 merchant secrets,
test input field requirement with RN reference implementation, test catalog,
and iOS/Android usage examples.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@claude
Copy link
Copy Markdown

claude bot commented Apr 7, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

@ignaciosantise
Copy link
Copy Markdown
Author

@claude review

@claude
Copy link
Copy Markdown

claude bot commented Apr 7, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds reusable GitHub composite actions and shared Maestro flows to standardize WalletConnect Pay E2E testing across wallet implementations (RN/Kotlin/Swift/Flutter), plus documentation describing required UI testIDs and CI setup.

Changes:

  • Added maestro/setup, maestro/pay-tests, and maestro/run composite actions for installing Maestro, copying shared flows into a workspace, and running Pay tests with secrets + artifact upload.
  • Added shared Maestro Pay test catalog (flows, sub-flows, helper scripts) covering core payment lifecycle and error/edge cases.
  • Added a README documenting required testIDs, secrets, and iOS/Android usage patterns.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
maestro/setup/action.yml Composite action to install Maestro CLI (optionally pinned version).
maestro/run/action.yml Composite action to run Maestro tests with WPAY env passthrough and upload artifacts/logs.
maestro/pay-tests/action.yml Composite action to copy shared Pay flows/scripts into a consumer repo workspace.
maestro/pay-tests/README.md Documentation for required testIDs, secrets, and CI usage examples.
maestro/pay-tests/.maestro/scripts/create-payment.js Maestro JS helper to create a Pay payment via API and expose gateway URL/payment id.
maestro/pay-tests/.maestro/scripts/cancel-payment.js Maestro JS helper to cancel a Pay payment via API.
maestro/pay-tests/.maestro/pay_single_option_nokyc.yaml Flow: single-option, no-KYC happy path.
maestro/pay-tests/.maestro/pay_single_option_nokyc_deeplink.yaml Flow: deep link entry happy path for single-option, no-KYC.
maestro/pay-tests/.maestro/pay_multiple_options_nokyc.yaml Flow: multi-option selection (no KYC) + verification.
maestro/pay-tests/.maestro/pay_multiple_options_kyc.yaml Flow: multi-option selection with KYC webview steps.
maestro/pay-tests/.maestro/pay_kyc_back_navigation.yaml Flow: validates back/close header actions during KYC.
maestro/pay-tests/.maestro/pay_insufficient_funds.yaml Flow: insufficient funds error path.
maestro/pay-tests/.maestro/pay_expired_link.yaml Flow: expired payment link error path using a hardcoded URL.
maestro/pay-tests/.maestro/pay_double_scan.yaml Flow: pay once, then re-open the same link to verify “already completed” handling.
maestro/pay-tests/.maestro/pay_cancelled.yaml Flow: cancelled payment error path using a hardcoded URL.
maestro/pay-tests/.maestro/pay_cancel_from_review.yaml Flow: cancel server-side while on review screen, then attempt to pay.
maestro/pay-tests/.maestro/pay_cancel_from_kyc.yaml Flow: cancel server-side during KYC, then proceed to observe cancelled result.
maestro/pay-tests/.maestro/flows/pay_open_via_deeplink.yaml Sub-flow: open the generated gateway URL via deep link.
maestro/pay-tests/.maestro/flows/pay_open_and_paste_url.yaml Sub-flow: launch app, open scanner modal, paste URL via test input.
maestro/pay-tests/.maestro/flows/pay_confirm_and_verify.yaml Sub-flow: tap Pay, wait for success, dismiss result.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

ignaciosantise and others added 2 commits April 7, 2026 15:59
- Add `set -euo pipefail` to setup and pay-tests action scripts
- Add explicit env var checks in create-payment.js (matching cancel-payment.js)
- Remove non-existent maestro-output.log from Android artifact upload example

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add setup and run instructions for local development, including
the auto-download script and .env.maestro secrets file pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown

@jakubuid jakubuid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love this!

@ignaciosantise ignaciosantise marked this pull request as draft April 8, 2026 13:26
ignaciosantise and others added 8 commits April 8, 2026 10:33
- Add extendedWaitUntil after launchApp in paste-URL flow to wait for
  app to fully load before tapping
- Use stopApp + openLink in deeplink flow instead of bare openLink to
  avoid Android stale intent race condition

Ported from reown-com/react-native-examples#467

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bump extendedWaitUntil timeout for "Add your personal details" from 10s
to 30s in all three KYC flows — the webview can be slow to load on CI.

Ported from reown-com/react-native-examples#467

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants