From 8fc7723f2209d114811817922105d6e45d91e6ed Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Wed, 24 Apr 2024 09:25:43 -0700 Subject: [PATCH] fix(types): allow any return type from event handlers (#30492) Closes #29353. --- .eslintignore | 2 - docs/src/api/class-page.md | 4 +- packages/playwright-core/types/types.d.ts | 556 +++++++++++----------- tests/page/page-dialog.spec.ts | 4 +- utils/generate_types/index.js | 2 +- utils/generate_types/test/test.ts | 4 + 6 files changed, 281 insertions(+), 291 deletions(-) diff --git a/.eslintignore b/.eslintignore index 152cbbe228..60b8fd360f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,8 +7,6 @@ test/assets/modernizr.js /packages/playwright-core/types/* /packages/playwright-ct-core/src/generated/* /index.d.ts -utils/generate_types/overrides.d.ts -utils/generate_types/test/test.ts node_modules/ browser_patches/*/checkout/ browser_patches/chromium/output/ diff --git a/docs/src/api/class-page.md b/docs/src/api/class-page.md index 072f024e17..3934270f07 100644 --- a/docs/src/api/class-page.md +++ b/docs/src/api/class-page.md @@ -290,9 +290,7 @@ Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` o **Usage** ```js -page.on('dialog', dialog => { - dialog.accept(); -}); +page.on('dialog', dialog => dialog.accept()); ``` ```java diff --git a/packages/playwright-core/types/types.d.ts b/packages/playwright-core/types/types.d.ts index fe42f0ae39..23eee3fe17 100644 --- a/packages/playwright-core/types/types.d.ts +++ b/packages/playwright-core/types/types.d.ts @@ -898,7 +898,7 @@ export interface Page { /** * Emitted when the page closes. */ - on(event: 'close', listener: (page: Page) => void): this; + on(event: 'close', listener: (page: Page) => any): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. @@ -918,7 +918,7 @@ export interface Page { * ``` * */ - on(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + on(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page @@ -938,7 +938,7 @@ export interface Page { * ``` * */ - on(event: 'crash', listener: (page: Page) => void): this; + on(event: 'crash', listener: (page: Page) => any): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** @@ -950,28 +950,26 @@ export interface Page { * **Usage** * * ```js - * page.on('dialog', dialog => { - * dialog.accept(); - * }); + * page.on('dialog', dialog => dialog.accept()); * ``` * * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) * listeners are present, all dialogs are automatically dismissed. */ - on(event: 'dialog', listener: (dialog: Dialog) => void): this; + on(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Emitted when the JavaScript * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. */ - on(event: 'domcontentloaded', listener: (page: Page) => void): this; + on(event: 'domcontentloaded', listener: (page: Page) => any): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the * passed {@link Download} instance. */ - on(event: 'download', listener: (download: Download) => void): this; + on(event: 'download', listener: (download: Download) => any): this; /** * Emitted when a file chooser is supposed to appear, such as after clicking the ``. Playwright can @@ -986,27 +984,27 @@ export interface Page { * ``` * */ - on(event: 'filechooser', listener: (fileChooser: FileChooser) => void): this; + on(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; /** * Emitted when a frame is attached. */ - on(event: 'frameattached', listener: (frame: Frame) => void): this; + on(event: 'frameattached', listener: (frame: Frame) => any): this; /** * Emitted when a frame is detached. */ - on(event: 'framedetached', listener: (frame: Frame) => void): this; + on(event: 'framedetached', listener: (frame: Frame) => any): this; /** * Emitted when a frame is navigated to a new url. */ - on(event: 'framenavigated', listener: (frame: Frame) => void): this; + on(event: 'framenavigated', listener: (frame: Frame) => any): this; /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - on(event: 'load', listener: (page: Page) => void): this; + on(event: 'load', listener: (page: Page) => any): this; /** * Emitted when an uncaught exception happens within the page. @@ -1022,7 +1020,7 @@ export interface Page { * ``` * */ - on(event: 'pageerror', listener: (error: Error) => void): this; + on(event: 'pageerror', listener: (error: Error) => any): this; /** * Emitted when the page opens a new tab or window. This event is emitted in addition to the @@ -1050,14 +1048,14 @@ export interface Page { * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to * wait until the page gets to a particular state (you should not need it in most cases). */ - on(event: 'popup', listener: (page: Page) => void): this; + on(event: 'popup', listener: (page: Page) => any): this; /** * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route). */ - on(event: 'request', listener: (request: Request) => void): this; + on(event: 'request', listener: (request: Request) => any): this; /** * Emitted when a request fails, for example by timing out. @@ -1075,130 +1073,130 @@ export interface Page { * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network * error net::ERR_FAILED. */ - on(event: 'requestfailed', listener: (request: Request) => void): this; + on(event: 'requestfailed', listener: (request: Request) => any): this; /** * Emitted when a request finishes successfully after downloading the response body. For a successful response, the * sequence of events is `request`, `response` and `requestfinished`. */ - on(event: 'requestfinished', listener: (request: Request) => void): this; + on(event: 'requestfinished', listener: (request: Request) => any): this; /** * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of * events is `request`, `response` and `requestfinished`. */ - on(event: 'response', listener: (response: Response) => void): this; + on(event: 'response', listener: (response: Response) => any): this; /** * Emitted when {@link WebSocket} request is sent. */ - on(event: 'websocket', listener: (webSocket: WebSocket) => void): this; + on(event: 'websocket', listener: (webSocket: WebSocket) => any): this; /** * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned * by the page. */ - on(event: 'worker', listener: (worker: Worker) => void): this; + on(event: 'worker', listener: (worker: Worker) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: (page: Page) => void): this; + once(event: 'close', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + once(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'crash', listener: (page: Page) => void): this; + once(event: 'crash', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'dialog', listener: (dialog: Dialog) => void): this; + once(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'domcontentloaded', listener: (page: Page) => void): this; + once(event: 'domcontentloaded', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'download', listener: (download: Download) => void): this; + once(event: 'download', listener: (download: Download) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'filechooser', listener: (fileChooser: FileChooser) => void): this; + once(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'frameattached', listener: (frame: Frame) => void): this; + once(event: 'frameattached', listener: (frame: Frame) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'framedetached', listener: (frame: Frame) => void): this; + once(event: 'framedetached', listener: (frame: Frame) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'framenavigated', listener: (frame: Frame) => void): this; + once(event: 'framenavigated', listener: (frame: Frame) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'load', listener: (page: Page) => void): this; + once(event: 'load', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'pageerror', listener: (error: Error) => void): this; + once(event: 'pageerror', listener: (error: Error) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'popup', listener: (page: Page) => void): this; + once(event: 'popup', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'request', listener: (request: Request) => void): this; + once(event: 'request', listener: (request: Request) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'requestfailed', listener: (request: Request) => void): this; + once(event: 'requestfailed', listener: (request: Request) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'requestfinished', listener: (request: Request) => void): this; + once(event: 'requestfinished', listener: (request: Request) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'response', listener: (response: Response) => void): this; + once(event: 'response', listener: (response: Response) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'websocket', listener: (webSocket: WebSocket) => void): this; + once(event: 'websocket', listener: (webSocket: WebSocket) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'worker', listener: (worker: Worker) => void): this; + once(event: 'worker', listener: (worker: Worker) => any): this; /** * Emitted when the page closes. */ - addListener(event: 'close', listener: (page: Page) => void): this; + addListener(event: 'close', listener: (page: Page) => any): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. @@ -1218,7 +1216,7 @@ export interface Page { * ``` * */ - addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page @@ -1238,7 +1236,7 @@ export interface Page { * ``` * */ - addListener(event: 'crash', listener: (page: Page) => void): this; + addListener(event: 'crash', listener: (page: Page) => any): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** @@ -1250,28 +1248,26 @@ export interface Page { * **Usage** * * ```js - * page.on('dialog', dialog => { - * dialog.accept(); - * }); + * page.on('dialog', dialog => dialog.accept()); * ``` * * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) * listeners are present, all dialogs are automatically dismissed. */ - addListener(event: 'dialog', listener: (dialog: Dialog) => void): this; + addListener(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Emitted when the JavaScript * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. */ - addListener(event: 'domcontentloaded', listener: (page: Page) => void): this; + addListener(event: 'domcontentloaded', listener: (page: Page) => any): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the * passed {@link Download} instance. */ - addListener(event: 'download', listener: (download: Download) => void): this; + addListener(event: 'download', listener: (download: Download) => any): this; /** * Emitted when a file chooser is supposed to appear, such as after clicking the ``. Playwright can @@ -1286,27 +1282,27 @@ export interface Page { * ``` * */ - addListener(event: 'filechooser', listener: (fileChooser: FileChooser) => void): this; + addListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; /** * Emitted when a frame is attached. */ - addListener(event: 'frameattached', listener: (frame: Frame) => void): this; + addListener(event: 'frameattached', listener: (frame: Frame) => any): this; /** * Emitted when a frame is detached. */ - addListener(event: 'framedetached', listener: (frame: Frame) => void): this; + addListener(event: 'framedetached', listener: (frame: Frame) => any): this; /** * Emitted when a frame is navigated to a new url. */ - addListener(event: 'framenavigated', listener: (frame: Frame) => void): this; + addListener(event: 'framenavigated', listener: (frame: Frame) => any): this; /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - addListener(event: 'load', listener: (page: Page) => void): this; + addListener(event: 'load', listener: (page: Page) => any): this; /** * Emitted when an uncaught exception happens within the page. @@ -1322,7 +1318,7 @@ export interface Page { * ``` * */ - addListener(event: 'pageerror', listener: (error: Error) => void): this; + addListener(event: 'pageerror', listener: (error: Error) => any): this; /** * Emitted when the page opens a new tab or window. This event is emitted in addition to the @@ -1350,14 +1346,14 @@ export interface Page { * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to * wait until the page gets to a particular state (you should not need it in most cases). */ - addListener(event: 'popup', listener: (page: Page) => void): this; + addListener(event: 'popup', listener: (page: Page) => any): this; /** * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route). */ - addListener(event: 'request', listener: (request: Request) => void): this; + addListener(event: 'request', listener: (request: Request) => any): this; /** * Emitted when a request fails, for example by timing out. @@ -1375,225 +1371,225 @@ export interface Page { * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network * error net::ERR_FAILED. */ - addListener(event: 'requestfailed', listener: (request: Request) => void): this; + addListener(event: 'requestfailed', listener: (request: Request) => any): this; /** * Emitted when a request finishes successfully after downloading the response body. For a successful response, the * sequence of events is `request`, `response` and `requestfinished`. */ - addListener(event: 'requestfinished', listener: (request: Request) => void): this; + addListener(event: 'requestfinished', listener: (request: Request) => any): this; /** * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of * events is `request`, `response` and `requestfinished`. */ - addListener(event: 'response', listener: (response: Response) => void): this; + addListener(event: 'response', listener: (response: Response) => any): this; /** * Emitted when {@link WebSocket} request is sent. */ - addListener(event: 'websocket', listener: (webSocket: WebSocket) => void): this; + addListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this; /** * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned * by the page. */ - addListener(event: 'worker', listener: (worker: Worker) => void): this; + addListener(event: 'worker', listener: (worker: Worker) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: (page: Page) => void): this; + removeListener(event: 'close', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'crash', listener: (page: Page) => void): this; + removeListener(event: 'crash', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'dialog', listener: (dialog: Dialog) => void): this; + removeListener(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'domcontentloaded', listener: (page: Page) => void): this; + removeListener(event: 'domcontentloaded', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'download', listener: (download: Download) => void): this; + removeListener(event: 'download', listener: (download: Download) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'filechooser', listener: (fileChooser: FileChooser) => void): this; + removeListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'frameattached', listener: (frame: Frame) => void): this; + removeListener(event: 'frameattached', listener: (frame: Frame) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'framedetached', listener: (frame: Frame) => void): this; + removeListener(event: 'framedetached', listener: (frame: Frame) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'framenavigated', listener: (frame: Frame) => void): this; + removeListener(event: 'framenavigated', listener: (frame: Frame) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'load', listener: (page: Page) => void): this; + removeListener(event: 'load', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'pageerror', listener: (error: Error) => void): this; + removeListener(event: 'pageerror', listener: (error: Error) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'popup', listener: (page: Page) => void): this; + removeListener(event: 'popup', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'request', listener: (request: Request) => void): this; + removeListener(event: 'request', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'requestfailed', listener: (request: Request) => void): this; + removeListener(event: 'requestfailed', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'requestfinished', listener: (request: Request) => void): this; + removeListener(event: 'requestfinished', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'response', listener: (response: Response) => void): this; + removeListener(event: 'response', listener: (response: Response) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'websocket', listener: (webSocket: WebSocket) => void): this; + removeListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'worker', listener: (worker: Worker) => void): this; + removeListener(event: 'worker', listener: (worker: Worker) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: (page: Page) => void): this; + off(event: 'close', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + off(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'crash', listener: (page: Page) => void): this; + off(event: 'crash', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'dialog', listener: (dialog: Dialog) => void): this; + off(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'domcontentloaded', listener: (page: Page) => void): this; + off(event: 'domcontentloaded', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'download', listener: (download: Download) => void): this; + off(event: 'download', listener: (download: Download) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'filechooser', listener: (fileChooser: FileChooser) => void): this; + off(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'frameattached', listener: (frame: Frame) => void): this; + off(event: 'frameattached', listener: (frame: Frame) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'framedetached', listener: (frame: Frame) => void): this; + off(event: 'framedetached', listener: (frame: Frame) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'framenavigated', listener: (frame: Frame) => void): this; + off(event: 'framenavigated', listener: (frame: Frame) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'load', listener: (page: Page) => void): this; + off(event: 'load', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'pageerror', listener: (error: Error) => void): this; + off(event: 'pageerror', listener: (error: Error) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'popup', listener: (page: Page) => void): this; + off(event: 'popup', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'request', listener: (request: Request) => void): this; + off(event: 'request', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'requestfailed', listener: (request: Request) => void): this; + off(event: 'requestfailed', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'requestfinished', listener: (request: Request) => void): this; + off(event: 'requestfinished', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'response', listener: (response: Response) => void): this; + off(event: 'response', listener: (response: Response) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'websocket', listener: (webSocket: WebSocket) => void): this; + off(event: 'websocket', listener: (webSocket: WebSocket) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'worker', listener: (worker: Worker) => void): this; + off(event: 'worker', listener: (worker: Worker) => any): this; /** * Emitted when the page closes. */ - prependListener(event: 'close', listener: (page: Page) => void): this; + prependListener(event: 'close', listener: (page: Page) => any): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. @@ -1613,7 +1609,7 @@ export interface Page { * ``` * */ - prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page @@ -1633,7 +1629,7 @@ export interface Page { * ``` * */ - prependListener(event: 'crash', listener: (page: Page) => void): this; + prependListener(event: 'crash', listener: (page: Page) => any): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** @@ -1645,28 +1641,26 @@ export interface Page { * **Usage** * * ```js - * page.on('dialog', dialog => { - * dialog.accept(); - * }); + * page.on('dialog', dialog => dialog.accept()); * ``` * * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) * listeners are present, all dialogs are automatically dismissed. */ - prependListener(event: 'dialog', listener: (dialog: Dialog) => void): this; + prependListener(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Emitted when the JavaScript * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. */ - prependListener(event: 'domcontentloaded', listener: (page: Page) => void): this; + prependListener(event: 'domcontentloaded', listener: (page: Page) => any): this; /** * Emitted when attachment download started. User can access basic file operations on downloaded content via the * passed {@link Download} instance. */ - prependListener(event: 'download', listener: (download: Download) => void): this; + prependListener(event: 'download', listener: (download: Download) => any): this; /** * Emitted when a file chooser is supposed to appear, such as after clicking the ``. Playwright can @@ -1681,27 +1675,27 @@ export interface Page { * ``` * */ - prependListener(event: 'filechooser', listener: (fileChooser: FileChooser) => void): this; + prependListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; /** * Emitted when a frame is attached. */ - prependListener(event: 'frameattached', listener: (frame: Frame) => void): this; + prependListener(event: 'frameattached', listener: (frame: Frame) => any): this; /** * Emitted when a frame is detached. */ - prependListener(event: 'framedetached', listener: (frame: Frame) => void): this; + prependListener(event: 'framedetached', listener: (frame: Frame) => any): this; /** * Emitted when a frame is navigated to a new url. */ - prependListener(event: 'framenavigated', listener: (frame: Frame) => void): this; + prependListener(event: 'framenavigated', listener: (frame: Frame) => any): this; /** * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. */ - prependListener(event: 'load', listener: (page: Page) => void): this; + prependListener(event: 'load', listener: (page: Page) => any): this; /** * Emitted when an uncaught exception happens within the page. @@ -1717,7 +1711,7 @@ export interface Page { * ``` * */ - prependListener(event: 'pageerror', listener: (error: Error) => void): this; + prependListener(event: 'pageerror', listener: (error: Error) => any): this; /** * Emitted when the page opens a new tab or window. This event is emitted in addition to the @@ -1745,14 +1739,14 @@ export interface Page { * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to * wait until the page gets to a particular state (you should not need it in most cases). */ - prependListener(event: 'popup', listener: (page: Page) => void): this; + prependListener(event: 'popup', listener: (page: Page) => any): this; /** * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route). */ - prependListener(event: 'request', listener: (request: Request) => void): this; + prependListener(event: 'request', listener: (request: Request) => any): this; /** * Emitted when a request fails, for example by timing out. @@ -1770,30 +1764,30 @@ export interface Page { * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network * error net::ERR_FAILED. */ - prependListener(event: 'requestfailed', listener: (request: Request) => void): this; + prependListener(event: 'requestfailed', listener: (request: Request) => any): this; /** * Emitted when a request finishes successfully after downloading the response body. For a successful response, the * sequence of events is `request`, `response` and `requestfinished`. */ - prependListener(event: 'requestfinished', listener: (request: Request) => void): this; + prependListener(event: 'requestfinished', listener: (request: Request) => any): this; /** * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of * events is `request`, `response` and `requestfinished`. */ - prependListener(event: 'response', listener: (response: Response) => void): this; + prependListener(event: 'response', listener: (response: Response) => any): this; /** * Emitted when {@link WebSocket} request is sent. */ - prependListener(event: 'websocket', listener: (webSocket: WebSocket) => void): this; + prependListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this; /** * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned * by the page. */ - prependListener(event: 'worker', listener: (worker: Worker) => void): this; + prependListener(event: 'worker', listener: (worker: Worker) => any): this; /** * **NOTE** This method is experimental and its behavior may change in the upcoming releases. @@ -4443,9 +4437,7 @@ export interface Page { * **Usage** * * ```js - * page.on('dialog', dialog => { - * dialog.accept(); - * }); + * page.on('dialog', dialog => dialog.accept()); * ``` * * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or @@ -7716,7 +7708,7 @@ export interface BrowserContext { * ``` * */ - on(event: 'backgroundpage', listener: (page: Page) => void): this; + on(event: 'backgroundpage', listener: (page: Page) => any): this; /** * Emitted when Browser context gets closed. This might happen because of one of the following: @@ -7724,7 +7716,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called. */ - on(event: 'close', listener: (browserContext: BrowserContext) => void): this; + on(event: 'close', listener: (browserContext: BrowserContext) => any): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. @@ -7745,7 +7737,7 @@ export interface BrowserContext { * ``` * */ - on(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + on(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** @@ -7766,7 +7758,7 @@ export interface BrowserContext { * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) * listeners are present, all dialogs are automatically dismissed. */ - on(event: 'dialog', listener: (dialog: Dialog) => void): this; + on(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event @@ -7794,7 +7786,7 @@ export interface BrowserContext { * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to * wait until the page gets to a particular state (you should not need it in most cases). */ - on(event: 'page', listener: (page: Page) => void): this; + on(event: 'page', listener: (page: Page) => any): this; /** * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To @@ -7805,7 +7797,7 @@ export interface BrowserContext { * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route). */ - on(event: 'request', listener: (request: Request) => void): this; + on(event: 'request', listener: (request: Request) => any): this; /** * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page, @@ -7817,7 +7809,7 @@ export interface BrowserContext { * event and not with * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed). */ - on(event: 'requestfailed', listener: (request: Request) => void): this; + on(event: 'requestfailed', listener: (request: Request) => any): this; /** * Emitted when a request finishes successfully after downloading the response body. For a successful response, the @@ -7825,82 +7817,82 @@ export interface BrowserContext { * particular page, use * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished). */ - on(event: 'requestfinished', listener: (request: Request) => void): this; + on(event: 'requestfinished', listener: (request: Request) => any): this; /** * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response). */ - on(event: 'response', listener: (response: Response) => void): this; + on(event: 'response', listener: (response: Response) => any): this; /** * **NOTE** Service workers are only supported on Chromium-based browsers. * * Emitted when new service worker is created in the context. */ - on(event: 'serviceworker', listener: (worker: Worker) => void): this; + on(event: 'serviceworker', listener: (worker: Worker) => any): this; /** * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead. */ - on(event: 'weberror', listener: (webError: WebError) => void): this; + on(event: 'weberror', listener: (webError: WebError) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'backgroundpage', listener: (page: Page) => void): this; + once(event: 'backgroundpage', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: (browserContext: BrowserContext) => void): this; + once(event: 'close', listener: (browserContext: BrowserContext) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + once(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'dialog', listener: (dialog: Dialog) => void): this; + once(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'page', listener: (page: Page) => void): this; + once(event: 'page', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'request', listener: (request: Request) => void): this; + once(event: 'request', listener: (request: Request) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'requestfailed', listener: (request: Request) => void): this; + once(event: 'requestfailed', listener: (request: Request) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'requestfinished', listener: (request: Request) => void): this; + once(event: 'requestfinished', listener: (request: Request) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'response', listener: (response: Response) => void): this; + once(event: 'response', listener: (response: Response) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'serviceworker', listener: (worker: Worker) => void): this; + once(event: 'serviceworker', listener: (worker: Worker) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'weberror', listener: (webError: WebError) => void): this; + once(event: 'weberror', listener: (webError: WebError) => any): this; /** * **NOTE** Only works with Chromium browser's persistent context. @@ -7912,7 +7904,7 @@ export interface BrowserContext { * ``` * */ - addListener(event: 'backgroundpage', listener: (page: Page) => void): this; + addListener(event: 'backgroundpage', listener: (page: Page) => any): this; /** * Emitted when Browser context gets closed. This might happen because of one of the following: @@ -7920,7 +7912,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called. */ - addListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; + addListener(event: 'close', listener: (browserContext: BrowserContext) => any): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. @@ -7941,7 +7933,7 @@ export interface BrowserContext { * ``` * */ - addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** @@ -7962,7 +7954,7 @@ export interface BrowserContext { * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) * listeners are present, all dialogs are automatically dismissed. */ - addListener(event: 'dialog', listener: (dialog: Dialog) => void): this; + addListener(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event @@ -7990,7 +7982,7 @@ export interface BrowserContext { * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to * wait until the page gets to a particular state (you should not need it in most cases). */ - addListener(event: 'page', listener: (page: Page) => void): this; + addListener(event: 'page', listener: (page: Page) => any): this; /** * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To @@ -8001,7 +7993,7 @@ export interface BrowserContext { * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route). */ - addListener(event: 'request', listener: (request: Request) => void): this; + addListener(event: 'request', listener: (request: Request) => any): this; /** * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page, @@ -8013,7 +8005,7 @@ export interface BrowserContext { * event and not with * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed). */ - addListener(event: 'requestfailed', listener: (request: Request) => void): this; + addListener(event: 'requestfailed', listener: (request: Request) => any): this; /** * Emitted when a request finishes successfully after downloading the response body. For a successful response, the @@ -8021,137 +8013,137 @@ export interface BrowserContext { * particular page, use * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished). */ - addListener(event: 'requestfinished', listener: (request: Request) => void): this; + addListener(event: 'requestfinished', listener: (request: Request) => any): this; /** * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response). */ - addListener(event: 'response', listener: (response: Response) => void): this; + addListener(event: 'response', listener: (response: Response) => any): this; /** * **NOTE** Service workers are only supported on Chromium-based browsers. * * Emitted when new service worker is created in the context. */ - addListener(event: 'serviceworker', listener: (worker: Worker) => void): this; + addListener(event: 'serviceworker', listener: (worker: Worker) => any): this; /** * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead. */ - addListener(event: 'weberror', listener: (webError: WebError) => void): this; + addListener(event: 'weberror', listener: (webError: WebError) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'backgroundpage', listener: (page: Page) => void): this; + removeListener(event: 'backgroundpage', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; + removeListener(event: 'close', listener: (browserContext: BrowserContext) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'dialog', listener: (dialog: Dialog) => void): this; + removeListener(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'page', listener: (page: Page) => void): this; + removeListener(event: 'page', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'request', listener: (request: Request) => void): this; + removeListener(event: 'request', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'requestfailed', listener: (request: Request) => void): this; + removeListener(event: 'requestfailed', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'requestfinished', listener: (request: Request) => void): this; + removeListener(event: 'requestfinished', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'response', listener: (response: Response) => void): this; + removeListener(event: 'response', listener: (response: Response) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'serviceworker', listener: (worker: Worker) => void): this; + removeListener(event: 'serviceworker', listener: (worker: Worker) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'weberror', listener: (webError: WebError) => void): this; + removeListener(event: 'weberror', listener: (webError: WebError) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'backgroundpage', listener: (page: Page) => void): this; + off(event: 'backgroundpage', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: (browserContext: BrowserContext) => void): this; + off(event: 'close', listener: (browserContext: BrowserContext) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + off(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'dialog', listener: (dialog: Dialog) => void): this; + off(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'page', listener: (page: Page) => void): this; + off(event: 'page', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'request', listener: (request: Request) => void): this; + off(event: 'request', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'requestfailed', listener: (request: Request) => void): this; + off(event: 'requestfailed', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'requestfinished', listener: (request: Request) => void): this; + off(event: 'requestfinished', listener: (request: Request) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'response', listener: (response: Response) => void): this; + off(event: 'response', listener: (response: Response) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'serviceworker', listener: (worker: Worker) => void): this; + off(event: 'serviceworker', listener: (worker: Worker) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'weberror', listener: (webError: WebError) => void): this; + off(event: 'weberror', listener: (webError: WebError) => any): this; /** * **NOTE** Only works with Chromium browser's persistent context. @@ -8163,7 +8155,7 @@ export interface BrowserContext { * ``` * */ - prependListener(event: 'backgroundpage', listener: (page: Page) => void): this; + prependListener(event: 'backgroundpage', listener: (page: Page) => any): this; /** * Emitted when Browser context gets closed. This might happen because of one of the following: @@ -8171,7 +8163,7 @@ export interface BrowserContext { * - Browser application is closed or crashed. * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called. */ - prependListener(event: 'close', listener: (browserContext: BrowserContext) => void): this; + prependListener(event: 'close', listener: (browserContext: BrowserContext) => any): this; /** * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. @@ -8192,7 +8184,7 @@ export interface BrowserContext { * ``` * */ - prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** @@ -8213,7 +8205,7 @@ export interface BrowserContext { * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) * listeners are present, all dialogs are automatically dismissed. */ - prependListener(event: 'dialog', listener: (dialog: Dialog) => void): this; + prependListener(event: 'dialog', listener: (dialog: Dialog) => any): this; /** * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event @@ -8241,7 +8233,7 @@ export interface BrowserContext { * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to * wait until the page gets to a particular state (you should not need it in most cases). */ - prependListener(event: 'page', listener: (page: Page) => void): this; + prependListener(event: 'page', listener: (page: Page) => any): this; /** * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To @@ -8252,7 +8244,7 @@ export interface BrowserContext { * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route). */ - prependListener(event: 'request', listener: (request: Request) => void): this; + prependListener(event: 'request', listener: (request: Request) => any): this; /** * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page, @@ -8264,7 +8256,7 @@ export interface BrowserContext { * event and not with * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed). */ - prependListener(event: 'requestfailed', listener: (request: Request) => void): this; + prependListener(event: 'requestfailed', listener: (request: Request) => any): this; /** * Emitted when a request finishes successfully after downloading the response body. For a successful response, the @@ -8272,27 +8264,27 @@ export interface BrowserContext { * particular page, use * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished). */ - prependListener(event: 'requestfinished', listener: (request: Request) => void): this; + prependListener(event: 'requestfinished', listener: (request: Request) => any): this; /** * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response). */ - prependListener(event: 'response', listener: (response: Response) => void): this; + prependListener(event: 'response', listener: (response: Response) => any): this; /** * **NOTE** Service workers are only supported on Chromium-based browsers. * * Emitted when new service worker is created in the context. */ - prependListener(event: 'serviceworker', listener: (worker: Worker) => void): this; + prependListener(event: 'serviceworker', listener: (worker: Worker) => any): this; /** * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead. */ - prependListener(event: 'weberror', listener: (webError: WebError) => void): this; + prependListener(event: 'weberror', listener: (webError: WebError) => any): this; /** * Adds cookies into this browser context. All pages within this context will have these cookies installed. Cookies @@ -9054,34 +9046,34 @@ export interface Worker { * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is * terminated. */ - on(event: 'close', listener: (worker: Worker) => void): this; + on(event: 'close', listener: (worker: Worker) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: (worker: Worker) => void): this; + once(event: 'close', listener: (worker: Worker) => any): this; /** * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is * terminated. */ - addListener(event: 'close', listener: (worker: Worker) => void): this; + addListener(event: 'close', listener: (worker: Worker) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: (worker: Worker) => void): this; + removeListener(event: 'close', listener: (worker: Worker) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: (worker: Worker) => void): this; + off(event: 'close', listener: (worker: Worker) => any): this; /** * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is * terminated. */ - prependListener(event: 'close', listener: (worker: Worker) => void): this; + prependListener(event: 'close', listener: (worker: Worker) => any): this; url(): string; } @@ -14060,7 +14052,7 @@ export interface ElectronApplication { /** * This event is issued when the application process has been terminated. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: () => any): this; /** * Emitted when JavaScript within the Electron main process calls one of console API methods, e.g. `console.log` or @@ -14081,33 +14073,33 @@ export interface ElectronApplication { * ``` * */ - on(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + on(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * This event is issued for every window that is created **and loaded** in Electron. It contains a {@link Page} that * can be used for Playwright automation. */ - on(event: 'window', listener: (page: Page) => void): this; + on(event: 'window', listener: (page: Page) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: () => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + once(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'window', listener: (page: Page) => void): this; + once(event: 'window', listener: (page: Page) => any): this; /** * This event is issued when the application process has been terminated. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: () => any): this; /** * Emitted when JavaScript within the Electron main process calls one of console API methods, e.g. `console.log` or @@ -14128,48 +14120,48 @@ export interface ElectronApplication { * ``` * */ - addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * This event is issued for every window that is created **and loaded** in Electron. It contains a {@link Page} that * can be used for Playwright automation. */ - addListener(event: 'window', listener: (page: Page) => void): this; + addListener(event: 'window', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'window', listener: (page: Page) => void): this; + removeListener(event: 'window', listener: (page: Page) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + off(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'window', listener: (page: Page) => void): this; + off(event: 'window', listener: (page: Page) => any): this; /** * This event is issued when the application process has been terminated. */ - prependListener(event: 'close', listener: () => void): this; + prependListener(event: 'close', listener: () => any): this; /** * Emitted when JavaScript within the Electron main process calls one of console API methods, e.g. `console.log` or @@ -14190,13 +14182,13 @@ export interface ElectronApplication { * ``` * */ - prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => void): this; + prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; /** * This event is issued for every window that is created **and loaded** in Electron. It contains a {@link Page} that * can be used for Playwright automation. */ - prependListener(event: 'window', listener: (page: Page) => void): this; + prependListener(event: 'window', listener: (page: Page) => any): this; /** * Returns the BrowserWindow object that corresponds to the given Playwright page. @@ -14599,62 +14591,62 @@ export interface AndroidDevice { /** * Emitted when the device connection gets closed. */ - on(event: 'close', listener: (androidDevice: AndroidDevice) => void): this; + on(event: 'close', listener: (androidDevice: AndroidDevice) => any): this; /** * Emitted when a new WebView instance is detected. */ - on(event: 'webview', listener: (androidWebView: AndroidWebView) => void): this; + on(event: 'webview', listener: (androidWebView: AndroidWebView) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: (androidDevice: AndroidDevice) => void): this; + once(event: 'close', listener: (androidDevice: AndroidDevice) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'webview', listener: (androidWebView: AndroidWebView) => void): this; + once(event: 'webview', listener: (androidWebView: AndroidWebView) => any): this; /** * Emitted when the device connection gets closed. */ - addListener(event: 'close', listener: (androidDevice: AndroidDevice) => void): this; + addListener(event: 'close', listener: (androidDevice: AndroidDevice) => any): this; /** * Emitted when a new WebView instance is detected. */ - addListener(event: 'webview', listener: (androidWebView: AndroidWebView) => void): this; + addListener(event: 'webview', listener: (androidWebView: AndroidWebView) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: (androidDevice: AndroidDevice) => void): this; + removeListener(event: 'close', listener: (androidDevice: AndroidDevice) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'webview', listener: (androidWebView: AndroidWebView) => void): this; + removeListener(event: 'webview', listener: (androidWebView: AndroidWebView) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: (androidDevice: AndroidDevice) => void): this; + off(event: 'close', listener: (androidDevice: AndroidDevice) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'webview', listener: (androidWebView: AndroidWebView) => void): this; + off(event: 'webview', listener: (androidWebView: AndroidWebView) => any): this; /** * Emitted when the device connection gets closed. */ - prependListener(event: 'close', listener: (androidDevice: AndroidDevice) => void): this; + prependListener(event: 'close', listener: (androidDevice: AndroidDevice) => any): this; /** * Emitted when a new WebView instance is detected. */ - prependListener(event: 'webview', listener: (androidWebView: AndroidWebView) => void): this; + prependListener(event: 'webview', listener: (androidWebView: AndroidWebView) => any): this; /** * Disconnects from the device. @@ -15406,62 +15398,62 @@ export interface AndroidSocket { /** * Emitted when the socket is closed. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: () => any): this; /** * Emitted when data is available to read from the socket. */ - on(event: 'data', listener: (buffer: Buffer) => void): this; + on(event: 'data', listener: (buffer: Buffer) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: () => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'data', listener: (buffer: Buffer) => void): this; + once(event: 'data', listener: (buffer: Buffer) => any): this; /** * Emitted when the socket is closed. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: () => any): this; /** * Emitted when data is available to read from the socket. */ - addListener(event: 'data', listener: (buffer: Buffer) => void): this; + addListener(event: 'data', listener: (buffer: Buffer) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'data', listener: (buffer: Buffer) => void): this; + removeListener(event: 'data', listener: (buffer: Buffer) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'data', listener: (buffer: Buffer) => void): this; + off(event: 'data', listener: (buffer: Buffer) => any): this; /** * Emitted when the socket is closed. */ - prependListener(event: 'close', listener: () => void): this; + prependListener(event: 'close', listener: () => any): this; /** * Emitted when data is available to read from the socket. */ - prependListener(event: 'data', listener: (buffer: Buffer) => void): this; + prependListener(event: 'data', listener: (buffer: Buffer) => any): this; /** * Closes the socket. @@ -15485,32 +15477,32 @@ export interface AndroidWebView { /** * Emitted when the WebView is closed. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: () => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: () => any): this; /** * Emitted when the WebView is closed. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: () => any): this; /** * Emitted when the WebView is closed. */ - prependListener(event: 'close', listener: () => void): this; + prependListener(event: 'close', listener: () => any): this; /** * Connects to the WebView and returns a regular Playwright {@link Page} to interact with. @@ -16514,12 +16506,12 @@ export interface Browser extends EventEmitter { * - Browser application is closed or crashed. * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called. */ - on(event: 'disconnected', listener: (browser: Browser) => void): this; + on(event: 'disconnected', listener: (browser: Browser) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'disconnected', listener: (browser: Browser) => void): this; + once(event: 'disconnected', listener: (browser: Browser) => any): this; /** * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the @@ -16527,17 +16519,17 @@ export interface Browser extends EventEmitter { * - Browser application is closed or crashed. * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called. */ - addListener(event: 'disconnected', listener: (browser: Browser) => void): this; + addListener(event: 'disconnected', listener: (browser: Browser) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'disconnected', listener: (browser: Browser) => void): this; + removeListener(event: 'disconnected', listener: (browser: Browser) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'disconnected', listener: (browser: Browser) => void): this; + off(event: 'disconnected', listener: (browser: Browser) => any): this; /** * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the @@ -16545,7 +16537,7 @@ export interface Browser extends EventEmitter { * - Browser application is closed or crashed. * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called. */ - prependListener(event: 'disconnected', listener: (browser: Browser) => void): this; + prependListener(event: 'disconnected', listener: (browser: Browser) => any): this; /** * Get the browser type (chromium, firefox or webkit) that the browser belongs to. @@ -17089,32 +17081,32 @@ export interface BrowserServer { /** * Emitted when the browser server closes. */ - on(event: 'close', listener: () => void): this; + on(event: 'close', listener: () => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: () => void): this; + once(event: 'close', listener: () => any): this; /** * Emitted when the browser server closes. */ - addListener(event: 'close', listener: () => void): this; + addListener(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: () => void): this; + removeListener(event: 'close', listener: () => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: () => void): this; + off(event: 'close', listener: () => any): this; /** * Emitted when the browser server closes. */ - prependListener(event: 'close', listener: () => void): this; + prependListener(event: 'close', listener: () => any): this; /** * Closes the browser gracefully and makes sure the process is terminated. @@ -19671,7 +19663,7 @@ export interface WebSocket { /** * Fired when the websocket closes. */ - on(event: 'close', listener: (webSocket: WebSocket) => void): this; + on(event: 'close', listener: (webSocket: WebSocket) => any): this; /** * Fired when the websocket receives a frame. @@ -19681,7 +19673,7 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Fired when the websocket sends a frame. @@ -19691,17 +19683,17 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Fired when the websocket has an error. */ - on(event: 'socketerror', listener: (string: string) => void): this; + on(event: 'socketerror', listener: (string: string) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'close', listener: (webSocket: WebSocket) => void): this; + once(event: 'close', listener: (webSocket: WebSocket) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. @@ -19711,7 +19703,7 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. @@ -19721,17 +19713,17 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. */ - once(event: 'socketerror', listener: (string: string) => void): this; + once(event: 'socketerror', listener: (string: string) => any): this; /** * Fired when the websocket closes. */ - addListener(event: 'close', listener: (webSocket: WebSocket) => void): this; + addListener(event: 'close', listener: (webSocket: WebSocket) => any): this; /** * Fired when the websocket receives a frame. @@ -19741,7 +19733,7 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Fired when the websocket sends a frame. @@ -19751,17 +19743,17 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Fired when the websocket has an error. */ - addListener(event: 'socketerror', listener: (string: string) => void): this; + addListener(event: 'socketerror', listener: (string: string) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'close', listener: (webSocket: WebSocket) => void): this; + removeListener(event: 'close', listener: (webSocket: WebSocket) => any): this; /** * Removes an event listener added by `on` or `addListener`. @@ -19771,7 +19763,7 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Removes an event listener added by `on` or `addListener`. @@ -19781,17 +19773,17 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - removeListener(event: 'socketerror', listener: (string: string) => void): this; + removeListener(event: 'socketerror', listener: (string: string) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'close', listener: (webSocket: WebSocket) => void): this; + off(event: 'close', listener: (webSocket: WebSocket) => any): this; /** * Removes an event listener added by `on` or `addListener`. @@ -19801,7 +19793,7 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Removes an event listener added by `on` or `addListener`. @@ -19811,17 +19803,17 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Removes an event listener added by `on` or `addListener`. */ - off(event: 'socketerror', listener: (string: string) => void): this; + off(event: 'socketerror', listener: (string: string) => any): this; /** * Fired when the websocket closes. */ - prependListener(event: 'close', listener: (webSocket: WebSocket) => void): this; + prependListener(event: 'close', listener: (webSocket: WebSocket) => any): this; /** * Fired when the websocket receives a frame. @@ -19831,7 +19823,7 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Fired when the websocket sends a frame. @@ -19841,12 +19833,12 @@ export interface WebSocket { * frame payload */ payload: string|Buffer; - }) => void): this; + }) => any): this; /** * Fired when the websocket has an error. */ - prependListener(event: 'socketerror', listener: (string: string) => void): this; + prependListener(event: 'socketerror', listener: (string: string) => any): this; /** * Indicates that the web socket has been closed. diff --git a/tests/page/page-dialog.spec.ts b/tests/page/page-dialog.spec.ts index ca7c0d45ae..fdaed252b8 100644 --- a/tests/page/page-dialog.spec.ts +++ b/tests/page/page-dialog.spec.ts @@ -43,9 +43,7 @@ it('should allow accepting prompts @smoke', async ({ page, isElectron }) => { it('should dismiss the prompt', async ({ page, isElectron }) => { it.skip(isElectron, 'prompt() is not a thing in electron'); - page.on('dialog', dialog => { - void dialog.dismiss(); - }); + page.on('dialog', dialog => dialog.dismiss()); const result = await page.evaluate(() => prompt('question?')); expect(result).toBe(null); }); diff --git a/utils/generate_types/index.js b/utils/generate_types/index.js index 24966b1704..e6b549c173 100644 --- a/utils/generate_types/index.js +++ b/utils/generate_types/index.js @@ -283,7 +283,7 @@ class TypesGenerator { parts.push(this.writeComment(comment, indent)); else parts.push(this.writeComment(commentForMethod[method], indent)); - parts.push(` ${method}(event: '${eventName}', listener: (${params}) => void): this;\n`); + parts.push(` ${method}(event: '${eventName}', listener: (${params}) => any): this;\n`); } } diff --git a/utils/generate_types/test/test.ts b/utils/generate_types/test/test.ts index e13c2ac43c..e4b090d8d2 100644 --- a/utils/generate_types/test/test.ts +++ b/utils/generate_types/test/test.ts @@ -921,6 +921,10 @@ playwright.chromium.launch().then(async browser => { .removeListener('close', listener) .off('close', listener); } + { + const page: playwright.Page = {} as any; + page.on('dialog', dialog => dialog.accept()); + } }); // waitForResponse callback predicate