chore: improve connectOverCDP error handling (#7239)

This commit is contained in:
Max Schmitt 2021-06-21 19:57:00 +02:00 committed by GitHub
parent 498b2d7ca0
commit 590184998f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 0 deletions

View file

@ -229,6 +229,9 @@ async function urlToWSEndpoint(endpointURL: string) {
const httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
const json = await new Promise<string>((resolve, reject) => {
http.get(httpURL, resp => {
if (resp.statusCode! < 200 || resp.statusCode! >= 400)
reject(new Error(`Unexpected status ${resp.statusCode} when connecting to ${httpURL}.\n` +
`This does not look like a DevTools server, try connecting via ws://.`));
let data = '';
resp.on('data', chunk => data += chunk);
resp.on('end', () => resolve(data));

View file

@ -308,3 +308,26 @@ playwrightTest('should return valid browser from context.browser()', async ({ br
await browserServer.close();
}
});
test('should report an expected error when the endpointURL returns a non-expected status code', async ({ browserType, server }) => {
server.setRoute('/json/version/', (req, resp) => {
resp.statusCode = 404;
resp.end(JSON.stringify({
webSocketDebuggerUrl: 'dont-use-me',
}));
});
await expect(browserType.connectOverCDP({
endpointURL: server.PREFIX,
})).rejects.toThrowError(`browserType.connectOverCDP: Unexpected status 404 when connecting to ${server.PREFIX}/json/version/`)
});
test('should report an expected error when the endpoint URL JSON webSocketDebuggerUrl is undefined', async ({ browserType, server }) => {
server.setRoute('/json/version/', (req, resp) => {
resp.end(JSON.stringify({
webSocketDebuggerUrl: undefined,
}));
});
await expect(browserType.connectOverCDP({
endpointURL: server.PREFIX,
})).rejects.toThrowError('browserType.connectOverCDP: Invalid URL');
});