import test from 'node:test'; import assert from 'node:assert/strict'; import { createRealtimeServer } from './realtime-server.mjs'; import WebSocket from 'ws'; test('broadcasts focus events to other connected clients', async () => { const server = createRealtimeServer(0); await new Promise((resolve) => server.listen(resolve)); const { port } = server.address(); try { const screen = new WebSocket(`ws://127.0.0.1:${port}`); const controller = new WebSocket(`ws://127.0.0.1:${port}`); await Promise.all([ new Promise((resolve) => screen.once('open', resolve)), new Promise((resolve) => controller.once('open', resolve)), ]); const received = new Promise((resolve) => { screen.once('message', (data) => resolve(JSON.parse(data))); }); controller.send(JSON.stringify({ type: 'FOCUS_NAME', cloudId: 'demo', name: 'Sophia', messageId: 'focus-1', sentAt: 1, })); assert.deepEqual(await received, { type: 'FOCUS_NAME', cloudId: 'demo', name: 'Sophia', messageId: 'focus-1', sentAt: 1, }); screen.close(); controller.close(); } finally { await new Promise((resolve) => server.close(resolve)); } });