File tree Expand file tree Collapse file tree 5 files changed +37
-14
lines changed Expand file tree Collapse file tree 5 files changed +37
-14
lines changed Original file line number Diff line number Diff line change 30
30
"test" : " c8 --check-coverage --lines 93 run-s test:chrome:* test:firefox" ,
31
31
"test:types" : " tsd" ,
32
32
"test:install" : " scripts/test-install.sh" ,
33
- "test:firefox" : " cross-env PUPPETEER_PRODUCT=firefox MOZ_WEBRENDER=0 mocha" ,
33
+ "test:firefox" : " cross-env PUPPETEER_PRODUCT=firefox MOZ_WEBRENDER=0 PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT=20000 mocha" ,
34
34
"test:chrome" : " run-s test:chrome:*" ,
35
- "test:chrome:headless" : " cross-env HEADLESS=true mocha" ,
36
- "test:chrome:headless-chrome" : " cross-env HEADLESS=chrome mocha" ,
37
- "test:chrome:headful" : " cross-env HEADLESS=false mocha" ,
35
+ "test:chrome:headless" : " cross-env HEADLESS=true PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT=20000 mocha" ,
36
+ "test:chrome:headless-chrome" : " cross-env HEADLESS=chrome PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT=20000 mocha" ,
37
+ "test:chrome:headful" : " cross-env HEADLESS=false PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT=20000 mocha" ,
38
38
"prepublishOnly" : " npm run build" ,
39
39
"prepare" : " node typescript-if-required.js && husky install" ,
40
40
"lint" : " run-s lint:prettier lint:eslint" ,
Original file line number Diff line number Diff line change 17
17
import { Protocol } from 'devtools-protocol' ;
18
18
import { assert } from '../util/assert.js' ;
19
19
import {
20
- createDeferredPromiseWithTimer ,
20
+ createDebuggableDeferredPromise ,
21
21
DeferredPromise ,
22
22
} from '../util/DeferredPromise.js' ;
23
23
import { isErrorLike } from '../util/ErrorLike.js' ;
@@ -150,7 +150,7 @@ export class FrameManager extends EventEmitter {
150
150
if ( ! this . #framesPendingTargetInit. has ( targetId ) ) {
151
151
this . #framesPendingTargetInit. set (
152
152
targetId ,
153
- createDeferredPromiseWithTimer (
153
+ createDebuggableDeferredPromise (
154
154
`Waiting for target frame ${ targetId } failed`
155
155
)
156
156
) ;
@@ -318,7 +318,7 @@ export class FrameManager extends EventEmitter {
318
318
if ( ! this . #framesPendingAttachment. has ( frameId ) ) {
319
319
this . #framesPendingAttachment. set (
320
320
frameId ,
321
- createDeferredPromiseWithTimer (
321
+ createDebuggableDeferredPromise (
322
322
`Waiting for frame ${ frameId } to attach failed`
323
323
)
324
324
) ;
Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ import {HTTPResponse} from './HTTPResponse.js';
24
24
import { FetchRequestId , NetworkEventManager } from './NetworkEventManager.js' ;
25
25
import { debugError , isString } from './util.js' ;
26
26
import {
27
- createDeferredPromiseWithTimer ,
27
+ createDebuggableDeferredPromise ,
28
28
DeferredPromise ,
29
29
} from '../util/DeferredPromise.js' ;
30
30
@@ -144,9 +144,8 @@ export class NetworkManager extends EventEmitter {
144
144
if ( this . #deferredInitPromise) {
145
145
return this . #deferredInitPromise;
146
146
}
147
- this . #deferredInitPromise = createDeferredPromiseWithTimer < void > (
148
- 'NetworkManager initialization timed out' ,
149
- 30000
147
+ this . #deferredInitPromise = createDebuggableDeferredPromise < void > (
148
+ 'NetworkManager initialization timed out'
150
149
) ;
151
150
const init = Promise . all ( [
152
151
this . #ignoreHTTPSErrors
Original file line number Diff line number Diff line change 18
18
* @internal
19
19
*/
20
20
export const isNode = ! ! ( typeof process !== 'undefined' && process . version ) ;
21
+
22
+ /**
23
+ * @internal
24
+ */
25
+ export const deferredPromiseDebugTimeout =
26
+ typeof process !== 'undefined' &&
27
+ typeof process . env [ 'PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT' ] !== 'undefined'
28
+ ? Number ( process . env [ 'PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT' ] )
29
+ : - 1 ;
Original file line number Diff line number Diff line change 1
1
import { TimeoutError } from '../common/Errors.js' ;
2
+ import { deferredPromiseDebugTimeout } from '../environment.js' ;
2
3
3
4
/**
4
5
* @internal
5
6
*/
6
-
7
7
export interface DeferredPromise < T > extends Promise < T > {
8
8
finished : ( ) => boolean ;
9
9
resolved : ( ) => boolean ;
10
10
resolve : ( _ : T ) => void ;
11
11
reject : ( _ : Error ) => void ;
12
12
}
13
+
13
14
/**
14
15
* Creates an returns a promise along with the resolve/reject functions.
15
16
*
@@ -18,7 +19,6 @@ export interface DeferredPromise<T> extends Promise<T> {
18
19
*
19
20
* @internal
20
21
*/
21
-
22
22
export function createDeferredPromiseWithTimer < T > (
23
23
timeoutMessage : string ,
24
24
timeout = 5000
@@ -54,12 +54,12 @@ export function createDeferredPromiseWithTimer<T>(
54
54
} ,
55
55
} ) ;
56
56
}
57
+
57
58
/**
58
59
* Creates an returns a promise along with the resolve/reject functions.
59
60
*
60
61
* @internal
61
62
*/
62
-
63
63
export function createDeferredPromise < T > ( ) : DeferredPromise < T > {
64
64
let isResolved = false ;
65
65
let isRejected = false ;
@@ -86,3 +86,18 @@ export function createDeferredPromise<T>(): DeferredPromise<T> {
86
86
} ,
87
87
} ) ;
88
88
}
89
+
90
+ /**
91
+ * @internal
92
+ */
93
+ export function createDebuggableDeferredPromise < T > (
94
+ timeoutMessage : string
95
+ ) : DeferredPromise < T > {
96
+ if ( deferredPromiseDebugTimeout > 0 ) {
97
+ return createDeferredPromiseWithTimer (
98
+ timeoutMessage ,
99
+ deferredPromiseDebugTimeout
100
+ ) ;
101
+ }
102
+ return createDeferredPromise ( ) ;
103
+ }
You can’t perform that action at this time.
0 commit comments