mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
chore: set default http request timeouts (#17200)
* chore: set default http request timeouts * Update chromium.ts
This commit is contained in:
parent
9c996f6cbb
commit
5e56bc413a
@ -39,11 +39,14 @@ export type HTTPRequestParams = {
|
||||
timeout?: number,
|
||||
};
|
||||
|
||||
export const NET_DEFAULT_TIMEOUT = 30_000;
|
||||
|
||||
export function httpRequest(params: HTTPRequestParams, onResponse: (r: http.IncomingMessage) => void, onError: (error: Error) => void) {
|
||||
const parsedUrl = URL.parse(params.url);
|
||||
let options: https.RequestOptions = { ...parsedUrl };
|
||||
options.method = params.method || 'GET';
|
||||
options.headers = params.headers;
|
||||
const timeout = params.timeout ?? NET_DEFAULT_TIMEOUT;
|
||||
|
||||
const proxyURL = getProxyForUrl(params.url);
|
||||
if (proxyURL) {
|
||||
@ -74,16 +77,16 @@ export function httpRequest(params: HTTPRequestParams, onResponse: (r: http.Inco
|
||||
https.request(options, requestCallback) :
|
||||
http.request(options, requestCallback);
|
||||
request.on('error', onError);
|
||||
if (params.timeout !== undefined) {
|
||||
if (timeout !== undefined) {
|
||||
const rejectOnTimeout = () => {
|
||||
onError(new Error(`Request to ${params.url} timed out after ${params.timeout}ms`));
|
||||
onError(new Error(`Request to ${params.url} timed out after ${timeout}ms`));
|
||||
request.abort();
|
||||
};
|
||||
if (params.timeout <= 0) {
|
||||
if (timeout <= 0) {
|
||||
rejectOnTimeout();
|
||||
return;
|
||||
}
|
||||
request.setTimeout(params.timeout, rejectOnTimeout);
|
||||
request.setTimeout(timeout, rejectOnTimeout);
|
||||
}
|
||||
request.end(params.data);
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ import { Browser } from '../browser';
|
||||
import type * as types from '../types';
|
||||
import type * as channels from '../../protocol/channels';
|
||||
import type { HTTPRequestParams } from '../../common/netUtils';
|
||||
import { NET_DEFAULT_TIMEOUT } from '../../common/netUtils';
|
||||
import { fetchData } from '../../common/netUtils';
|
||||
import { getUserAgent } from '../../common/userAgent';
|
||||
import { debugMode, headersArrayToObject, streamToString, wrapInASCIIBox } from '../../utils';
|
||||
@ -365,7 +366,9 @@ async function urlToWSEndpoint(progress: Progress, endpointURL: string) {
|
||||
const httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
|
||||
const request = endpointURL.startsWith('https') ? https : http;
|
||||
const json = await new Promise<string>((resolve, reject) => {
|
||||
request.get(httpURL, resp => {
|
||||
request.get(httpURL, {
|
||||
timeout: NET_DEFAULT_TIMEOUT,
|
||||
}, 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://.`));
|
||||
|
Loading…
x
Reference in New Issue
Block a user