From eb5b1de9b7e6cf862f58d72af6a4e4cb16f89b38 Mon Sep 17 00:00:00 2001 From: Isaac Sanchez-Hawkins <266845420+isanchez404@users.noreply.github.com> Date: Tue, 12 May 2026 03:57:27 -0400 Subject: [PATCH] test(sync): shorten websocket fallback test (#1211) * test(sync): shorten websocket fallback test * test(sync): avoid duplicate fallback cleanup --------- Co-authored-by: Isaac Sanchez --- .../src/sync/__tests__/event-pipeline.test.js | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/ui/src/sync/__tests__/event-pipeline.test.js b/packages/ui/src/sync/__tests__/event-pipeline.test.js index bd7a2369..b4d7fa91 100644 --- a/packages/ui/src/sync/__tests__/event-pipeline.test.js +++ b/packages/ui/src/sync/__tests__/event-pipeline.test.js @@ -74,6 +74,14 @@ function createSdkWithSingleEvent(event, hold) { }; } +function withTimeout(promise, ms, message) { + let timeoutId; + const timeout = new Promise((_, reject) => { + timeoutId = setTimeout(() => reject(new Error(message)), ms); + }); + return Promise.race([promise, timeout]).finally(() => clearTimeout(timeoutId)); +} + // Helper to create an SDK that yields multiple events in sequence, then holds. function createSdkWithEvents(events, hold) { return { @@ -638,25 +646,30 @@ describe('createEventPipeline', () => { }, }, hold); + let cleanup; const delivered = new Promise((resolve) => { - const { cleanup } = createEventPipeline({ + const pipeline = createEventPipeline({ sdk, transport: 'auto', + wsReadyTimeoutMs: 20, onEvent: (directory, payload) => { received.push({ directory, payload }); - cleanup(); - releaseStream(); resolve(); }, }); + cleanup = pipeline.cleanup; }); await Promise.resolve(); const socket = FakeWebSocket.instances[0]; socket.emitOpen(); - await new Promise((resolve) => setTimeout(resolve, 2300)); - await delivered; + try { + await withTimeout(delivered, 500, 'timed out waiting for websocket-ready SSE fallback'); + } finally { + cleanup?.(); + releaseStream(); + } expect(received).toEqual([ {