fix(connect): provide an error message when ws endpoint is incorrect (#4978)
This commit is contained in:
parent
068ad0f082
commit
725191967b
|
|
@ -76,17 +76,13 @@ export class BrowserServerImpl extends EventEmitter implements BrowserServer {
|
|||
this._ready = new Promise<void>(f => readyCallback = f);
|
||||
|
||||
const token = createGuid();
|
||||
this._server = new ws.Server({ port }, () => {
|
||||
this._server = new ws.Server({ port, path: '/' + token }, () => {
|
||||
const address = this._server.address();
|
||||
this._wsEndpoint = typeof address === 'string' ? `${address}/${token}` : `ws://127.0.0.1:${address.port}/${token}`;
|
||||
readyCallback();
|
||||
});
|
||||
|
||||
this._server.on('connection', (socket: ws, req) => {
|
||||
if (req.url !== '/' + token) {
|
||||
socket.close();
|
||||
return;
|
||||
}
|
||||
this._clientAttached(socket);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -147,6 +147,10 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
|
|||
}
|
||||
}
|
||||
ws.addEventListener('open', async () => {
|
||||
const prematureCloseListener = (event: { reason: string }) => {
|
||||
reject(new Error('Server disconnected: ' + event.reason));
|
||||
};
|
||||
ws.addEventListener('close', prematureCloseListener);
|
||||
const remoteBrowser = await connection.waitForObjectWithKnownName('remoteBrowser') as RemoteBrowser;
|
||||
|
||||
// Inherit shared selectors for connected browser.
|
||||
|
|
@ -165,6 +169,7 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
|
|||
}
|
||||
browser._didClose();
|
||||
};
|
||||
ws.removeEventListener('close', prematureCloseListener);
|
||||
ws.addEventListener('close', closeListener);
|
||||
browser.on(Events.Browser.Disconnected, () => {
|
||||
sharedSelectors._removeChannel(selectorsOwner);
|
||||
|
|
@ -175,7 +180,7 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
|
|||
});
|
||||
ws.addEventListener('error', event => {
|
||||
ws.close();
|
||||
reject(new Error('WebSocket error: ' + event.message));
|
||||
reject(new Error(event.message + '. Most likely ws endpoint is incorrect'));
|
||||
});
|
||||
});
|
||||
}, logger);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,13 @@ describe('lauch server', (suite, { mode }) => {
|
|||
await browserServer.close();
|
||||
});
|
||||
|
||||
it('should provide an error when ws endpoint is incorrect', async ({browserType, browserOptions}) => {
|
||||
const browserServer = await browserType.launchServer(browserOptions);
|
||||
const error = await browserType.connect({ wsEndpoint: browserServer.wsEndpoint() + '-foo' }).catch(e => e);
|
||||
await browserServer.close();
|
||||
expect(error.message).toContain('Most likely ws endpoint is incorrect');
|
||||
});
|
||||
|
||||
it('should fire "close" event during kill', async ({browserType, browserOptions}) => {
|
||||
const order = [];
|
||||
const browserServer = await browserType.launchServer(browserOptions);
|
||||
|
|
|
|||
Loading…
Reference in a new issue