diff --git a/packages/apps-config/src/ci/chainEndpoints.spec.ts b/packages/apps-config/src/ci/chainEndpoints.spec.ts index 946446f350..1c40d24327 100644 --- a/packages/apps-config/src/ci/chainEndpoints.spec.ts +++ b/packages/apps-config/src/ci/chainEndpoints.spec.ts @@ -38,32 +38,8 @@ describe('check endpoints', (): void => { ws: value })) .filter((v): v is Endpoint => !!v.ws); - let completed = 0; - let errored = 0; let websocket: WebSocket | null = null; - - afterEach((): void => { - completed++; - - if (websocket) { - websocket.onclose = noopHandler; - websocket.onerror = noopHandler; - websocket.onopen = noopHandler; - websocket.onmessage = noopHandler; - - try { - websocket.close(); - } catch (e) { - console.error((e as Error).message); - } - - websocket = null; - } - - if (completed === checks.length) { - process.exit(errored); - } - }); + let closeTimerId: ReturnType | null = null; for (const { name, ws: endpoint } of checks) { it(`${name} @ ${endpoint}`, async (): Promise => { @@ -102,13 +78,37 @@ describe('check endpoints', (): void => { reject(e); } }; + + closeTimerId = setTimeout( + () => { + closeTimerId = null; + reject(new Error('Connection timeout')); + }, + TIMEOUT + ); }) ) - .catch((e) => { - errored++; + .finally(() => { + if (closeTimerId) { + clearTimeout(closeTimerId); + closeTimerId = null; + } - throw e; + if (websocket) { + websocket.onclose = noopHandler; + websocket.onerror = noopHandler; + websocket.onopen = noopHandler; + websocket.onmessage = noopHandler; + + try { + websocket.close(); + } catch (e) { + console.error((e as Error).message); + } + + websocket = null; + } }); - }, TIMEOUT); + }); } });