ci(e2e-pay): drop universal-link (deeplink) support from wallet E2E#402
Conversation
Mirrors reown-com/react-native-examples#563. WalletConnect/actions#109 removes the Universal Link pay test (pay_single_option_nokyc_deeplink) from the shared suite, so the wallet-side infra that existed only to make it pass is dead weight. Pay links still reach the wallet via NFC. - app config: stop registering pay.walletconnect universal links — remove the https App Links autoVerify intent-filter (AndroidManifest.xml) and the applinks:pay.walletconnect.* entries (Runner.entitlements). Kept lab.reown.com / appkit-lab.reown.com (real dApp deep-link-back / link-mode) and the NFC NDEF_DISCOVERED intent-filter. Dart pay-link handler is unchanged. - ci: build the Maestro iOS simulator app unsigned (CODE_SIGNING_ALLOWED=NO, drop DEVELOPMENT_TEAM / CODE_SIGN_STYLE) — signing existed only to keep the associated-domains entitlement for the UL test. ARCHS=x86_64 kept (MLKit). - ci: remove the associated-domains developer-mode entitlement patch, swcutil reset, AASA cache priming, and the swcutil show dumps. - Bump the three shared-flow pins (pay-tests, setup, permit2-reset) and the setup-script REF to the #109 head (28181b5) so the deeplink flow is no longer downloaded. Follow-up: re-point all pins to the merge commit once WalletConnect/actions#109 lands on master. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @ignaciosantise's task in 2m 33s —— View job Review Complete
Clean removal of dead CI infrastructure. The changes are well-scoped, well-commented, and correctly symmetric across Android/iOS/workflow. No breaking changes, no sensitive data exposed. 🔒 External Domain URL (Non-blocking) Found 1 issue(s)Issue 1: Action pins point to an unmerged PR head SHAID: ci-e2e-pay-tests-unmerged-sha-pin-a3f1 Context:
Recommendation: The PR description already calls this out as a known follow-up. Once # After #109 merges, replace all occurrences of:
uses: WalletConnect/actions/maestro/pay-tests@28181b5f133836380d2d9bb8ff06af5c3234fb9d
# with the stable post-merge SHA, e.g.:
uses: WalletConnect/actions/maestro/pay-tests@<merge-commit-sha> |
There was a problem hiding this comment.
Pull request overview
Removes Universal Link/App Link infrastructure that existed solely for the WalletKit Flutter Maestro Pay E2E deep-link flow, aligning this repo with the updated shared pay test suite (where the UL flow has been removed). This keeps pay-link routing logic intact while ensuring links are expected to arrive via non-UL paths (e.g., NFC on Android), and simplifies iOS CI by removing signing requirements that were only needed for associated-domains entitlements.
Changes:
- Remove pay.* associated-domains (iOS) and pay.* https App Links autoVerify intent-filter (Android), keeping NFC routing support.
- Update iOS pay E2E CI build to be unsigned and delete UL-related simulator priming/plumbing steps.
- Repin shared Maestro pay test flow/setup actions and the local setup script to the updated shared suite ref.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
scripts/setup-maestro-pay-tests.sh |
Updates the default pinned ref for downloading shared Maestro pay flows. |
packages/reown_walletkit/example/lib/dependencies/deep_link_handler.dart |
Adds clarifying comment about pay-link handling after removing UL/App Link registration. |
packages/reown_walletkit/example/ios/Runner/Runner.entitlements |
Removes pay.* applinks: entries from associated-domains entitlement. |
packages/reown_walletkit/example/android/app/src/main/AndroidManifest.xml |
Removes pay.* https App Links autoVerify intent-filter; retains NFC NDEF intent-filter. |
.github/workflows/ci_e2e_pay_tests.yml |
Repins shared Maestro actions; removes UL-related iOS simulator steps and builds unsigned. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Pay links reach the wallet via NFC (the NDEF_DISCOVERED intent-filter on | ||
| // Android / associated NFC delivery on iOS). Universal-link registration for | ||
| // these hosts was removed from AndroidManifest.xml / Runner.entitlements, so | ||
| // on native these URLs now arrive via NFC rather than a tapped App Link. |
WalletConnect/actions#109 merged, so replace the temporary #109-head pin (28181b5) with the merge commit (4be7c01) across the workflow pins and the setup-maestro-pay-tests.sh default REF. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @ignaciosantise's task in 3m 43s —— View job 🔄 Incremental Review: (since first review on 2026-07-06) Resolved from previous review:
🔒 External Domain URL (Non-blocking) Found 2 issue(s)Issue 1: iOS comment claims NFC delivery that doesn't exist on the platformID: deep-link-handler-ios-nfc-comment-inaccurate-c2f1 Context:
Recommendation: Drop the iOS-specific NFC claim; describe only what is accurate: // Pay links are routed through the payment flow regardless of how they arrive
// (NFC on Android via NDEF_DISCOVERED, or other delivery on iOS). Universal-link
// registration for pay.walletconnect.* was removed from AndroidManifest.xml /
// Runner.entitlements, so the handler here is the sole routing point.Also noted by Copilot reviewer. Fix this → Issue 2: iOS Maestro step inlines secrets as CLI args; Android uses safer env-block patternID: dcl-ci-e2e-pay-tests-ios-secrets-inline-cmd-3f8a Context:
Recommendation: Mirror the Android pattern — move secrets to a step-level - name: Run Maestro iOS tests
id: maestro_ios
env:
WPAY_CUSTOMER_KEY_SINGLE_NOKYC: ${{ secrets.WPAY_CUSTOMER_KEY_SINGLE_NOKYC }}
WPAY_MERCHANT_ID_SINGLE_NOKYC: ${{ secrets.WPAY_MERCHANT_ID_SINGLE_NOKYC }}
WPAY_CUSTOMER_KEY_MULTI_NOKYC: ${{ secrets.WPAY_CUSTOMER_KEY_MULTI_NOKYC }}
WPAY_MERCHANT_ID_MULTI_NOKYC: ${{ secrets.WPAY_MERCHANT_ID_MULTI_NOKYC }}
WPAY_CUSTOMER_KEY_MULTI_KYC: ${{ secrets.WPAY_CUSTOMER_KEY_MULTI_KYC }}
WPAY_MERCHANT_ID_MULTI_KYC: ${{ secrets.WPAY_MERCHANT_ID_MULTI_KYC }}
run: |
maestro test \
--env APP_ID=com.walletconnect.flutterwallet.internal \
--env WPAY_CUSTOMER_KEY_SINGLE_NOKYC=$WPAY_CUSTOMER_KEY_SINGLE_NOKYC \
...Note: this pattern was pre-existing before this PR but is worth fixing while touching this file. |
Summary
Flutter mirror of reown-com/react-native-examples#563.
Universal linking is no longer in scope for the wallet Maestro pay suite — WalletConnect/actions#109 removes the Universal Link pay test (
pay_single_option_nokyc_deeplink.yaml) from the shared suite. This PR strips the infrastructure in this repo that existed only to make that test pass. Pay links still reach the wallet via NFC.Changes
pay.walletconnectuniversal links — remove thehttpsApp LinksautoVerifyintent-filter (AndroidManifest.xml) and theapplinks:pay.walletconnect.*entries (ios/Runner/Runner.entitlements). Keptlab.reown.com/appkit-lab.reown.com(real dApp deep-link-back / link-mode) and the NFCNDEF_DISCOVEREDintent-filter. The Dart pay-link handler (deep_link_handler.dart) is unchanged — pay links still route to the pay flow, they just arrive via NFC now.ci_e2e_pay_tests.yml):CODE_SIGNING_ALLOWED=NO, dropDEVELOPMENT_TEAM/CODE_SIGN_STYLE/PROVISIONING_PROFILE_SPECIFIER. Signing (dev, never prod) was only needed so theapplinks:associated-domains entitlement survived for the UL test.ARCHS=x86_64is kept — that's the mobile_scanner/MLKit simulator-slice workaround, unrelated to UL.swcutil reset, the AASA-cache priming loop, and theswcutil showdiagnostic dumps.pay-tests,setup,permit2-reset(both Android + iOS legs) and thesetup-maestro-pay-tests.shdefaultREFre-pointed to the 109 merge commit (4be7c01) so the deeplink flow is no longer downloaded.No web leg /
WEB_SKIP_FLOWSexists in this suite (unlike RN), so nothing there to change.🤖 Generated with Claude Code