Summary
polly#177 reported that once one browser-tier file times out, every later file
fails with Connection closed. — one stall turning 5 healthy files into 5
failures. The fix for it landed on fix/177-modal-render-loop unverified
against that symptom, because the symptom did not reproduce.
What is known
The runner now gives each file its own browser context, bounds teardown at 5s,
and relaunches the browser if browser.connected is false
(tools/test/src/browser/run.ts). scripts/e2e-browser-runner-stall.ts proves
healthy files run either side of three deliberately stalled ones, and asserts
the output contains no Connection closed.
What is not known
Whether that is the mechanism that produced the original cascade. Two
whole-tier runs of the eal repro were attempted with a stalled chat.browser.tsx
in the middle; both times the later files ran normally on the old code, so the
cascade never occurred and the fix was never exercised against it.
Readings from those attempts:
| Attempt |
Result |
eal whole tier, POLLY_BROWSER_TIMEOUT_MS=10000 |
61 passed, 1 failed — chat timed out, all 8 other files ran |
| eal whole tier, second attempt |
same |
The original report used a 300000ms timeout, so a long-held wedged renderer may
be a necessary condition — a page spinning at 100% CPU for 5 minutes is a
different load on the browser process than one spinning for 10 seconds.
Next step
Reproduce with POLLY_BROWSER_TIMEOUT_MS=300000 against a build with the
polly#177 Modal defect restored, and watch whether the browser process dies. If
it does, confirm the relaunch path recovers; if the cascade cannot be produced
at all, close this and treat the isolation work as a standing guard.
Summary
polly#177 reported that once one browser-tier file times out, every later file
fails with
Connection closed.— one stall turning 5 healthy files into 5failures. The fix for it landed on
fix/177-modal-render-loopunverifiedagainst that symptom, because the symptom did not reproduce.
What is known
The runner now gives each file its own browser context, bounds teardown at 5s,
and relaunches the browser if
browser.connectedis false(
tools/test/src/browser/run.ts).scripts/e2e-browser-runner-stall.tsproveshealthy files run either side of three deliberately stalled ones, and asserts
the output contains no
Connection closed.What is not known
Whether that is the mechanism that produced the original cascade. Two
whole-tier runs of the eal repro were attempted with a stalled
chat.browser.tsxin the middle; both times the later files ran normally on the old code, so the
cascade never occurred and the fix was never exercised against it.
Readings from those attempts:
POLLY_BROWSER_TIMEOUT_MS=1000061 passed, 1 failed— chat timed out, all 8 other files ranThe original report used a 300000ms timeout, so a long-held wedged renderer may
be a necessary condition — a page spinning at 100% CPU for 5 minutes is a
different load on the browser process than one spinning for 10 seconds.
Next step
Reproduce with
POLLY_BROWSER_TIMEOUT_MS=300000against a build with thepolly#177 Modal defect restored, and watch whether the browser process dies. If
it does, confirm the relaunch path recovers; if the cascade cannot be produced
at all, close this and treat the isolation work as a standing guard.