chore(tests): burndown Onboarding POs (MMQA-2280) - #34816
Conversation
Migrate Onboarding page objects off dual-framework APIs onto Gestures/Matchers/Assertions and shrink the allowlist. 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. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 3 potential issues.
❌ 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 46f402b. Configure here.
Use Gestures.hideKeyboard for iOS-safe dismiss, restore checkStability on onboarding CTA taps, and shorten dismissIfPresent probe timeout. Co-authored-by: Cursor <cursoragent@cursor.com>
Matchers.getElementByText uses contains matching and can hit the parent Text instead of the tappable link, so Add Device never opens after QR sync SRP onboarding. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|
| Platform | Device | Reason | Recording |
|---|---|---|---|
| Android | Google Pixel 8 Pro (v14.0) | Quality gates exceeded | 📹 Watch |
🔬 App profiling check · Current run 31822837444 · Baseline (last run on main (scenario also failing)) run 30897750395 @ 67486d2
⚠️ No green baseline onmain— comparing against the latest usable profiling.
Summary:
ℹ️ API calls unavailable:
Network logs API error: Bad Request
Full metric table (+10% variance rules)
Disclaimer — allowed variance: a +10% margin over the baseline is permitted.
- If
Current <= Baseline + 10%, treated as acceptable noise.- If
Current > Baseline + 10%, Current and variance % are highlighted with⚠️ .
| Metric | Baseline | Current | Δ |
|---|---|---|---|
| CPU avg | 5.95% | 8.32% | +2.37 (+39.8%) |
| CPU max | 19.17% | 22.22% | +3.05 (+15.9%) |
| Memory avg | 586.2 MB | 706.73 MB | +120.53 (+20.6%) |
| Memory max | 722.61 MB | 858.12 MB | +135.51 (+18.8%) |
| Slow frames | 2.51% | 24.81% | +22.3 (+888.5%) |
| Frozen frames | 0% | 0% | 0 (0%) |
| ANRs | 0 | 0 | 0 (0%) |
| Issues | 2 | 2 | 0 (0%) |
| Critical issues | 1 | 1 | 0 (0%) |
| App size | 328.67 MB | 328.29 MB | -0.38 (-0.1%) |
Account creation after fresh install
| Platform | Device | Reason | Recording |
|---|---|---|---|
| Android | Google Pixel 8 Pro (v14.0) | Quality gates exceeded | 📹 Watch |
🔬 App profiling check · Current run 31822837444 · Baseline (last run on main (scenario also failing)) run 30897750395 @ 67486d2
⚠️ No green baseline onmain— comparing against the latest usable profiling.
Summary:
ℹ️ API calls unavailable:
Network logs API error: Bad Request
Full metric table (+10% variance rules)
Disclaimer — allowed variance: a +10% margin over the baseline is permitted.
- If
Current <= Baseline + 10%, treated as acceptable noise.- If
Current > Baseline + 10%, Current and variance % are highlighted with⚠️ .
| Metric | Baseline | Current | Δ |
|---|---|---|---|
| CPU avg | 13.86% | 6.2% | -7.66 (-55.3%) |
| CPU max | 19.43% | 20.39% | +0.96 (+4.9%) |
| Memory avg | 490.61 MB | 693.81 MB | +203.2 (+41.4%) |
| Memory max | 568.32 MB | 828.28 MB | +259.96 (+45.7%) |
| Slow frames | 3.1% | 7.98% | +4.88 (+157.4%) |
| Frozen frames | 0% | 0% | 0 (0%) |
| ANRs | 0 | 0 | 0 (0%) |
| Issues | 1 | 2 | +1 (+100%) |
| Critical issues | 1 | 1 | 0 (0%) |
| App size | 328.67 MB | 328.29 MB | -0.38 (-0.1%) |
✅ Passed Tests (5)
| Test | Platform | Device | Duration | Team | Recording |
|---|---|---|---|---|---|
| Measure Cold Start To Onboarding Screen | Android | Google Pixel 8 Pro (v14.0) | 3.15s | @metamask-mobile-platform | 📹 Watch |
| Onboarding Import SRP with +50 accounts, SRP 3 | Android | Google Pixel 8 Pro (v14.0) | 6.16s | @metamask-onboarding-team | 📹 Watch |
| Seedless Onboarding: Apple Login New User | Android | Google Pixel 8 Pro (v14.0) | 0.00s | @metamask-onboarding-team | 📹 Watch |
| Seedless Onboarding: Google Login New User | Android | Google Pixel 8 Pro (v14.0) | 2.35s | @metamask-onboarding-team | 📹 Watch |
| Seedless Onboarding: Telegram Login New User | Android | Google Pixel 8 Pro (v14.0) | 3.00s | @metamask-onboarding-team | 📹 Watch |
Branch: chore/mmqa-2280-onboarding-pos-burndown · Build: E2E · Commit: 21957ea · View full run
|




Description
Section 6/10 of the dual-framework burndown (MMQA-2238): migrate Onboarding page objects off the legacy dual-framework allowlist onto shared
Gestures/Matchers/Assertions.UnifiedGestures/encapsulated*/Playwright*dual APIsGestures.hideKeyboard()for Appium-safe keyboard dismiss (iOStapOutside)tests/framework/dual-framework-burndown.jsNo product/UI behavior changes; test infrastructure only.
Changelog
CHANGELOG entry: null
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-2280
Manual testing steps
Screenshots/Recordings
N/A — test-only page-object / gesture refactor; no user-facing UI changes.
Before
N/A
After
N/A
Pre-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
Note
Low Risk
Test infrastructure and page-object refactors only; no production app changes. Regression risk is confined to Appium/onboarding E2E stability if locators or keyboard dismiss behavior diverge from the old dual paths.
Overview
Continues the dual-framework burndown by migrating 15 Onboarding page objects off
UnifiedGestures,encapsulated/encapsulatedAction, and directPlaywright*APIs onto sharedMatchers,Gestures, andAssertions, with platform branches where needed (PlatformDetector, native XPath for iOS fields).Adds
Gestures.hideKeyboard()(Appium-only, delegates to Playwright with AndroidhideKeyboardand iOSmobile: hideKeyboard/tapOutside) and wires it into flows like SRP import and metrics opt-in. Removes those Onboarding PO paths fromdual-framework-burndown.jsso they are no longer allowlisted.Notable flow tweaks in migrated POs:
ExperienceEnhancerBottomSheet.dismissIfPresentuses a shorter visibility probe;CreatePasswordView/ImportWalletViewconsolidate keyboard and tap behavior on the unified gesture API;MetaMetricsOptIndrops the Detox-only content swipe before Continue.Reviewed by Cursor Bugbot for commit d7fab93. Bugbot is set up for automated code reviews on this repo. Configure here.