From 0e8ee318168785ec432e5e96547007b60ac07105 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Wed, 9 Sep 2026 19:39:28 +0300 Subject: [PATCH] test(stream): wait for the reconnect event The fixed 35ms sleep could finish before reconnect when workspace builds and test workers ran concurrently. Poll the actual ready frame and always close the runtime. The final workspace run passed: 429 UI, 40 VS Code, 23 Electron and 4 root test files; 2154 web tests passed with one existing platform skip. --- .../server/lib/event-stream/runtime.test.js | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/web/server/lib/event-stream/runtime.test.js b/packages/web/server/lib/event-stream/runtime.test.js index c8635112..3c2aa1bb 100644 --- a/packages/web/server/lib/event-stream/runtime.test.js +++ b/packages/web/server/lib/event-stream/runtime.test.js @@ -446,18 +446,18 @@ describe('message stream websocket runtime', () => { const socket = new FakeSocket(); runtime.wsServer.emit('connection', socket, { url: '/api/global/event/ws' }); - await new Promise((resolve) => setTimeout(resolve, 35)); - - const readyFrames = socket.sent.filter((frame) => frame.type === 'ready'); - const eventFrames = socket.sent.filter((frame) => frame.type === 'event' && frame.payload?.type === 'server.connected'); - - expect(readyFrames.length).toBeGreaterThanOrEqual(2); - expect(eventFrames.length).toBeGreaterThanOrEqual(2); - expect(fetchCalls.slice(0, 2)).toEqual([null, 'evt-1']); - expect(triggerHealthCheckCalls).toBe(0); - - socket.close(); - await runtime.close(); + try { + // Wait for the reconnect event itself; a 35ms sleep raced the event + // loop when the workspace build and test workers ran together. + await expect.poll(() => socket.sent.filter((frame) => frame.type === 'ready').length).toBeGreaterThanOrEqual(2); + const eventFrames = socket.sent.filter((frame) => frame.type === 'event' && frame.payload?.type === 'server.connected'); + expect(eventFrames.length).toBeGreaterThanOrEqual(2); + expect(fetchCalls.slice(0, 2)).toEqual([null, 'evt-1']); + expect(triggerHealthCheckCalls).toBe(0); + } finally { + socket.close(); + await runtime.close(); + } }); it('keeps synthetic event processing on forwarded upstream events', async () => {