perf(runner): scrollUntilVisible strides back to back

Merged
OK
10d ago
+48-8

What and why

  • scrollUntilVisible slept POLL_INTERVAL_MS (100ms) after every swipe. A long scroll spent most of its time there (~435 strides in virtualized-table).
  • The sleep was hiding a race: Playwright's mouse.wheel resolves before the scroll reaches script, so an immediate read can see the pre-scroll DOM.
  • Fix at the source: the web engine's swipe now resolves after a rendered frame (wheelRendered, rAF then a task), and the runner reads again right away.
  • The fixture's raw mouse.wheel is unchanged.

Verified

Ran it locally: yes

  • apps/web-benchmark, e2e run --workers 1, 2 runs each. All 91 tests pass.
mainthis branch
serial117.0s / 117.9s89.0s / 89.3s
  • Mobile shares the loop: apps/mobile-benchmark tests/flows-lists.e2e.ts on an iOS 26.5 sim passes 7/7 on both, 244s on main vs 232s here (row 512 list: 155s vs 146s).