mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
fix(pageOrError): throw in launchPersistentContext if context page has errors (#5868)
This commit is contained in:
parent
bb21faf450
commit
d53cea7029
@ -195,9 +195,13 @@ export abstract class BrowserContext extends SdkObject {
|
||||
if (!this.pages().length) {
|
||||
const waitForEvent = helper.waitForEvent(progress, this, BrowserContext.Events.Page);
|
||||
progress.cleanupWhenAborted(() => waitForEvent.dispose);
|
||||
await waitForEvent.promise;
|
||||
const page = (await waitForEvent.promise) as Page;
|
||||
if (page._pageIsError)
|
||||
throw page._pageIsError;
|
||||
}
|
||||
const pages = this.pages();
|
||||
if (pages[0]._pageIsError)
|
||||
throw pages[0]._pageIsError;
|
||||
await pages[0].mainFrame()._waitForLoadState(progress, 'load');
|
||||
return pages;
|
||||
}
|
||||
|
@ -148,6 +148,7 @@ export class Page extends SdkObject {
|
||||
readonly selectors: Selectors;
|
||||
_video: Video | null = null;
|
||||
readonly uniqueId: string;
|
||||
_pageIsError: Error | undefined;
|
||||
|
||||
constructor(delegate: PageDelegate, browserContext: BrowserContext) {
|
||||
super(browserContext);
|
||||
@ -187,7 +188,7 @@ export class Page extends SdkObject {
|
||||
// context/browser closure. Just ignore the page.
|
||||
if (this._browserContext.isClosingOrClosed())
|
||||
return;
|
||||
this._setIsError();
|
||||
this._setIsError(pageOrError);
|
||||
}
|
||||
this._browserContext.emit(BrowserContext.Events.Page, this);
|
||||
const openerDelegate = this._delegate.openerDelegate();
|
||||
@ -444,7 +445,8 @@ export class Page extends SdkObject {
|
||||
await this._ownedContext.close(metadata);
|
||||
}
|
||||
|
||||
private _setIsError() {
|
||||
private _setIsError(error: Error) {
|
||||
this._pageIsError = error;
|
||||
if (!this._frameManager.mainFrame())
|
||||
this._frameManager.frameAttached('<dummy>', null);
|
||||
}
|
||||
|
@ -164,4 +164,3 @@ it('should not treat navigations as new popups', async ({context, server}) => {
|
||||
await context.close();
|
||||
expect(badSecondPopup).toBe(false);
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user