Repository navigation
test(e2e): the drawer conformance run samples every step on the page clock and fails an undersampled one - #545
Conversation
…be reported undersampled
…clock and fails an undersampled one
|
Review: changes requested (one flaky test; the rest checks out). Blocking: I did not pin down the cause. A likely one: the run starts from a Also: when the loop runs out, Checked, fine
Nits
|
…starves, and a run that cannot start says so
|
Thanks, fixed in the new commit on top.
Verify: |
|
Re-review: approve. The new top commit fixes the flake. On chromium the whole file at |
playground/e2e/drawer-keyboard.spec.tsonly asserted that each frame-sampled step had at least one sample (> 0, loosened from> 2after a starved WebKit runner yielded 2 samples for "release 70%→0"). With one or two samples a step cannot show a reversal or an overshoot, so its geometry checks pass without reading anything, and a frame-starved page hides exactly the motion bugs this run exists to catch.What changes:
/lab/drawer-keyboardgets a geometry check,sampled enough to judge, that fails withundersampled: N samples (needs >=3)below 3 samples. The e2e spec and the throttled stress spec both fail on it, as they do on any other geometry failure.page.clock, pauses it before the sheet opens and steps it 16ms at a time. Under?virtualthe harness holds every CSS animation on the page and sets itscurrentTimefromperformance.now()on each frame and each DOM change, so the sheet's transitions run on the same virtual timeline as the engine's timers and re-aim maths. Each step now reads 44 or 45 samples on both engines, every run.samples.length >= MIN_SAMPLES(3) is asserted again for every frame-sampled step.844 → 506, turned 13px at 116mson both engines, and the comment now quotes that figure.docs/design/behaviors.mdsays how the spec samples.The harness change is limited to
?virtual; without the flag nothing is held. No product code changes.Reproduce:
a step sampled fewer than 3 times is reported undersampledfails: the clock jumps 400ms per frame, the steps get 2 samples, and no check says so (expect(s.check?.pass).toBe(false), receivedundefined).Verify:
Per-step samples, both engines: 44–45 on every step except "drag with the keyboard up" (not frame-sampled, exempt as before).
Tested on: Linux VM, Playwright 1.61.1 chromium and webkit (iPhone 13 profile).
Not tested: the CI E2E workflow (disabled).