test: migrate MMConnect multichain e2e from performance BrowserStack to Appium smoke CI#33380
test: migrate MMConnect multichain e2e from performance BrowserStack to Appium smoke CI#33380chrisleewilcox wants to merge 12 commits into
Conversation
Migrate the active connection-multichain spec to smoke-appium with e2e fixtures and wire appium-mmconnect-android-smoke on google_apis for Chrome. 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. |
Format mm-connect utils for CI format:check. Harden Android Chrome launch (clear → FRE flags → force-stop) and open dapp URLs via VIEW intent to avoid flaky omnibox selectors on google_apis emulators. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
PlaywrightElement exposes isVisible, not isDisplayed — fixes lint:tsc. Co-authored-by: Cursor <cursoragent@cursor.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #33380 +/- ##
=======================================
Coverage 84.40% 84.40%
=======================================
Files 6133 6133
Lines 163917 163918 +1
Branches 40007 40020 +13
=======================================
+ Hits 138354 138360 +6
+ Misses 16054 16052 -2
+ Partials 9509 9506 -3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
CI loaded the playground in Chrome but Appium selected MetaMask's webview when URL metadata was stale. Prefer WEBVIEW_chrome for http dapps, accept emulator host aliases, and fix VIEW intent -p packaging. Co-authored-by: Cursor <cursoragent@cursor.com>
After opening the dapp via VIEW intent, dismiss leftover Chrome dialogs and only skip omnibox navigation when the NTP search placeholder is gone. Co-authored-by: Cursor <cursoragent@cursor.com>
Appium switchContext(WEBVIEW_chrome) hangs during Chromedriver session creation on google_apis Chrome 113 despite a live debugger URL. Bypass Chromedriver for smoke by attaching over CDP and use localhost+adb reverse. Co-authored-by: Cursor <cursoragent@cursor.com>
🧪 Flaky unit test detection✅ All previously detected unit test flakiness issues in this PR have been fixed. This check is informational only and does not block merging. |
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Synthetic JS clicks never reach MetaMask because the SDK defers metamask:// navigation; use trusted CDP mouse input and Appium deepLink. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
Shared infrastructure changes:
The shared infrastructure changes (PlaywrightContextHelpers, EmulatorConfigBuilder) could theoretically affect other Appium smoke tests, but the changes are carefully scoped to Chrome/MMConnect scenarios with fallback paths preserved. No app code was changed, so broader smoke suites are not warranted. Performance Test Selection: |
|



Description
Add a thin-slice Appium smoke path for the active MMConnect multichain browser test, using the standard e2e CI wallet (fixtures) instead of the BrowserStack baked-SRP performance path.
This is a reset of the earlier approach (#31937, closed). Per team guidance: fixtures +
scenarioType: 'e2e', CI mocking viawithFixtures/DEFAULT_MOCKS, and Chrome on CI viagoogle_apis.SmokeMMConnecttag andyarn appium-smoke:mmconnect:androidtests/smoke-appium/mm-connect/connection-multichain.spec.tswithwithFixtures, Solana permission fixture, e2e login, andsafelyOnboardChrome: trueappium-mmconnect-android-smoke(1 shard, 35 min) withandroid-tag: google_apisNot in this PR: removing MMConnect from the performance workflow, migrating the other 11 skipped specs (WAPI-1511).
Changelog
CHANGELOG entry: null
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-1982
Manual testing steps
Screenshots/Recordings
No app UI changes — CI/test infrastructure thin slice. Evidence is the before/after migration below.
Before
Active MMConnect multichain test lived only in the performance BrowserStack pipeline:
tests/performance/mm-connect/connection-multichain.spec.tsPerformanceloginToAppPlaywright()→E2E_PASSWORDwithFixtures)After
Thin slice on Appium smoke CI with the standard e2e wallet:
tests/smoke-appium/mm-connect/connection-multichain.spec.tsSmokeMMConnectwithFixtures+FixtureBuilder().withSolanaAccountPermission()+scenarioType: 'e2e'DEFAULT_MOCKSviawithFixturesappium-mmconnect-android-smoke(google_apisfor Chrome)safelyOnboardChrome: truePre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Made with Cursor