Skip to content

Commit 6d38196

Browse files
kriszypclaude
andcommitted
fix(tests): eliminate race condition in WebSocket test message listeners
Replace shared-resolver pattern with ws.once() so each message handler is self-contained; also close the msgpack WebSocket after its test to avoid leaking connections. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent f9be4ba commit 6d38196

1 file changed

Lines changed: 4 additions & 11 deletions

File tree

unitTests/apiTests/ws-test.mjs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,13 @@ describe('test WebSockets connections and messaging', () => {
2424
if (ws2) ws2.close();
2525
});
2626
it('ping echo server', async function () {
27-
let resolver;
2827
ws1.send(
2928
JSON.stringify({
3029
action: 'ping',
3130
})
3231
);
3332
let message = await new Promise((resolve) => {
34-
resolver = resolve;
35-
ws1.on('message', (message) => {
36-
resolver(JSON.parse(message));
37-
});
33+
ws1.once('message', (msg) => resolve(JSON.parse(msg)));
3834
});
3935
assert.equal(message.action, 'ping');
4036
ws1.send(
@@ -43,12 +39,11 @@ describe('test WebSockets connections and messaging', () => {
4339
})
4440
);
4541
message = await new Promise((resolve) => {
46-
resolver = resolve;
42+
ws1.once('message', (msg) => resolve(JSON.parse(msg)));
4743
});
4844
assert.equal(message.action, 'another ping');
4945
});
5046
it('ping echo server with content type', async function () {
51-
let resolver;
5247
let ws = new WebSocket('ws://localhost:9926/Echo.msgpack');
5348
await new Promise((resolve, reject) => {
5449
ws.on('open', resolve);
@@ -59,11 +54,9 @@ describe('test WebSockets connections and messaging', () => {
5954
});
6055
ws.send(encoded);
6156
let message = await new Promise((resolve) => {
62-
resolver = resolve;
63-
ws.on('message', (message) => {
64-
resolver(unpack(message));
65-
});
57+
ws.once('message', (msg) => resolve(unpack(msg)));
6658
});
59+
ws.close();
6760
assert.equal(message.action, 'ping');
6861
});
6962
it('ping echo EventSource', async function () {

0 commit comments

Comments
 (0)