The core browser suite's #1468 WebSocket checks take before, mutation, and after snapshots in separate page.evaluate calls. The initial /api/channels response can settle between those calls, changing channel state independently of the packet being tested.
Observed during a full local run: before=0, after=5 failed the orphan-message count assertion even though no unknown channel was created.
Reproduced on unchanged 9eb3098 by holding the real /api/channels response until after the first snapshot, then letting it complete before injecting the orphan message. Result:
{"before":0,"after":5,"unknown":false,"legacyCountAssertion":false}
This is a test synchronization bug, not evidence that orphan packets are being accepted. The companion positive-control test also splits its state reads and injected packet across browser turns, so initialization can overwrite its sentinel before the final snapshot.
Expected: collect the before state, synchronously process the test packet, and collect the after state in a single browser evaluation for each check. Keep every existing assertion. No sleeps, retries, forced channel data, or production changes are needed. Verify both checks with delayed initial loading and confirm the full browser suite passes.
The core browser suite's #1468 WebSocket checks take before, mutation, and after snapshots in separate
page.evaluatecalls. The initial/api/channelsresponse can settle between those calls, changing channel state independently of the packet being tested.Observed during a full local run:
before=0, after=5failed the orphan-message count assertion even though nounknownchannel was created.Reproduced on unchanged
9eb3098by holding the real/api/channelsresponse until after the first snapshot, then letting it complete before injecting the orphan message. Result:{"before":0,"after":5,"unknown":false,"legacyCountAssertion":false}This is a test synchronization bug, not evidence that orphan packets are being accepted. The companion positive-control test also splits its state reads and injected packet across browser turns, so initialization can overwrite its sentinel before the final snapshot.
Expected: collect the before state, synchronously process the test packet, and collect the after state in a single browser evaluation for each check. Keep every existing assertion. No sleeps, retries, forced channel data, or production changes are needed. Verify both checks with delayed initial loading and confirm the full browser suite passes.