chore: improve connectOverCDP error handling (#7239)
This commit is contained in:
parent
498b2d7ca0
commit
590184998f
|
|
@ -229,6 +229,9 @@ async function urlToWSEndpoint(endpointURL: string) {
|
||||||
const httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
|
const httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
|
||||||
const json = await new Promise<string>((resolve, reject) => {
|
const json = await new Promise<string>((resolve, reject) => {
|
||||||
http.get(httpURL, resp => {
|
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 = '';
|
let data = '';
|
||||||
resp.on('data', chunk => data += chunk);
|
resp.on('data', chunk => data += chunk);
|
||||||
resp.on('end', () => resolve(data));
|
resp.on('end', () => resolve(data));
|
||||||
|
|
|
||||||
|
|
@ -308,3 +308,26 @@ playwrightTest('should return valid browser from context.browser()', async ({ br
|
||||||
await browserServer.close();
|
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');
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue