fix(test): repair Android replay fixtures against live device reality - #1538
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks: no changes in the largest emitted chunks. |
|
Reviewed head
The package-id fix and Android composed Catalog label are otherwise sound. No |
Three Android fixture defects from the #1482/#1484 full-tier suite, none of which ever executed in CI (both nightlies since failed on adb infra before the suite ran). All three verified live on a fresh API 36 emulator with a pixel_7-geometry AVD and a Release fixture APK: - 01-navigation-scroll.ad clicked label=Catalog, but the expo-router NativeTabs cart badge leaks '0 new notifications' into the tab's content description even while hidden, and unselected native tabs expose no child text node - exact match can never hit. Target the composed label the device actually exposes (deterministic at fixture start: cart is 0 after --relaunch). The badge does not leak on iOS, so the iOS twin keeps label="Catalog". - checkout-form-android.ad opened by iOS display name 'Agent Device Tester'; Android open resolves packages (the APK label is 'Agentdevicelab'), so APP_NOT_INSTALLED was guaranteed. Use the package id, matching gesture-lab-android.ad. - gesture-lab-android.ad aimed every gesture at y=700, above the gesture card (its targets span y754-1329 on pixel_7 geometry; the home screen gained content above the card since authoring). Re-aim pans inside the exact-two-pointer zone, flings on the image clear of that zone, and pinch/rotate/transform at the card center. Verified: full suite passes 2/2 via the public test command (20 + 32 steps replayed). Refs #1478
…etry The re-aimed coordinates are validated on CI's profile (pixel_7 1080x2400 @420); any booted emulator can receive them via test-app:replay:android, so the fixture and README now say which geometry the numbers mean and what a mismatch failure looks like. The checkout twin is selector-driven and unconstrained. Co-Authored-By: Claude <noreply@anthropic.com>
|
Addressed in I stopped short of a hard constraint (e.g. asserting Generated by Claude Code |
5db5831 to
0713260
Compare
|
Re-reviewed exact head The corrected fixture bytes remain identical to the cited live Android run, and each regression edit is guarded by a positive state/count wait or deterministic launch/selector failure. All exact-head CI is green, including replay provenance, integration, coverage, Android smoke, and release builds. No blocking findings — ready for human merge review. |
|
Three Android fixture defects from the #1482/#1484 full-tier suite, none of which ever executed in CI (both nightlies since failed on adb infra before the suite ran). All three verified live during the #1525 evidence arc on a fresh API 36 emulator with pixel_7 geometry and a Release fixture APK:
label=Catalog, but the expo-router NativeTabs cart badge leaks '0 new notifications' into the tab's content description even while hidden, and unselected native tabs expose no child text node — exact match can never hit. Target the composed label the device actually exposes (deterministic at fixture start: cart is 0 after--relaunch). The badge does not leak on iOS, so the iOS twin keepslabel="Catalog".openresolves packages (the APK label is 'Agentdevicelab'), so APP_NOT_INSTALLED was guaranteed. Use the package id, matching gesture-lab-android.ad.testcommand (20 + 32 steps replayed).Validation
Live evidence from the #1525 arc (2026-07-31, documented in its PR comment): consolidated suite green 2/2 on emulator-5556 (Pixel_7_CI, API 36, freezer disabled), checkout 20/20 + gesture-lab 32/32 steps replayed through the public
testcommand, JUnit non-empty. These fixture fixes are also a prerequisite for thetest-app:replay:androidlive-evidence requirement on #1536.Refs #1478