fix: remove Android ADB swipe fallbacks#1243
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
|
Scope expanded after the review follow-up: scroll and long-press were the two remaining production users of raw I intentionally left snapshot recovery, text-input compatibility, selector recovery, and app-launch heuristics unchanged: they are separate reliability/lookup contracts rather than touch-execution fallbacks, so removing them would not complete this migration and would reduce supported behavior. |
|
Coordinator + independent review at
No branch changes or fixer were dispatched. |
|
Addressed all four points in
Local validation is green: focused suites 64/64, full provider/coverage aggregate 4,097/4,097 across 472 files, plus typecheck, lint, format, layering, fallow, helper packaging, and build. A fresh comparison against current |
|
Re-review at 6c2efd8 found three remaining production-contract blockers despite green CI and the live helper evidence:
No fixer was dispatched. |
6c2efd8 to
dae33d4
Compare
|
Addressed the end-to-end review in
Live evidence on emulator-5556: helper 0.19.3 scroll injected 8 events and returned the executed absolute path |
|
Current-head re-review at 96b24e1 found that #1243 is still not ready:
The injected-coordinate mismatch itself is fixed, and the live helper evidence remains useful. No fixer was dispatched. |
96b24e1 to
cab53f6
Compare
|
Addressed all three current-head findings in
The branch is rebased onto current |
|
Current-head review at cab53f6 confirms the three production fixes and all checks are green after rerunning the unrelated settle-observation contention failure. One focused regression gap remains before readiness: directly assert that runAndroidMultiTouchHelperGesture uses timeoutMs 135000 for a 120000ms request. The current helper timeout test only exercises a short gesture and expects the 45000ms floor; reverting the helper to its old fixed 45s timeout would still pass the new outer-envelope and longpress-shape tests. No fixer was dispatched. |
|
Addressed the final regression gap in |
|
Summary
Route Android gesture plans, scroll, and long-press through one planned-touch boundary: provider-native touch when available, otherwise the bundled instrumentation helper. This removes every production
adb shell input swipepath and surfaces helper failures instead of silently executing a lower-fidelity fallback.The Android-local executor accepts the cross-platform
GesturePlanplus a stationary long-press plan. Touch providers own a paired touch/viewport capability; helper long-press skips the unused viewport round-trip, while provider long-press receives its validated provider viewport. Helper install/manifest ownership is split from gesture transport to keep modules local and bounded.Scroll remains viewport-planned and returns the absolute coordinates it executes against a coherent zero-origin reference frame. Public 0–15 ms scroll durations remain accepted on Android, normalize to the planner's 16 ms physical minimum, and report the executed duration. The long-press request envelope is 210 seconds so helper identity/install work, snapshot-helper handoff, a 120-second hold, and helper completion overhead all fit on a cold route.
On bare ADB, scroll and long-press require the bundled touch helper and
UiAutomation; installation or runtime failure is reported directly. The optional follow-up to reuse one helper preparation across scroll viewport and injection is tracked in #1250 with a no-bundle-growth acceptance criterion.Closes #690.
Validation
pnpm check:affected --base origin/main --run: all runnable checks passedorigin/main: -4 B raw JS, -2 B gzipandroid-multitouch-helper0.19.3, 8 injected events, and absolute coordinates(672,1546) -> (672,1446)