fix: stabilize Android Maestro replay reliability#799
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
d2965fb to
6c88b81
Compare
|
Addressed the external review feedback.
Residual risk: I ran a focused 3-file Maestro subset rather than the full prior 10-file subset. I did not change the real-timer/socket test inherited from #796 because that code is now on |
|
Additional dogfood/A-B validation after the safety question:
Conclusion from this pass: I could not reproduce a reliability regression from the global |
6c88b81 to
c4784bc
Compare
|
Follow-up after the reliability discussion:
Rationale: the A/B run did not show a React Navigation Maestro reliability problem with Validation after reverting the behavior change:
|
c4784bc to
be5f20e
Compare
|
Updated the branch for the React Navigation Android Maestro reliability follow-up. What changed:
Validation:
Residual risk: local emulator stress did not reproduce the GitHub Actions flake directly, so this is based on CI artifact analysis plus focused live validation rather than a failing local before/after repro. Expected test-time impact is minimal: the context fix is bookkeeping only; the stabilization change only adds one extra sample when the first post-gesture snapshot already exceeded the stabilization deadline. |
|
Follow-up pushed in |
1d6cd20 to
be5f20e
Compare
|
Summary
Rebased the PR onto current
mainand updated the scope to match the real delta: Android helper default/docs clarification plus Android Maestro replay reliability fixes.The helper-side
waitForIdleTimeoutMsdefault stays reliability-biased at500for direct/common snapshots, with docs/comments clarifying that this is a maximum bounded idle wait and that callers can still pass0when immediate capture during ongoing animation is preferred. The persistent-session timeout budget change is not part of this PR anymore because it already landed via #796.New runtime fixes:
assertVisiblenow records the visible selector context, so a followingtapOncan disambiguate duplicate labels on stacked/animated navigation surfaces.Touched-file count: 7. Scope is Android snapshot helper defaults/docs and Android Maestro replay stabilization.
Validation
Rebased checks passed: focused Vitest for post-gesture stabilization and Maestro replay context (
80tests), pluspnpm check:quick.Earlier checks for this final patch also passed before rebase:
pnpm check:unit(262unit files +8smoke tests),pnpm format, andpnpm build.Live Android validation with the local built CLI passed the focused React Navigation Maestro subset covering the CI failure and flaky navigation patterns:
6/6passed in80.0s(auth-flow,drawer-master-detail,native-stack-card-modal,showcase-material-top-tabs,stack-card-modal,tab-view-custom-tab-bar). The previously failingnative-stack-card-modal.ymlpassed in13.4s.Residual risk: the local emulator did not reproduce the GitHub Actions flake directly, so this fix is based on CI artifacts plus focused live validation rather than a before/after failing local repro.