NEC-301: The e2e harness can send a click or keystroke twice when WebDriver retries it #304
No reviewers
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda!304
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-nec-301-the-e2e-harness-can-send-a-click-or-keys"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task: NEC-301 — https://projectron.nerchure.com/tasks/320
webdriver re-sends a failed command up to three times. NEC-300 made scripts run at most once, but a click or keystroke that had already landed when its error came back was sent again, doubling an Enter or a typed word, which looks like a sync duplication. The harness now fails an input on its first error answer, through webdriver's transformResponse hook, with an error that names the input, the driver's error and NEC-301, and keeps the driver's error name so webdriverio's own recoveries (wait until clickable, scroll and re-click, refetch a stale element) still run. The success check is a port of webdriver's isSuccessfulResponse. A request.retry listener was tried first and cannot work for element commands (webdriverio wraps an element's emit as an async command). Timeouts, broken sockets and unreadable 5xx answers never reach the hook and are still re-sent; the spec lists them as limits, accepted by the user. Three Kanban tests that clicked a card editor while a span still covered it relied on the old back-off and now wait for the editor to be clickable.
Spec:
docs/changes/NEC-301-refuse-input-resend/spec.mdChangelog
NONE