fix: stabilize Android Maestro replay interactions#805
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
c17a48b to
6385eb7
Compare
6385eb7 to
a518ea5
Compare
|
Addressed the Android Maestro replay investigation with the branch now at What changed:
Validation:
Residual risk:
|
|
Reviewed the change — design is sound (recovery state is consumed before any recursion, and tap/swipe remembers clear each other, so no double-recovery or retry loops). One non-regressive cleanup suggestion: Dedupe the Android Behavior is unchanged — the recovery kind is preserved via a computed Validation on that branch: focused bundle 110/110, and Also rename Nit (skip if not worth the churn): Generated by Claude Code |
|
Addressed the cleanup review in commit |
|
Final validation update for |
|
Merge-readiness cleanup pushed in What changed:
Validation after the cleanup:
Notes:
|
|
Zoom-out refactor pass pushed in What I changed:
Validation:
I did not split a new module in this pass. The next architecture step, if we keep growing this area, should be extracting Android assertion recovery from |
|
Summary
Improve Android Maestro replay stability for React Navigation CI flakes around tap-triggered transitions and horizontal tab swipes.
swipeScreen: direction left/rightthrough content-lane coordinates instead of the native gesture preset.assertVisiblewait successes with exact Maestro snapshot matching soAlbumsdoes not pass onPush albums.Validation
Local checks:
./node_modules/.bin/vitest run --project provider-integrationpassed: 19 files, 48 tests../node_modules/.bin/vitest run src/compat/maestro/__tests__/runtime-interactions.test.ts src/compat/maestro/__tests__/runtime-assertions.test.ts src/daemon/handlers/__tests__/session-replay-vars.test.tspassed outside the sandbox: 3 files, 111 tests../node_modules/.bin/oxfmt --check test/integration/provider-scenarios/android-test-suite.test.tspassed../node_modules/.bin/oxlint . --deny-warningspassed../node_modules/.bin/tsc -p tsconfig.jsonpassed.pnpm build:allpassed.Device/CI evidence:
Performance/scope note:
src/compat/maestro/*and is only used bytest --maestroreplay.