Problem
Three tests in `tests/e2e/delay-options.spec.ts` plus one in `tests/e2e/feature-demos.spec.ts` are skipped citing "complex delay simulation" or unreliable timer behavior:
- `delay-options.spec.ts:6` — should delay drag start with delay option
- `delay-options.spec.ts:43` — should only delay on touch with delayOnTouchOnly
- `delay-options.spec.ts:90` — should cancel delayed drag if moved beyond threshold
- `feature-demos.spec.ts:228` — requires holding for delay period before drag starts
Hypothesis
The tests use `page.waitForTimeout` to bracket the delay window, but Playwright's synthetic mouse events don't reliably interact with our `setTimeout`-based delay timer when the timing is tight.
Suggested approach
- Use Playwright's clock API (`page.clock.install()` if available, otherwise `page.evaluate` with a custom mock) to deterministically advance time across the delay boundary.
- For `delayOnTouchOnly`, drive the test through the touchscreen API rather than mouse + waitForTimeout.
- Threshold cancellation can use the pointer-pipeline pattern from `on-move.spec.ts` (low-level `page.mouse` steps).
Refs #35 — discovered during E2E skip triage.
Problem
Three tests in `tests/e2e/delay-options.spec.ts` plus one in `tests/e2e/feature-demos.spec.ts` are skipped citing "complex delay simulation" or unreliable timer behavior:
Hypothesis
The tests use `page.waitForTimeout` to bracket the delay window, but Playwright's synthetic mouse events don't reliably interact with our `setTimeout`-based delay timer when the timing is tight.
Suggested approach
Refs #35 — discovered during E2E skip triage.