test: unflake 'android.launchServer' WS leak test (#28891)

This test was flaky all the time. The problem was that we were sending
messages on a WS connection which wasn't ready yet, so we lost some.
This commit is contained in:
Max Schmitt 2024-01-08 19:07:06 +01:00 committed by GitHub
parent 67478efe92
commit 1d8c6d4760
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -118,14 +118,16 @@ test('android.launchServer should terminate WS connection when device gets disco
const forwardingServer = new ws.Server({ port: 0, path: '/connect' });
let receivedConnection: ws.WebSocket | undefined;
forwardingServer.on('connection', connection => {
// Pause the connection until we establish the actual connection to the browser server.
connection.pause();
receivedConnection = connection;
const actualConnection = new ws.WebSocket(browserServer.wsEndpoint());
actualConnection.on('open', () => {
actualConnection.on('message', message => connection.send(message));
connection.on('message', message => actualConnection.send(message));
connection.on('close', () => actualConnection.close());
actualConnection.on('close', () => connection.close());
});
// We need to wait for the actual connection to be established before resuming
actualConnection.on('open', () => connection.resume());
actualConnection.on('message', message => connection.send(message));
connection.on('message', message => actualConnection.send(message));
connection.on('close', () => actualConnection.close());
actualConnection.on('close', () => connection.close());
});
try {
const device = await playwright._android.connect(`ws://localhost:${(forwardingServer.address() as ws.AddressInfo).port}/connect`);