export function setupWebsocket() { const originalWebSocket = global.WebSocket; const webSocketInstances: any[] = []; const mockWebSocket = jest.fn().mockImplementation((url: string) => { const ws = { url, readyState: WebSocket.CONNECTING, addEventListener: jest.fn(), removeEventListener: jest.fn(), send: jest.fn(), close: jest.fn(), _listeners: {} as Record, }; ws.addEventListener.mockImplementation((event, handler) => { ws._listeners[event] ??= []; ws._listeners[event].push(handler); }); ws.removeEventListener.mockImplementation((event, handler) => { ws._listeners[event] = ws._listeners[event]?.filter((h) => h !== handler) ?? []; }); webSocketInstances.push(ws); return ws; }); global.WebSocket = mockWebSocket as any; const cleanup = () => { global.WebSocket = originalWebSocket; webSocketInstances.length = 0; }; return { webSocketInstances, mockWebSocket, cleanup }; }