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) { |     if (!this.pages().length) { | ||||||
|       const waitForEvent = helper.waitForEvent(progress, this, BrowserContext.Events.Page); |       const waitForEvent = helper.waitForEvent(progress, this, BrowserContext.Events.Page); | ||||||
|       progress.cleanupWhenAborted(() => waitForEvent.dispose); |       progress.cleanupWhenAborted(() => waitForEvent.dispose); | ||||||
|       await waitForEvent.promise; |       const page = (await waitForEvent.promise) as Page; | ||||||
|  |       if (page._pageIsError) | ||||||
|  |         throw page._pageIsError; | ||||||
|     } |     } | ||||||
|     const pages = this.pages(); |     const pages = this.pages(); | ||||||
|  |     if (pages[0]._pageIsError) | ||||||
|  |       throw pages[0]._pageIsError; | ||||||
|     await pages[0].mainFrame()._waitForLoadState(progress, 'load'); |     await pages[0].mainFrame()._waitForLoadState(progress, 'load'); | ||||||
|     return pages; |     return pages; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -148,6 +148,7 @@ export class Page extends SdkObject { | |||||||
|   readonly selectors: Selectors; |   readonly selectors: Selectors; | ||||||
|   _video: Video | null = null; |   _video: Video | null = null; | ||||||
|   readonly uniqueId: string; |   readonly uniqueId: string; | ||||||
|  |   _pageIsError: Error | undefined; | ||||||
| 
 | 
 | ||||||
|   constructor(delegate: PageDelegate, browserContext: BrowserContext) { |   constructor(delegate: PageDelegate, browserContext: BrowserContext) { | ||||||
|     super(browserContext); |     super(browserContext); | ||||||
| @ -187,7 +188,7 @@ export class Page extends SdkObject { | |||||||
|       // context/browser closure. Just ignore the page.
 |       // context/browser closure. Just ignore the page.
 | ||||||
|       if (this._browserContext.isClosingOrClosed()) |       if (this._browserContext.isClosingOrClosed()) | ||||||
|         return; |         return; | ||||||
|       this._setIsError(); |       this._setIsError(pageOrError); | ||||||
|     } |     } | ||||||
|     this._browserContext.emit(BrowserContext.Events.Page, this); |     this._browserContext.emit(BrowserContext.Events.Page, this); | ||||||
|     const openerDelegate = this._delegate.openerDelegate(); |     const openerDelegate = this._delegate.openerDelegate(); | ||||||
| @ -444,7 +445,8 @@ export class Page extends SdkObject { | |||||||
|       await this._ownedContext.close(metadata); |       await this._ownedContext.close(metadata); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private _setIsError() { |   private _setIsError(error: Error) { | ||||||
|  |     this._pageIsError = error; | ||||||
|     if (!this._frameManager.mainFrame()) |     if (!this._frameManager.mainFrame()) | ||||||
|       this._frameManager.frameAttached('<dummy>', null); |       this._frameManager.frameAttached('<dummy>', null); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -164,4 +164,3 @@ it('should not treat navigations as new popups', async ({context, server}) => { | |||||||
|   await context.close(); |   await context.close(); | ||||||
|   expect(badSecondPopup).toBe(false); |   expect(badSecondPopup).toBe(false); | ||||||
| }); | }); | ||||||
| 
 |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Pavel Feldman
						Pavel Feldman