Commit eaa911a6 authored by tom's avatar tom

easy way to mock socket connection loss

parent 26da4b3c
import type { TestFixture, Page } from '@playwright/test';
import type { TestFixture } from '@playwright/test';
import type { WebSocket } from 'ws';
import { WebSocketServer } from 'ws';
......@@ -63,12 +63,3 @@ export function sendMessage(socket: WebSocket, channel: Channel, msg: string, pa
payload,
]));
}
// we massively rely here on phoenix socket lib implementation where page hide event causes socket disconnect
// i was not able to find better way to simulate connection loss state, feel free to improve it
// see more here https://github.com/phoenixframework/phoenix/blob/3cf1f1065ce11a906bd04b7841814cdced3f0df2/assets/js/phoenix/socket.js#L113
export async function simulateConnectionLoss(page: Page) {
await page.evaluate(() => {
window.dispatchEvent(new Event('pagehide'));
});
}
......@@ -73,7 +73,7 @@ test('socket error', async({ mount, page, createSocket }) => {
const socket = await createSocket();
await socketServer.joinChannel(socket, 'blocks:new_block');
await socketServer.simulateConnectionLoss(page);
socket.close();
await expect(component).toHaveScreenshot();
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment