diff --git a/src/common/Page.ts b/src/common/Page.ts index 43974162237b1..169c8432cc5da 100644 --- a/src/common/Page.ts +++ b/src/common/Page.ts @@ -2039,7 +2039,7 @@ export class Page extends EventEmitter { return false; } - return Promise.race([ + const eventRace = Promise.race([ helper.waitForEvent( this._frameManager, FrameManagerEmittedEvents.FrameAttached, @@ -2055,6 +2055,18 @@ export class Page extends EventEmitter { this._sessionClosePromise() ), ]); + + return Promise.race([ + eventRace, + (async () => { + for (const frame of this.frames()) { + if (await predicate(frame)) { + return frame; + } + } + await eventRace; + })(), + ]); } /**