diff --git a/.eslintrc.js b/.eslintrc.js index a107d041040e1..af7ee072c26f7 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -140,6 +140,8 @@ module.exports = { 'arrow-body-style': ['error', 'always'], // Error if comments do not adhere to `tsdoc`. 'tsdoc/syntax': 2, + // Keeps array types simple for readability. + '@typescript-eslint/array-type': ['error', {default: 'array'}], 'no-unused-vars': 0, '@typescript-eslint/no-unused-vars': [ 'error', diff --git a/docs/api/index.md b/docs/api/index.md index 11bf9a8aa2914..03f904ace7cdd 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -155,6 +155,7 @@ sidebar_label: API | [KeyInput](./puppeteer.keyinput.md) | All the valid keys that can be passed to functions that take user input, such as [keyboard.press](./puppeteer.keyboard.press.md) | | [LowerCasePaperFormat](./puppeteer.lowercasepaperformat.md) | | | [MouseButton](./puppeteer.mousebutton.md) | | +| [NodeFor](./puppeteer.nodefor.md) | | | [PaperFormat](./puppeteer.paperformat.md) | All the valid paper format types when printing a PDF. | | [Permission](./puppeteer.permission.md) | | | [Platform](./puppeteer.platform.md) | Supported platforms. | diff --git a/docs/api/puppeteer.coverageentry.md b/docs/api/puppeteer.coverageentry.md index 1833f9320d2f0..1d89d8dbc9fea 100644 --- a/docs/api/puppeteer.coverageentry.md +++ b/docs/api/puppeteer.coverageentry.md @@ -14,8 +14,8 @@ export interface CoverageEntry ## Properties -| Property | Modifiers | Type | Description | -| --------------------------------------------- | --------- | -------------------------------------------- | --------------------------------------------- | -| [ranges](./puppeteer.coverageentry.ranges.md) | | Array<{ start: number; end: number; }> | The covered range as start and end positions. | -| [text](./puppeteer.coverageentry.text.md) | | string | The content of the style sheet or script. | -| [url](./puppeteer.coverageentry.url.md) | | string | The URL of the style sheet or script. | +| Property | Modifiers | Type | Description | +| --------------------------------------------- | --------- | ----------------------------------- | --------------------------------------------- | +| [ranges](./puppeteer.coverageentry.ranges.md) | | { start: number; end: number; }\[\] | The covered range as start and end positions. | +| [text](./puppeteer.coverageentry.text.md) | | string | The content of the style sheet or script. | +| [url](./puppeteer.coverageentry.url.md) | | string | The URL of the style sheet or script. | diff --git a/docs/api/puppeteer.coverageentry.ranges.md b/docs/api/puppeteer.coverageentry.ranges.md index 18dbd743d24c0..4afc7cd3abedb 100644 --- a/docs/api/puppeteer.coverageentry.ranges.md +++ b/docs/api/puppeteer.coverageentry.ranges.md @@ -10,9 +10,9 @@ The covered range as start and end positions. ```typescript interface CoverageEntry { - ranges: Array<{ + ranges: { start: number; end: number; - }>; + }[]; } ``` diff --git a/docs/api/puppeteer.customqueryhandler.md b/docs/api/puppeteer.customqueryhandler.md index 9a05a75abacd6..e2420101f7714 100644 --- a/docs/api/puppeteer.customqueryhandler.md +++ b/docs/api/puppeteer.customqueryhandler.md @@ -14,7 +14,7 @@ export interface CustomQueryHandler ## Properties -| Property | Modifiers | Type | Description | -| ------------------------------------------------------- | --------- | ----------------------------------------------------------------------------------------------- | ----------------- | -| [queryAll?](./puppeteer.customqueryhandler.queryall.md) | | (element: Element \| Document, selector: string) => Element\[\] \| NodeListOf<Element> | (Optional) | -| [queryOne?](./puppeteer.customqueryhandler.queryone.md) | | (element: Element \| Document, selector: string) => Element \| null | (Optional) | +| Property | Modifiers | Type | Description | +| ------------------------------------------------------- | --------- | ---------------------------------------------------- | ----------------- | +| [queryAll?](./puppeteer.customqueryhandler.queryall.md) | | (element: Node, selector: string) => Node\[\] | (Optional) | +| [queryOne?](./puppeteer.customqueryhandler.queryone.md) | | (element: Node, selector: string) => Node \| null | (Optional) | diff --git a/docs/api/puppeteer.customqueryhandler.queryall.md b/docs/api/puppeteer.customqueryhandler.queryall.md index df6b06b477f44..f6f88e56359e8 100644 --- a/docs/api/puppeteer.customqueryhandler.queryall.md +++ b/docs/api/puppeteer.customqueryhandler.queryall.md @@ -8,9 +8,6 @@ sidebar_label: CustomQueryHandler.queryAll ```typescript interface CustomQueryHandler { - queryAll?: ( - element: Element | Document, - selector: string - ) => Element[] | NodeListOf; + queryAll?: (element: Node, selector: string) => Node[]; } ``` diff --git a/docs/api/puppeteer.customqueryhandler.queryone.md b/docs/api/puppeteer.customqueryhandler.queryone.md index 3dd2be298a839..b1cdbf4411f5c 100644 --- a/docs/api/puppeteer.customqueryhandler.queryone.md +++ b/docs/api/puppeteer.customqueryhandler.queryone.md @@ -8,6 +8,6 @@ sidebar_label: CustomQueryHandler.queryOne ```typescript interface CustomQueryHandler { - queryOne?: (element: Element | Document, selector: string) => Element | null; + queryOne?: (element: Node, selector: string) => Node | null; } ``` diff --git a/docs/api/puppeteer.elementhandle._.md b/docs/api/puppeteer.elementhandle._.md index 4ca24f485d4dc..2d2f3b3ad66fc 100644 --- a/docs/api/puppeteer.elementhandle._.md +++ b/docs/api/puppeteer.elementhandle._.md @@ -10,9 +10,9 @@ Runs `element.querySelector` within the page. ```typescript class ElementHandle { - $( + $( selector: Selector - ): Promise | null>; + ): Promise> | null>; } ``` @@ -24,7 +24,7 @@ class ElementHandle { **Returns:** -Promise<[ElementHandle](./puppeteer.elementhandle.md)<HTMLElementTagNameMap\[Selector\]> \| null> +Promise<[ElementHandle](./puppeteer.elementhandle.md)<[NodeFor](./puppeteer.nodefor.md)<Selector>> \| null> `null` if no element matches the selector. diff --git a/docs/api/puppeteer.elementhandle.__.md b/docs/api/puppeteer.elementhandle.__.md index ff433fc23b49a..3e0689fb835df 100644 --- a/docs/api/puppeteer.elementhandle.__.md +++ b/docs/api/puppeteer.elementhandle.__.md @@ -10,9 +10,9 @@ Runs `element.querySelectorAll` within the page. ```typescript class ElementHandle { - $$( + $$( selector: Selector - ): Promise[]>; + ): Promise>[]>; } ``` @@ -24,7 +24,7 @@ class ElementHandle { **Returns:** -Promise<[ElementHandle](./puppeteer.elementhandle.md)<HTMLElementTagNameMap\[Selector\]>\[\]> +Promise<[ElementHandle](./puppeteer.elementhandle.md)<[NodeFor](./puppeteer.nodefor.md)<Selector>>\[\]> `[]` if no element matches the selector. diff --git a/docs/api/puppeteer.elementhandle.__1.md b/docs/api/puppeteer.elementhandle.__1.md deleted file mode 100644 index 76740ebddcaf2..0000000000000 --- a/docs/api/puppeteer.elementhandle.__1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_label: ElementHandle.$_1 ---- - -# ElementHandle.$() method - -**Signature:** - -```typescript -class ElementHandle { - $(selector: string): Promise; -} -``` - -## Parameters - -| Parameter | Type | Description | -| --------- | ------ | ----------- | -| selector | string | | - -**Returns:** - -Promise<[ElementHandle](./puppeteer.elementhandle.md) \| null> diff --git a/docs/api/puppeteer.elementhandle.___1.md b/docs/api/puppeteer.elementhandle.___1.md deleted file mode 100644 index 5eb3a8664e2dd..0000000000000 --- a/docs/api/puppeteer.elementhandle.___1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_label: ElementHandle.$$_1 ---- - -# ElementHandle.$$() method - -**Signature:** - -```typescript -class ElementHandle { - $$(selector: string): Promise; -} -``` - -## Parameters - -| Parameter | Type | Description | -| --------- | ------ | ----------- | -| selector | string | | - -**Returns:** - -Promise<[ElementHandle](./puppeteer.elementhandle.md)\[\]> diff --git a/docs/api/puppeteer.elementhandle.__eval.md b/docs/api/puppeteer.elementhandle.__eval.md index c084f8cbf2747..d2f9a0cb9fd00 100644 --- a/docs/api/puppeteer.elementhandle.__eval.md +++ b/docs/api/puppeteer.elementhandle.__eval.md @@ -13,11 +13,11 @@ If `pageFunction` returns a Promise, then `frame.$$eval` would wait for the prom ```typescript class ElementHandle { $$eval< - Selector extends keyof HTMLElementTagNameMap, + Selector extends string, Params extends unknown[], - Func extends EvaluateFunc< - [HTMLElementTagNameMap[Selector][], ...Params] - > = EvaluateFunc<[HTMLElementTagNameMap[Selector][], ...Params]> + Func extends EvaluateFunc<[NodeFor[], ...Params]> = EvaluateFunc< + [NodeFor[], ...Params] + > >( selector: Selector, pageFunction: Func | string, diff --git a/docs/api/puppeteer.elementhandle.__eval_1.md b/docs/api/puppeteer.elementhandle.__eval_1.md deleted file mode 100644 index 28d155484b41a..0000000000000 --- a/docs/api/puppeteer.elementhandle.__eval_1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_label: ElementHandle.$$eval_1 ---- - -# ElementHandle.$$eval() method - -**Signature:** - -```typescript -class ElementHandle { - $$eval< - Params extends unknown[], - Func extends EvaluateFunc<[Element[], ...Params]> = EvaluateFunc< - [Element[], ...Params] - > - >( - selector: string, - pageFunction: Func | string, - ...args: Params - ): Promise>>; -} -``` - -## Parameters - -| Parameter | Type | Description | -| ------------ | -------------- | ----------- | -| selector | string | | -| pageFunction | Func \| string | | -| args | Params | | - -**Returns:** - -Promise<Awaited<ReturnType<Func>>> diff --git a/docs/api/puppeteer.elementhandle._eval.md b/docs/api/puppeteer.elementhandle._eval.md index 5f37cd95d8b31..f67319183bbb5 100644 --- a/docs/api/puppeteer.elementhandle._eval.md +++ b/docs/api/puppeteer.elementhandle._eval.md @@ -13,11 +13,11 @@ If `pageFunction` returns a Promise, then `frame.$eval` would wait for the promi ```typescript class ElementHandle { $eval< - Selector extends keyof HTMLElementTagNameMap, + Selector extends string, Params extends unknown[], Func extends EvaluateFunc< - [HTMLElementTagNameMap[Selector], ...Params] - > = EvaluateFunc<[HTMLElementTagNameMap[Selector], ...Params]> + [ElementHandle>, ...Params] + > = EvaluateFunc<[ElementHandle>, ...Params]> >( selector: Selector, pageFunction: Func | string, diff --git a/docs/api/puppeteer.elementhandle._eval_1.md b/docs/api/puppeteer.elementhandle._eval_1.md deleted file mode 100644 index d98ce8e8ad2f9..0000000000000 --- a/docs/api/puppeteer.elementhandle._eval_1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_label: ElementHandle.$eval_1 ---- - -# ElementHandle.$eval() method - -**Signature:** - -```typescript -class ElementHandle { - $eval< - Params extends unknown[], - Func extends EvaluateFunc<[Element, ...Params]> = EvaluateFunc< - [Element, ...Params] - > - >( - selector: string, - pageFunction: Func | string, - ...args: Params - ): Promise>>; -} -``` - -## Parameters - -| Parameter | Type | Description | -| ------------ | -------------- | ----------- | -| selector | string | | -| pageFunction | Func \| string | | -| args | Params | | - -**Returns:** - -Promise<Awaited<ReturnType<Func>>> diff --git a/docs/api/puppeteer.elementhandle._x.md b/docs/api/puppeteer.elementhandle._x.md index 038dfda49b84a..9a2ad8a7a21a7 100644 --- a/docs/api/puppeteer.elementhandle._x.md +++ b/docs/api/puppeteer.elementhandle._x.md @@ -10,7 +10,7 @@ The method evaluates the XPath expression relative to the elementHandle. If ther ```typescript class ElementHandle { - $x(expression: string): Promise; + $x(expression: string): Promise[]>; } ``` @@ -22,4 +22,4 @@ class ElementHandle { **Returns:** -Promise<[ElementHandle](./puppeteer.elementhandle.md)\[\]> +Promise<[ElementHandle](./puppeteer.elementhandle.md)<Node>\[\]> diff --git a/docs/api/puppeteer.elementhandle.click.md b/docs/api/puppeteer.elementhandle.click.md index 3ee7e6d1a7d65..820e44285befb 100644 --- a/docs/api/puppeteer.elementhandle.click.md +++ b/docs/api/puppeteer.elementhandle.click.md @@ -10,15 +10,16 @@ This method scrolls element into view if needed, and then uses [Page.mouse](./pu ```typescript class ElementHandle { - click(options?: ClickOptions): Promise; + click(this: ElementHandle, options?: ClickOptions): Promise; } ``` ## Parameters -| Parameter | Type | Description | -| --------- | ------------------------------------------- | ----------------- | -| options | [ClickOptions](./puppeteer.clickoptions.md) | (Optional) | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| options | [ClickOptions](./puppeteer.clickoptions.md) | (Optional) | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.drag.md b/docs/api/puppeteer.elementhandle.drag.md index e70a02719d055..b0ddb62cd4114 100644 --- a/docs/api/puppeteer.elementhandle.drag.md +++ b/docs/api/puppeteer.elementhandle.drag.md @@ -10,15 +10,19 @@ This method creates and captures a dragevent from the element. ```typescript class ElementHandle { - drag(target: Point): Promise; + drag( + this: ElementHandle, + target: Point + ): Promise; } ``` ## Parameters -| Parameter | Type | Description | -| --------- | ----------------------------- | ----------- | -| target | [Point](./puppeteer.point.md) | | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| target | [Point](./puppeteer.point.md) | | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.draganddrop.md b/docs/api/puppeteer.elementhandle.draganddrop.md index aaff3f87e6053..efec7602aed3f 100644 --- a/docs/api/puppeteer.elementhandle.draganddrop.md +++ b/docs/api/puppeteer.elementhandle.draganddrop.md @@ -11,7 +11,8 @@ This method triggers a dragenter, dragover, and drop on the element. ```typescript class ElementHandle { dragAndDrop( - target: ElementHandle, + this: ElementHandle, + target: ElementHandle, options?: { delay: number; } @@ -21,10 +22,11 @@ class ElementHandle { ## Parameters -| Parameter | Type | Description | -| --------- | --------------------------------------------- | ----------------- | -| target | [ElementHandle](./puppeteer.elementhandle.md) | | -| options | { delay: number; } | (Optional) | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| target | [ElementHandle](./puppeteer.elementhandle.md)<Node> | | +| options | { delay: number; } | (Optional) | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.dragenter.md b/docs/api/puppeteer.elementhandle.dragenter.md index b30944d758d08..2f8f3b82f7ecd 100644 --- a/docs/api/puppeteer.elementhandle.dragenter.md +++ b/docs/api/puppeteer.elementhandle.dragenter.md @@ -10,15 +10,19 @@ This method creates a `dragenter` event on the element. ```typescript class ElementHandle { - dragEnter(data?: Protocol.Input.DragData): Promise; + dragEnter( + this: ElementHandle, + data?: Protocol.Input.DragData + ): Promise; } ``` ## Parameters -| Parameter | Type | Description | -| --------- | ----------------------- | ----------------- | -| data | Protocol.Input.DragData | (Optional) | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| data | Protocol.Input.DragData | (Optional) | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.dragover.md b/docs/api/puppeteer.elementhandle.dragover.md index 65126653c0462..90db5c5cd5056 100644 --- a/docs/api/puppeteer.elementhandle.dragover.md +++ b/docs/api/puppeteer.elementhandle.dragover.md @@ -10,15 +10,19 @@ This method creates a `dragover` event on the element. ```typescript class ElementHandle { - dragOver(data?: Protocol.Input.DragData): Promise; + dragOver( + this: ElementHandle, + data?: Protocol.Input.DragData + ): Promise; } ``` ## Parameters -| Parameter | Type | Description | -| --------- | ----------------------- | ----------------- | -| data | Protocol.Input.DragData | (Optional) | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| data | Protocol.Input.DragData | (Optional) | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.drop.md b/docs/api/puppeteer.elementhandle.drop.md index 0d9411b64b68d..47d3af82cb1c4 100644 --- a/docs/api/puppeteer.elementhandle.drop.md +++ b/docs/api/puppeteer.elementhandle.drop.md @@ -10,15 +10,19 @@ This method triggers a drop on the element. ```typescript class ElementHandle { - drop(data?: Protocol.Input.DragData): Promise; + drop( + this: ElementHandle, + data?: Protocol.Input.DragData + ): Promise; } ``` ## Parameters -| Parameter | Type | Description | -| --------- | ----------------------- | ----------------- | -| data | Protocol.Input.DragData | (Optional) | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| data | Protocol.Input.DragData | (Optional) | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.hover.md b/docs/api/puppeteer.elementhandle.hover.md index 70a55430c0432..874ed7a7c4920 100644 --- a/docs/api/puppeteer.elementhandle.hover.md +++ b/docs/api/puppeteer.elementhandle.hover.md @@ -10,10 +10,16 @@ This method scrolls element into view if needed, and then uses [Page.mouse](./pu ```typescript class ElementHandle { - hover(): Promise; + hover(this: ElementHandle): Promise; } ``` +## Parameters + +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | + **Returns:** Promise<void> diff --git a/docs/api/puppeteer.elementhandle.isintersectingviewport.md b/docs/api/puppeteer.elementhandle.isintersectingviewport.md index 6202889192a23..4eaafc38fc0bd 100644 --- a/docs/api/puppeteer.elementhandle.isintersectingviewport.md +++ b/docs/api/puppeteer.elementhandle.isintersectingviewport.md @@ -10,15 +10,21 @@ Resolves to true if the element is visible in the current viewport. ```typescript class ElementHandle { - isIntersectingViewport(options?: {threshold?: number}): Promise; + isIntersectingViewport( + this: ElementHandle, + options?: { + threshold?: number; + } + ): Promise; } ``` ## Parameters -| Parameter | Type | Description | -| --------- | ----------------------- | ----------------- | -| options | { threshold?: number; } | (Optional) | +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------ | ----------------- | +| this | [ElementHandle](./puppeteer.elementhandle.md)<Element> | | +| options | { threshold?: number; } | (Optional) | **Returns:** diff --git a/docs/api/puppeteer.elementhandle.md b/docs/api/puppeteer.elementhandle.md index ae4016079a6c9..e5a303a30ebb4 100644 --- a/docs/api/puppeteer.elementhandle.md +++ b/docs/api/puppeteer.elementhandle.md @@ -9,14 +9,14 @@ ElementHandle represents an in-page DOM element. **Signature:** ```typescript -export declare class ElementHandle extends JSHandle +export declare class ElementHandle extends JSHandle ``` **Extends:** [JSHandle](./puppeteer.jshandle.md) ## Remarks -ElementHandles can be created with the method. +ElementHandles can be created with the [Page.$()](./puppeteer.page._.md) method. ```ts const puppeteer = require('puppeteer'); @@ -33,7 +33,7 @@ const puppeteer = require('puppeteer'); ElementHandle prevents the DOM element from being garbage-collected unless the handle is [disposed](./puppeteer.jshandle.dispose.md). ElementHandles are auto-disposed when their origin frame gets navigated. -ElementHandle instances can be used as arguments in and [Page.evaluate()](./puppeteer.page.evaluate.md) methods. +ElementHandle instances can be used as arguments in [Page.$eval()](./puppeteer.page._eval.md) and [Page.evaluate()](./puppeteer.page.evaluate.md) methods. If you're using TypeScript, ElementHandle takes a generic argument that denotes the type of element the handle is holding within. For example, if you have a handle to a `