diff --git a/docs/src/api/class-browser.md b/docs/src/api/class-browser.md index 8f5ebf5a3f710..d5f1ecad00c91 100644 --- a/docs/src/api/class-browser.md +++ b/docs/src/api/class-browser.md @@ -46,6 +46,7 @@ with sync_playwright() as playwright: ``` ## event: Browser.disconnected +- type: <[Browser]> Emitted when Browser gets disconnected from the browser application. This might happen because of one of the following: * Browser application is closed or crashed. diff --git a/docs/src/api/class-browsercontext.md b/docs/src/api/class-browsercontext.md index 0c6b29b407985..8ca99a755ab14 100644 --- a/docs/src/api/class-browsercontext.md +++ b/docs/src/api/class-browsercontext.md @@ -40,6 +40,7 @@ context.close() ``` ## event: BrowserContext.close +- type: <[BrowserContext]> Emitted when Browser context gets closed. This might happen because of one of the following: * Browser context is closed. diff --git a/docs/src/api/class-page.md b/docs/src/api/class-page.md index e98ffa6879562..accaef88023da 100644 --- a/docs/src/api/class-page.md +++ b/docs/src/api/class-page.md @@ -89,6 +89,7 @@ page.remove_listener("request", log_request) ``` ## event: Page.close +- type: <[Page]> Emitted when the page closes. @@ -129,6 +130,7 @@ page.evaluate("console.log('hello', 5, {foo: 'bar'})") ``` ## event: Page.crash +- type: <[Page]> Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page crashes, ongoing and subsequent operations will throw. @@ -173,6 +175,7 @@ Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` o to the dialog via [`method: Dialog.accept`] or [`method: Dialog.dismiss`] methods. ## event: Page.domcontentloaded +- type: <[Page]> Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. @@ -221,6 +224,7 @@ Emitted when a frame is detached. Emitted when a frame is navigated to a new url. ## event: Page.load +- type: <[Page]> Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. diff --git a/docs/src/api/class-websocket.md b/docs/src/api/class-websocket.md index a0851f41b47cb..e09a46d9b3378 100644 --- a/docs/src/api/class-websocket.md +++ b/docs/src/api/class-websocket.md @@ -3,6 +3,7 @@ The [WebSocket] class represents websocket connections in the page. ## event: WebSocket.close +- type: <[WebSocket]> Fired when the websocket closes. diff --git a/src/client/browser.ts b/src/client/browser.ts index f95b90e20801b..58891a62de212 100644 --- a/src/client/browser.ts +++ b/src/client/browser.ts @@ -91,6 +91,6 @@ export class Browser extends ChannelOwner { diff --git a/src/client/network.ts b/src/client/network.ts index 10dcf69d10e3b..7152326332364 100644 --- a/src/client/network.ts +++ b/src/client/network.ts @@ -350,7 +350,7 @@ export class WebSocket extends ChannelOwner this.emit(Events.WebSocket.Error, error)); this._channel.on('close', () => { this._isClosed = true; - this.emit(Events.WebSocket.Close); + this.emit(Events.WebSocket.Close, this); }); } diff --git a/src/client/page.ts b/src/client/page.ts index 203b419c8ebd7..334af00c762c6 100644 --- a/src/client/page.ts +++ b/src/client/page.ts @@ -117,12 +117,12 @@ export class Page extends ChannelOwner this.emit(Events.Page.Console, ConsoleMessage.from(message))); this._channel.on('crash', () => this._onCrash()); this._channel.on('dialog', ({ dialog }) => this.emit(Events.Page.Dialog, Dialog.from(dialog))); - this._channel.on('domcontentloaded', () => this.emit(Events.Page.DOMContentLoaded)); + this._channel.on('domcontentloaded', () => this.emit(Events.Page.DOMContentLoaded, this)); this._channel.on('download', ({ download }) => this.emit(Events.Page.Download, Download.from(download))); this._channel.on('fileChooser', ({ element, isMultiple }) => this.emit(Events.Page.FileChooser, new FileChooser(this, ElementHandle.from(element), isMultiple))); this._channel.on('frameAttached', ({ frame }) => this._onFrameAttached(Frame.from(frame))); this._channel.on('frameDetached', ({ frame }) => this._onFrameDetached(Frame.from(frame))); - this._channel.on('load', () => this.emit(Events.Page.Load)); + this._channel.on('load', () => this.emit(Events.Page.Load, this)); this._channel.on('pageError', ({ error }) => this.emit(Events.Page.PageError, parseError(error))); this._channel.on('popup', ({ page }) => this.emit(Events.Page.Popup, Page.from(page))); this._channel.on('request', ({ request }) => this.emit(Events.Page.Request, Request.from(request))); @@ -199,11 +199,11 @@ export class Page extends ChannelOwner { await context.close(); }); +it('should pass self to close event', async ({browser}) => { + const newContext = await browser.newContext(); + const [closedContext] = await Promise.all([ + newContext.waitForEvent('close'), + newContext.close() + ]); + expect(closedContext).toBe(newContext); +}); + it('should not report frameless pages on error', async ({browser, server}) => { const context = await browser.newContext(); const page = await context.newPage(); diff --git a/test/browsertype-connect.spec.ts b/test/browsertype-connect.spec.ts index af4b38e5d493d..ec356831238b1 100644 --- a/test/browsertype-connect.spec.ts +++ b/test/browsertype-connect.spec.ts @@ -85,6 +85,15 @@ describe('connect', (suite, { mode }) => { expect(disconnected2).toBe(1); }); + it('disconnected event should have browser as argument', async ({browserType, remoteServer}) => { + const browser = await browserType.connect({ wsEndpoint: remoteServer.wsEndpoint() }); + const [disconnected] = await Promise.all([ + new Promise(f => browser.on('disconnected', f)), + browser.close(), + ]); + expect(disconnected).toBe(browser); + }); + it('should handle exceptions during connect', async ({browserType, remoteServer}) => { const __testHookBeforeCreateBrowser = () => { throw new Error('Dummy'); }; const error = await browserType.connect({ wsEndpoint: remoteServer.wsEndpoint(), __testHookBeforeCreateBrowser } as any).catch(e => e); diff --git a/test/page-basic.spec.ts b/test/page-basic.spec.ts index b0e20b13b2d70..7721c35fe1d98 100644 --- a/test/page-basic.spec.ts +++ b/test/page-basic.spec.ts @@ -41,6 +41,15 @@ it('should set the page close state', async ({context}) => { expect(newPage.isClosed()).toBe(true); }); +it('should pass page to close event', async ({context}) => { + const newPage = await context.newPage(); + const [closedPage] = await Promise.all([ + newPage.waitForEvent('close'), + newPage.close() + ]); + expect(closedPage).toBe(newPage); +}); + it('should terminate network waiters', async ({context, server}) => { const newPage = await context.newPage(); const results = await Promise.all([ @@ -106,6 +115,22 @@ it('should fire domcontentloaded when expected', async ({page, server}) => { await navigatedPromise; }); +it('should pass self as argument to domcontentloaded event', async ({page, server}) => { + const [eventArg] = await Promise.all([ + new Promise(f => page.on('domcontentloaded', f)), + page.goto('about:blank') + ]); + expect(eventArg).toBe(page); +}); + +it('should pass self as argument to load event', async ({page, server}) => { + const [eventArg] = await Promise.all([ + new Promise(f => page.on('load', f)), + page.goto('about:blank') + ]); + expect(eventArg).toBe(page); +}); + it('should fail with error upon disconnect', async ({page, server}) => { let error; const waitForPromise = page.waitForEvent('download').catch(e => error = e); diff --git a/test/page-event-crash.spec.ts b/test/page-event-crash.spec.ts index a2d06c35cc02a..97a3c0fa98f43 100644 --- a/test/page-event-crash.spec.ts +++ b/test/page-event-crash.spec.ts @@ -36,7 +36,8 @@ describe('', (suite, { browserName, platform, mode }) => { it('should emit crash event when page crashes', async ({page, browserName, toImpl}) => { await page.setContent(`
This page should crash
`); crash(page, toImpl, browserName); - await new Promise(f => page.on('crash', f)); + const crashedPage = await new Promise(f => page.on('crash', f)); + expect(crashedPage).toBe(page); }); it('should throw on any action after page crashes', async ({page, browserName, toImpl}) => { diff --git a/test/web-socket.spec.ts b/test/web-socket.spec.ts index 5cb745114cf1b..df57374d27c6e 100644 --- a/test/web-socket.spec.ts +++ b/test/web-socket.spec.ts @@ -69,6 +69,22 @@ it('should emit frame events', async ({ page, server, isFirefox }) => { expect(log.join(':')).toBe('close:open:received:sent'); }); +it('should pass self as argument to close event', async ({ page, server, isFirefox }) => { + let socketClosed; + const socketClosePromise = new Promise(f => socketClosed = f); + let webSocket; + page.on('websocket', ws => { + webSocket = ws; + ws.on('close', socketClosed); + }); + await page.evaluate(port => { + const ws = new WebSocket('ws://localhost:' + port + '/ws'); + ws.addEventListener('open', () => ws.close()); + }, server.PORT); + const eventArg = await socketClosePromise; + expect(eventArg).toBe(webSocket); +}); + it('should emit binary frame events', async ({ page, server }) => { let doneCallback; const donePromise = new Promise(f => doneCallback = f); diff --git a/types/types.d.ts b/types/types.d.ts index da826c96c8c35..4bc92faf94aa0 100644 --- a/types/types.d.ts +++ b/types/types.d.ts @@ -369,7 +369,7 @@ export interface Page { /** * Emitted when the page closes. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: (page: Page) => void): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. Also @@ -408,7 +408,7 @@ export interface Page { * ``` * */ - on(event: 'crash', listener: () => void): this; + on(event: 'crash', listener: (page: Page) => void): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Playwright can respond @@ -421,7 +421,7 @@ export interface Page { * Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) * event is dispatched. */ - on(event: 'domcontentloaded', listener: () => void): this; + on(event: 'domcontentloaded', listener: (page: Page) => void): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the passed @@ -466,7 +466,7 @@ export interface Page { /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - on(event: 'load', listener: () => void): this; + on(event: 'load', listener: (page: Page) => void): this; /** * Emitted when an uncaught exception happens within the page. @@ -538,7 +538,7 @@ export interface Page { /** * Emitted when the page closes. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: (page: Page) => void): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. Also @@ -577,7 +577,7 @@ export interface Page { * ``` * */ - once(event: 'crash', listener: () => void): this; + once(event: 'crash', listener: (page: Page) => void): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Playwright can respond @@ -590,7 +590,7 @@ export interface Page { * Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) * event is dispatched. */ - once(event: 'domcontentloaded', listener: () => void): this; + once(event: 'domcontentloaded', listener: (page: Page) => void): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the passed @@ -635,7 +635,7 @@ export interface Page { /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - once(event: 'load', listener: () => void): this; + once(event: 'load', listener: (page: Page) => void): this; /** * Emitted when an uncaught exception happens within the page. @@ -707,7 +707,7 @@ export interface Page { /** * Emitted when the page closes. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: (page: Page) => void): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. Also @@ -746,7 +746,7 @@ export interface Page { * ``` * */ - addListener(event: 'crash', listener: () => void): this; + addListener(event: 'crash', listener: (page: Page) => void): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Playwright can respond @@ -759,7 +759,7 @@ export interface Page { * Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) * event is dispatched. */ - addListener(event: 'domcontentloaded', listener: () => void): this; + addListener(event: 'domcontentloaded', listener: (page: Page) => void): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the passed @@ -804,7 +804,7 @@ export interface Page { /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - addListener(event: 'load', listener: () => void): this; + addListener(event: 'load', listener: (page: Page) => void): this; /** * Emitted when an uncaught exception happens within the page. @@ -876,7 +876,7 @@ export interface Page { /** * Emitted when the page closes. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: (page: Page) => void): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. Also @@ -915,7 +915,7 @@ export interface Page { * ``` * */ - removeListener(event: 'crash', listener: () => void): this; + removeListener(event: 'crash', listener: (page: Page) => void): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Playwright can respond @@ -928,7 +928,7 @@ export interface Page { * Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) * event is dispatched. */ - removeListener(event: 'domcontentloaded', listener: () => void): this; + removeListener(event: 'domcontentloaded', listener: (page: Page) => void): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the passed @@ -973,7 +973,7 @@ export interface Page { /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - removeListener(event: 'load', listener: () => void): this; + removeListener(event: 'load', listener: (page: Page) => void): this; /** * Emitted when an uncaught exception happens within the page. @@ -1045,7 +1045,7 @@ export interface Page { /** * Emitted when the page closes. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: (page: Page) => void): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. Also @@ -1084,7 +1084,7 @@ export interface Page { * ``` * */ - off(event: 'crash', listener: () => void): this; + off(event: 'crash', listener: (page: Page) => void): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Playwright can respond @@ -1097,7 +1097,7 @@ export interface Page { * Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) * event is dispatched. */ - off(event: 'domcontentloaded', listener: () => void): this; + off(event: 'domcontentloaded', listener: (page: Page) => void): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the passed @@ -1142,7 +1142,7 @@ export interface Page { /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - off(event: 'load', listener: () => void): this; + off(event: 'load', listener: (page: Page) => void): this; /** * Emitted when an uncaught exception happens within the page. @@ -2814,7 +2814,7 @@ export interface Page { /** * Emitted when the page closes. */ - waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. Also @@ -2853,7 +2853,7 @@ export interface Page { * ``` * */ - waitForEvent(event: 'crash', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'crash', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Playwright can respond @@ -2866,7 +2866,7 @@ export interface Page { * Emitted when the JavaScript [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) * event is dispatched. */ - waitForEvent(event: 'domcontentloaded', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'domcontentloaded', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the passed @@ -2911,7 +2911,7 @@ export interface Page { /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - waitForEvent(event: 'load', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'load', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise; /** * Emitted when an uncaught exception happens within the page. @@ -4513,7 +4513,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -4544,7 +4544,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -4575,7 +4575,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -4606,7 +4606,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -4637,7 +4637,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -5052,7 +5052,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (browserContext: BrowserContext) => boolean, timeout?: number } | ((browserContext: BrowserContext) => boolean)): Promise; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -6970,35 +6970,35 @@ export interface Browser extends EventEmitter { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - on(event: 'disconnected', listener: () => void): this; + on(event: 'disconnected', listener: (browser: Browser) => void): this; /** * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the following: * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - once(event: 'disconnected', listener: () => void): this; + once(event: 'disconnected', listener: (browser: Browser) => void): this; /** * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the following: * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - addListener(event: 'disconnected', listener: () => void): this; + addListener(event: 'disconnected', listener: (browser: Browser) => void): this; /** * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the following: * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - removeListener(event: 'disconnected', listener: () => void): this; + removeListener(event: 'disconnected', listener: (browser: Browser) => void): this; /** * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the following: * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - off(event: 'disconnected', listener: () => void): this; + off(event: 'disconnected', listener: (browser: Browser) => void): this; /** * In case this browser is obtained using @@ -7433,7 +7433,7 @@ export interface ChromiumBrowserContext extends BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -7476,7 +7476,7 @@ export interface ChromiumBrowserContext extends BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -7519,7 +7519,7 @@ export interface ChromiumBrowserContext extends BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -7562,7 +7562,7 @@ export interface ChromiumBrowserContext extends BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -7605,7 +7605,7 @@ export interface ChromiumBrowserContext extends BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: (browserContext: BrowserContext) => void): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -7664,7 +7664,7 @@ export interface ChromiumBrowserContext extends BrowserContext { * - Browser application is closed or crashed. * - The [browser.close()](https://playwright.dev/docs/api/class-browser#browserclose) method was called. */ - waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (browserContext: BrowserContext) => boolean, timeout?: number } | ((browserContext: BrowserContext) => boolean)): Promise; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event will @@ -8870,7 +8870,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: (webSocket: WebSocket) => void): this; /** * Fired when the websocket recieves a frame. @@ -8900,7 +8900,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: (webSocket: WebSocket) => void): this; /** * Fired when the websocket recieves a frame. @@ -8930,7 +8930,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: (webSocket: WebSocket) => void): this; /** * Fired when the websocket recieves a frame. @@ -8960,7 +8960,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: (webSocket: WebSocket) => void): this; /** * Fired when the websocket recieves a frame. @@ -8990,7 +8990,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: (webSocket: WebSocket) => void): this; /** * Fired when the websocket recieves a frame. @@ -9030,7 +9030,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: () => boolean, timeout?: number } | (() => boolean)): Promise; + waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (webSocket: WebSocket) => boolean, timeout?: number } | ((webSocket: WebSocket) => boolean)): Promise; /** * Fired when the websocket recieves a frame.