fix: add parameter to close/crash/disconnected etc events (#5098)

This commit is contained in:
Yury Semikhatsky 2021-01-22 09:58:31 -08:00 committed by GitHub
parent 018727db8e
commit a4eb121399
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 122 additions and 55 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -3,6 +3,7 @@
The [WebSocket] class represents websocket connections in the page.
## event: WebSocket.close
- type: <[WebSocket]>
Fired when the websocket closes.

View File

@ -91,6 +91,6 @@ export class Browser extends ChannelOwner<channels.BrowserChannel, channels.Brow
_didClose() {
this._isConnected = false;
this.emit(Events.Browser.Disconnected);
this.emit(Events.Browser.Disconnected, this);
}
}

View File

@ -239,7 +239,7 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel,
async _onClose() {
if (this._browser)
this._browser._contexts.delete(this);
this.emit(Events.BrowserContext.Close);
this.emit(Events.BrowserContext.Close, this);
}
async close(): Promise<void> {

View File

@ -350,7 +350,7 @@ export class WebSocket extends ChannelOwner<channels.WebSocketChannel, channels.
this._channel.on('socketError', ({ error }) => this.emit(Events.WebSocket.Error, error));
this._channel.on('close', () => {
this._isClosed = true;
this.emit(Events.WebSocket.Close);
this.emit(Events.WebSocket.Close, this);
});
}

View File

@ -117,12 +117,12 @@ export class Page extends ChannelOwner<channels.PageChannel, channels.PageInitia
this._channel.on('console', ({ message }) => 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<channels.PageChannel, channels.PageInitia
_onClose() {
this._closed = true;
this._browserContext._pages.delete(this);
this.emit(Events.Page.Close);
this.emit(Events.Page.Close, this);
}
private _onCrash() {
this.emit(Events.Page.Crash);
this.emit(Events.Page.Crash, this);
}
context(): BrowserContext {

View File

@ -141,6 +141,15 @@ it('close() should be callable twice', async ({browser}) => {
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();

View File

@ -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);

View File

@ -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);

View File

@ -36,7 +36,8 @@ describe('', (suite, { browserName, platform, mode }) => {
it('should emit crash event when page crashes', async ({page, browserName, toImpl}) => {
await page.setContent(`<div>This page should crash</div>`);
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}) => {

View File

@ -69,6 +69,22 @@ it('should emit frame events', async ({ page, server, isFirefox }) => {
expect(log.join(':')).toBe('close:open:received<incoming>:sent<outgoing>');
});
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);

94
types/types.d.ts vendored
View File

@ -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<void>;
waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise<Page>;
/**
* 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<void>;
waitForEvent(event: 'crash', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise<Page>;
/**
* 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<void>;
waitForEvent(event: 'domcontentloaded', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise<Page>;
/**
* 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<void>;
waitForEvent(event: 'load', optionsOrPredicate?: { predicate?: (page: Page) => boolean, timeout?: number } | ((page: Page) => boolean)): Promise<Page>;
/**
* 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<void>;
waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (browserContext: BrowserContext) => boolean, timeout?: number } | ((browserContext: BrowserContext) => boolean)): Promise<BrowserContext>;
/**
* 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<void>;
waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (browserContext: BrowserContext) => boolean, timeout?: number } | ((browserContext: BrowserContext) => boolean)): Promise<BrowserContext>;
/**
* 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<void>;
waitForEvent(event: 'close', optionsOrPredicate?: { predicate?: (webSocket: WebSocket) => boolean, timeout?: number } | ((webSocket: WebSocket) => boolean)): Promise<WebSocket>;
/**
* Fired when the websocket recieves a frame.