Context
While fixing CI (PR #229), the browser regression suite was found to fail consistently — both in CI and locally — even though each test's scenario works when reproduced standalone against a live server.
Symptoms
- All 7 tests time out waiting for socket-driven DOM updates (
Locator.wait_for: Timeout)
- Server logs show repeated
POST /socket.io/... 400 and websocket ... 400 for valid sids after initial connect
- The same flows work in a standalone headless-Chromium reproduction with zero page errors
Suspected cause
Interplay between the module-scoped browser_server fixture, socketio.test_client() sessions, and the page's socket session — possibly the shared broadcaster/client-state registry treating reconnects or the second client as stale.
Also note
~16 runtime-contract tests assert frontend content that only exists on the swift-native branch; those need contract reconciliation once the Swift line merges.
Acceptance
- Browser regression suite green in CI
- Runtime-contract suite reconciled with the merged frontend
Context
While fixing CI (PR #229), the browser regression suite was found to fail consistently — both in CI and locally — even though each test's scenario works when reproduced standalone against a live server.
Symptoms
Locator.wait_for: Timeout)POST /socket.io/... 400andwebsocket ... 400for valid sids after initial connectSuspected cause
Interplay between the module-scoped
browser_serverfixture,socketio.test_client()sessions, and the page's socket session — possibly the shared broadcaster/client-state registry treating reconnects or the second client as stale.Also note
~16 runtime-contract tests assert frontend content that only exists on the swift-native branch; those need contract reconciliation once the Swift line merges.
Acceptance