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,
|
timeout?: number,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const NET_DEFAULT_TIMEOUT = 30_000;
|
||||||
|
|
||||||
export function httpRequest(params: HTTPRequestParams, onResponse: (r: http.IncomingMessage) => void, onError: (error: Error) => void) {
|
export function httpRequest(params: HTTPRequestParams, onResponse: (r: http.IncomingMessage) => void, onError: (error: Error) => void) {
|
||||||
const parsedUrl = URL.parse(params.url);
|
const parsedUrl = URL.parse(params.url);
|
||||||
let options: https.RequestOptions = { ...parsedUrl };
|
let options: https.RequestOptions = { ...parsedUrl };
|
||||||
options.method = params.method || 'GET';
|
options.method = params.method || 'GET';
|
||||||
options.headers = params.headers;
|
options.headers = params.headers;
|
||||||
|
const timeout = params.timeout ?? NET_DEFAULT_TIMEOUT;
|
||||||
|
|
||||||
const proxyURL = getProxyForUrl(params.url);
|
const proxyURL = getProxyForUrl(params.url);
|
||||||
if (proxyURL) {
|
if (proxyURL) {
|
||||||
@ -74,16 +77,16 @@ export function httpRequest(params: HTTPRequestParams, onResponse: (r: http.Inco
|
|||||||
https.request(options, requestCallback) :
|
https.request(options, requestCallback) :
|
||||||
http.request(options, requestCallback);
|
http.request(options, requestCallback);
|
||||||
request.on('error', onError);
|
request.on('error', onError);
|
||||||
if (params.timeout !== undefined) {
|
if (timeout !== undefined) {
|
||||||
const rejectOnTimeout = () => {
|
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();
|
request.abort();
|
||||||
};
|
};
|
||||||
if (params.timeout <= 0) {
|
if (timeout <= 0) {
|
||||||
rejectOnTimeout();
|
rejectOnTimeout();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
request.setTimeout(params.timeout, rejectOnTimeout);
|
request.setTimeout(timeout, rejectOnTimeout);
|
||||||
}
|
}
|
||||||
request.end(params.data);
|
request.end(params.data);
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import { Browser } from '../browser';
|
|||||||
import type * as types from '../types';
|
import type * as types from '../types';
|
||||||
import type * as channels from '../../protocol/channels';
|
import type * as channels from '../../protocol/channels';
|
||||||
import type { HTTPRequestParams } from '../../common/netUtils';
|
import type { HTTPRequestParams } from '../../common/netUtils';
|
||||||
|
import { NET_DEFAULT_TIMEOUT } from '../../common/netUtils';
|
||||||
import { fetchData } from '../../common/netUtils';
|
import { fetchData } from '../../common/netUtils';
|
||||||
import { getUserAgent } from '../../common/userAgent';
|
import { getUserAgent } from '../../common/userAgent';
|
||||||
import { debugMode, headersArrayToObject, streamToString, wrapInASCIIBox } from '../../utils';
|
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 httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
|
||||||
const request = endpointURL.startsWith('https') ? https : http;
|
const request = endpointURL.startsWith('https') ? https : http;
|
||||||
const json = await new Promise<string>((resolve, reject) => {
|
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) {
|
if (resp.statusCode! < 200 || resp.statusCode! >= 400) {
|
||||||
reject(new Error(`Unexpected status ${resp.statusCode} when connecting to ${httpURL}.\n` +
|
reject(new Error(`Unexpected status ${resp.statusCode} when connecting to ${httpURL}.\n` +
|
||||||
`This does not look like a DevTools server, try connecting via ws://.`));
|
`This does not look like a DevTools server, try connecting via ws://.`));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user