Skip to content

WebDriver endpoint-plan lowering has never been executed by a real driver #1585

Description

@thymikee

Follow-up to #1572.

#1572 changed what WebDriver sends for a one-contact gesture. Before, pointerActions() emitted one pointerMove per 16 ms planned sample; now the canonical plan carries only its endpoints, so it emits:

pointerMove duration=0 -> start
pointerDown
pointerMove duration=<authored duration> -> end
pointerUp

ADR 0013 records the reasoning: "the driver owns interpolation across that W3C tick". That is a fair reading of the W3C Actions algorithm, and for a conforming driver the result should be equivalent or smoother than the old stream.

The gap

No real driver has run it.

  • packages/provider-webdriver/src/webdriver-interactor.test.ts (added in fix(ios): preserve timed pan duration #1572) pins the action sequence against a stub WebDriverClient.
  • The cloud-webdriver-* provider scenarios in test/integration/provider-scenarios/ run against a fake server.
  • No workflow in .github/workflows/ touches a real grid.

So the behavior change shipped for the web and cloud paths on specification reasoning alone. The failure mode if the assumption is wrong is not an error — it is a gesture that lands as a jump, or does nothing, with a successful response.

Suggested resolution

One live pan against a reachable grid, checking that content actually moved and roughly honored the requested duration. Record the result in ADR 0013 next to the interpolation claim, so the assumption is either backed by evidence or replaced with an explicit endpoint-expansion lowering on the WebDriver side (mirroring what Android does in src/platforms/android/touch-plan.ts).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions