← back to Dw Photo Capture
5x/sweep-3.md
23 lines
# /5x sweep 3 — after 4fd7dee (server restarted)
## Verify (5x/tools/sweep.sh 3 → 5x/out/sweep-3/sweep-summary.txt)
- E2E journey: Chromium 19/19, WebKit 19/19, Firefox 19/19, WebKit warm 19/19 (all LIVE path)
- NEW hung-camera runs (getUserMedia never settles): Chromium 21/21 SNAP+SNAP, Firefox 21/21 SNAP+SNAP,
**WebKit 19/19 but took the LIVE path** — i.e. the hung-camera stub did not apply in WebKit (#1).
- /3x `/`, `/captures`, `/batch`: M1 M2 M3 B4 PASS.
- Then **the test server process died mid-sweep** (during /3x /batch clickthrough; background task exit 144,
nothing in the server log — the server logs every uncaughtException, so not a JS crash; same silent death as
sweep 1). Everything after it (/3x /cam, probe, toolbar, history, missing-side) failed on connection refused →
**sweep 3 is invalid as a clean/unclean verdict; not counted toward clean-twice.**
## Caught → diagnosis
1. Harness: WebKit exposes `navigator.mediaDevices` lazily, so assigning `getUserMedia` on the instance in an
init script didn't stick. Stub now patches `MediaDevices.prototype.getUserMedia` too, and a new check asserts a
HUNG_CAMERA run really took the timeout→SNAP path (so this can't silently pass again).
2. Env: test-server killed externally twice (exit 144 = signal, no stack). No self-exit path in server.js
(`process.exit` only for missing DWP_TEST_DIR / EADDRINUSE). Not an app defect. sweep.sh now health-checks
the server after every stage and ABORTS the sweep ("sweep invalid") instead of recording false failures.
Negative proof of the sweep-2 fix (5x/out/pre3/wk-hung-NEGATIVE-prefix.log): with 15beb44's index.html swapped
back in, the WebKit hung-camera journey goes RED ("waiting for event filechooser" timeout); with the fix, 21/21.