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 type { WebSocket } from 'ws';
import { WebSocketServer } from 'ws'; import { WebSocketServer } from 'ws';
...@@ -63,12 +63,3 @@ export function sendMessage(socket: WebSocket, channel: Channel, msg: string, pa ...@@ -63,12 +63,3 @@ export function sendMessage(socket: WebSocket, channel: Channel, msg: string, pa
payload, 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 }) => { ...@@ -73,7 +73,7 @@ test('socket error', async({ mount, page, createSocket }) => {
const socket = await createSocket(); const socket = await createSocket();
await socketServer.joinChannel(socket, 'blocks:new_block'); await socketServer.joinChannel(socket, 'blocks:new_block');
await socketServer.simulateConnectionLoss(page); socket.close();
await expect(component).toHaveScreenshot(); 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