From 2b44dff38c7c88eff8544833fd189e6dfacc97d0 Mon Sep 17 00:00:00 2001 From: acolytec3 <17355484+acolytec3@users.noreply.github.com> Date: Fri, 24 Jan 2025 05:57:17 -0500 Subject: [PATCH] Fix broken Node Nightly CI jobs (#3846) * Remove node 18 from nightly * Remove timeout * rework websocket test to avoid flaky events * clean up auth test * remove it.only * remove unused var --------- Co-authored-by: Jochem Brouwer --- .github/workflows/node-versions.yml | 2 +- packages/client/test/rpc/websocket.spec.ts | 36 ++++++++++------------ 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/.github/workflows/node-versions.yml b/.github/workflows/node-versions.yml index d5c50677e3..b9a04200c1 100644 --- a/.github/workflows/node-versions.yml +++ b/.github/workflows/node-versions.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18, 20, 22] + node-version: [20, 22] fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/packages/client/test/rpc/websocket.spec.ts b/packages/client/test/rpc/websocket.spec.ts index db0b93920e..a72d524c28 100644 --- a/packages/client/test/rpc/websocket.spec.ts +++ b/packages/client/test/rpc/websocket.spec.ts @@ -28,14 +28,12 @@ describe('JSON-RPC call', () => { //@ts-ignore -- `isomorphic-ws` types aren't perfectly mapped to jayson.WebSocketClient but works fine for this test ws: socket, }) + while ((rpc as any).ws.readyState !== WebSocket.OPEN) { + await new Promise((resolve) => setTimeout(resolve, 100)) + } try { - await new Promise((resolve) => { - ;(rpc as any).ws.on('open', async () => { - const res = await rpc.request('METHOD_DOES_NOT_EXIST', ['0x1', true]) - assert.equal(res.error.code, METHOD_NOT_FOUND) - resolve(undefined) - }) - }) + const res = await rpc.request('METHOD_DOES_NOT_EXIST', ['0x1', true]) + assert.equal(res.error.code, METHOD_NOT_FOUND) } catch (err: any) { assert.fail(err) } @@ -44,17 +42,19 @@ describe('JSON-RPC call', () => { it('auth protected server without any auth headers', async () => { const server = startRPC({}, { wsServer: true }, { jwtSecret }) server.listen(1236, 'localhost') - const rpc = Client.websocket({ - url: 'ws://localhost:1236/', - }) await new Promise((resolve) => { - ;(rpc as any).ws.on('error', async (err: any) => { + const socket = new WebSocket('ws://localhost:1236', undefined, {}) + socket.onerror = (err) => { assert.ok(err.message.includes('401'), 'Unauthorized') resolve(undefined) + } + Client.websocket({ + // @ts-ignore -- see above test + ws: socket, }) }) - }, 30000) + }) it('server without any auth headers', async () => { const server = startRPC({}, { wsServer: true }) @@ -62,14 +62,12 @@ describe('JSON-RPC call', () => { const rpc = Client.websocket({ url: 'ws://localhost:12345/', }) + while ((rpc as any).ws.readyState !== WebSocket.OPEN) { + await new Promise((resolve) => setTimeout(resolve, 100)) + } try { - await new Promise((resolve) => { - ;(rpc as any).ws.on('open', async () => { - const res = await rpc.request('METHOD_DOES_NOT_EXIST', ['0x1', true]) - assert.equal(res.error.code, METHOD_NOT_FOUND) - resolve(undefined) - }) - }) + const res = await rpc.request('METHOD_DOES_NOT_EXIST', ['0x1', true]) + assert.equal(res.error.code, METHOD_NOT_FOUND) } catch (err: any) { assert.fail(err) }