2022-04-14 01:13:30 +02:00
// This file is generated by /utils/generate_types/index.js
declare module 'playwright-core' {
// This file is generated by /utils/generate_types/index.js
/ * *
* Copyright ( c ) Microsoft Corporation .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
import { Protocol } from 'playwright-core/types/protocol' ;
import { ChildProcess } from 'child_process' ;
import { EventEmitter } from 'events' ;
import { Readable } from 'stream' ;
import { ReadStream } from 'fs' ;
import { Serializable , EvaluationArgument , PageFunction , PageFunctionOn , SmartHandle , ElementHandleForTag , BindingSource } from 'playwright-core/types/structs' ;
type PageWaitForSelectorOptionsNotHidden = PageWaitForSelectorOptions & {
state ? : 'visible' | 'attached' ;
} ;
type ElementHandleWaitForSelectorOptionsNotHidden = ElementHandleWaitForSelectorOptions & {
state ? : 'visible' | 'attached' ;
} ;
/ * *
* - extends : [ EventEmitter ]
*
* Page provides methods to interact with a single tab in a [ Browser ] , or an
* [ extension background page ] ( https : //developer.chrome.com/extensions/background_pages) in Chromium. One [Browser]
* instance might have multiple [ Page ] instances .
*
* This example creates a page , navigates it to a URL , and then saves a screenshot :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( ) ;
* const context = await browser . newContext ( ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await page . screenshot ( { path : 'screenshot.png' } ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* The Page class emits various events ( described below ) which can be handled using any of Node ' s native
* [ ` EventEmitter ` ] ( https : //nodejs.org/api/events.html#events_class_eventemitter) methods, such as `on`, `once` or
* ` removeListener ` .
*
* This example logs a message for a single page ` load ` event :
*
* ` ` ` js
* page . once ( 'load' , ( ) = > console . log ( 'Page loaded!' ) ) ;
* ` ` `
*
* To unsubscribe from events use the ` removeListener ` method :
*
* ` ` ` js
* function logRequest ( interceptedRequest ) {
* console . log ( 'A request was made:' , interceptedRequest . url ( ) ) ;
* }
* page . on ( 'request' , logRequest ) ;
* // Sometime later...
* page . removeListener ( 'request' , logRequest ) ;
* ` ` `
*
* /
export interface Page {
/ * *
* Returns the value of the ` pageFunction ` invocation .
*
* If the function passed to the
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) returns a [Promise], then
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) would wait for the
* promise to resolve and return its value .
*
* If the function passed to the
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) returns a
* non - [ Serializable ] value , then
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) resolves to `undefined`.
* Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` , ` NaN ` ,
* ` Infinity ` , ` -Infinity ` .
*
* Passing argument to ` pageFunction ` :
*
* ` ` ` js
* const result = await page . evaluate ( ( [ x , y ] ) = > {
* return Promise . resolve ( x * y ) ;
* } , [ 7 , 8 ] ) ;
* console . log ( result ) ; // prints "56"
* ` ` `
*
* A string can also be passed in instead of a function :
*
* ` ` ` js
* console . log ( await page . evaluate ( '1 + 2' ) ) ; // prints "3"
* const x = 10 ;
* console . log ( await page . evaluate ( ` 1 + ${ x } ` ) ) ; // prints "11"
* ` ` `
*
* [ ElementHandle ] instances can be passed as an argument to the
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate):
*
* ` ` ` js
* const bodyHandle = await page . evaluate ( 'document.body' ) ;
* const html = await page . evaluate ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ bodyHandle , 'hello' ] ) ;
* await bodyHandle . dispose ( ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate).
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the value of the ` pageFunction ` invocation .
*
* If the function passed to the
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) returns a [Promise], then
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) would wait for the
* promise to resolve and return its value .
*
* If the function passed to the
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) returns a
* non - [ Serializable ] value , then
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) resolves to `undefined`.
* Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` , ` NaN ` ,
* ` Infinity ` , ` -Infinity ` .
*
* Passing argument to ` pageFunction ` :
*
* ` ` ` js
* const result = await page . evaluate ( ( [ x , y ] ) = > {
* return Promise . resolve ( x * y ) ;
* } , [ 7 , 8 ] ) ;
* console . log ( result ) ; // prints "56"
* ` ` `
*
* A string can also be passed in instead of a function :
*
* ` ` ` js
* console . log ( await page . evaluate ( '1 + 2' ) ) ; // prints "3"
* const x = 10 ;
* console . log ( await page . evaluate ( ` 1 + ${ x } ` ) ) ; // prints "11"
* ` ` `
*
* [ ElementHandle ] instances can be passed as an argument to the
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate):
*
* ` ` ` js
* const bodyHandle = await page . evaluate ( 'document.body' ) ;
* const html = await page . evaluate ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ bodyHandle , 'hello' ] ) ;
* await bodyHandle . dispose ( ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate).
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the value of the ` pageFunction ` invocation as a [ JSHandle ] .
*
* The only difference between
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) and
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) is that
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) returns
* [ JSHandle ] .
*
* If the function passed to the
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) returns a
* [ Promise ] , then
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) would wait
* for the promise to resolve and return its value .
*
* ` ` ` js
* const aWindowHandle = await page . evaluateHandle ( ( ) = > Promise . resolve ( window ) ) ;
* aWindowHandle ; // Handle for the window object.
* ` ` `
*
* A string can also be passed in instead of a function :
*
* ` ` ` js
* const aHandle = await page . evaluateHandle ( 'document' ) ; // Handle for the 'document'
* ` ` `
*
* [ JSHandle ] instances can be passed as an argument to the
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle):
*
* ` ` ` js
* const aHandle = await page . evaluateHandle ( ( ) = > document . body ) ;
* const resultHandle = await page . evaluateHandle ( body = > body . innerHTML , aHandle ) ;
* console . log ( await resultHandle . jsonValue ( ) ) ;
* await resultHandle . dispose ( ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the value of the ` pageFunction ` invocation as a [ JSHandle ] .
*
* The only difference between
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) and
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) is that
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) returns
* [ JSHandle ] .
*
* If the function passed to the
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) returns a
* [ Promise ] , then
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) would wait
* for the promise to resolve and return its value .
*
* ` ` ` js
* const aWindowHandle = await page . evaluateHandle ( ( ) = > Promise . resolve ( window ) ) ;
* aWindowHandle ; // Handle for the window object.
* ` ` `
*
* A string can also be passed in instead of a function :
*
* ` ` ` js
* const aHandle = await page . evaluateHandle ( 'document' ) ; // Handle for the 'document'
* ` ` `
*
* [ JSHandle ] instances can be passed as an argument to the
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle):
*
* ` ` ` js
* const aHandle = await page . evaluateHandle ( ( ) = > document . body ) ;
* const resultHandle = await page . evaluateHandle ( body = > body . innerHTML , aHandle ) ;
* console . log ( await resultHandle . jsonValue ( ) ) ;
* await resultHandle . dispose ( ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* The method finds an element matching the specified selector within the page . If no elements match the selector , the
* return value resolves to ` null ` . To wait for an element on the page , use
* [ locator . waitFor ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-wait-for).
*
* Shortcut for main frame ' s
* [ frame . $ ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-query-selector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
$ < K extends keyof HTMLElementTagNameMap > ( selector : K , options ? : { strict : boolean } ) : Promise < ElementHandleForTag < K > | null > ;
/ * *
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* The method finds an element matching the specified selector within the page . If no elements match the selector , the
* return value resolves to ` null ` . To wait for an element on the page , use
* [ locator . waitFor ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-wait-for).
*
* Shortcut for main frame ' s
* [ frame . $ ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-query-selector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
$ ( selector : string , options ? : { strict : boolean } ) : Promise < ElementHandle < SVGElement | HTMLElement > | null > ;
/ * *
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* The method finds all elements matching the specified selector within the page . If no elements match the selector , the
* return value resolves to ` [] ` .
*
* Shortcut for main frame ' s [ frame . $ $ ( selector ) ] ( https : //playwright.dev/docs/api/class-frame#frame-query-selector-all).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ $ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > [ ] > ;
/ * *
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* The method finds all elements matching the specified selector within the page . If no elements match the selector , the
* return value resolves to ` [] ` .
*
* Shortcut for main frame ' s [ frame . $ $ ( selector ) ] ( https : //playwright.dev/docs/api/class-frame#frame-query-selector-all).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ $ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > [ ] > ;
/ * *
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the page and passes it as a first argument to
* ` pageFunction ` . If no elements match the selector , the method throws an error . Returns the value of ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await page . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await page . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await page . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
* const preloadHrefTS = await page . $eval ( 'link[rel=preload]' , ( el : HTMLLinkElement ) = > el . href ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the page and passes it as a first argument to
* ` pageFunction ` . If no elements match the selector , the method throws an error . Returns the value of ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await page . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await page . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await page . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
* const preloadHrefTS = await page . $eval ( 'link[rel=preload]' , ( el : HTMLLinkElement ) = > el . href ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the page and passes it as a first argument to
* ` pageFunction ` . If no elements match the selector , the method throws an error . Returns the value of ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await page . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await page . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await page . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
* const preloadHrefTS = await page . $eval ( 'link[rel=preload]' , ( el : HTMLLinkElement ) = > el . href ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the page and passes it as a first argument to
* ` pageFunction ` . If no elements match the selector , the method throws an error . Returns the value of ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await page . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await page . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await page . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
* const preloadHrefTS = await page . $eval ( 'link[rel=preload]' , ( el : HTMLLinkElement ) = > el . href ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , void , R > , arg? : any ) : Promise < R > ;
/ * *
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the page and passes an array of matched elements as
* a first argument to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector-all) would
* wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divCounts = await page . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the page and passes an array of matched elements as
* a first argument to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector-all) would
* wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divCounts = await page . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the page and passes an array of matched elements as
* a first argument to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector-all) would
* wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divCounts = await page . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the page and passes an array of matched elements as
* a first argument to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ page . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector-all) would
* wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divCounts = await page . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns when the ` pageFunction ` returns a truthy value . It resolves to a JSHandle of the truthy value .
*
* The
* [ page . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-function)
* can be used to observe viewport size change :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( ) ;
* const page = await browser . newPage ( ) ;
* const watchDog = page . waitForFunction ( ( ) = > window . innerWidth < 100 ) ;
* await page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* To pass an argument to the predicate of
* [ page . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-function)
* function :
*
* ` ` ` js
* const selector = '.foo' ;
* await page . waitForFunction ( selector = > ! ! document . querySelector ( selector ) , selector ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-function).
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
waitForFunction < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
/ * *
* Returns when the ` pageFunction ` returns a truthy value . It resolves to a JSHandle of the truthy value .
*
* The
* [ page . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-function)
* can be used to observe viewport size change :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( ) ;
* const page = await browser . newPage ( ) ;
* const watchDog = page . waitForFunction ( ( ) = > window . innerWidth < 100 ) ;
* await page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* To pass an argument to the predicate of
* [ page . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-function)
* function :
*
* ` ` ` js
* const selector = '.foo' ;
* await page . waitForFunction ( selector = > ! ! document . querySelector ( selector ) , selector ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-function).
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
waitForFunction < R > ( pageFunction : PageFunction < void , R > , arg? : any , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandleForTag < K > > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector ( selector : string , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options : PageWaitForSelectorOptions ) : Promise < ElementHandleForTag < K > | null > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector ( selector : string , options : PageWaitForSelectorOptions ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* The method adds a function called ` name ` on the ` window ` object of every frame in this page . When called , the function
* executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` . If the ` callback ` returns
* a [ Promise ] , it will be awaited .
*
* The first argument of the ` callback ` function contains information about the caller : ` { browserContext: BrowserContext,
* page : Page , frame : Frame } ` .
*
* See
* [ browserContext . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding)
* for the context - wide version .
*
* > NOTE : Functions installed via
* [ page . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-expose-binding) survive
* navigations .
*
* An example of exposing page URL to all frames in a page :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* const page = await context . newPage ( ) ;
* await page . exposeBinding ( 'pageURL' , ( { page } ) = > page . url ( ) ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . pageURL ( ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
*
* An example of passing an element handle :
*
* ` ` ` js
* await page . exposeBinding ( 'clicked' , async ( source , element ) = > {
* console . log ( await element . textContent ( ) ) ;
* } , { handle : true } ) ;
* await page . setContent ( `
* < script >
* document . addEventListener ( 'click' , event = > window . clicked ( event . target ) ) ;
* < / script >
* < div > Click me < / div >
* < div > Or click me < / div >
* ` );
* ` ` `
*
* @param name Name of the function on the window object .
* @param callback Callback function that will be called in the Playwright ' s context .
* @param options
* /
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , arg : JSHandle ) = > any , options : { handle : true } ) : Promise < void > ;
/ * *
* The method adds a function called ` name ` on the ` window ` object of every frame in this page . When called , the function
* executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` . If the ` callback ` returns
* a [ Promise ] , it will be awaited .
*
* The first argument of the ` callback ` function contains information about the caller : ` { browserContext: BrowserContext,
* page : Page , frame : Frame } ` .
*
* See
* [ browserContext . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding)
* for the context - wide version .
*
* > NOTE : Functions installed via
* [ page . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-expose-binding) survive
* navigations .
*
* An example of exposing page URL to all frames in a page :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* const page = await context . newPage ( ) ;
* await page . exposeBinding ( 'pageURL' , ( { page } ) = > page . url ( ) ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . pageURL ( ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
*
* An example of passing an element handle :
*
* ` ` ` js
* await page . exposeBinding ( 'clicked' , async ( source , element ) = > {
* console . log ( await element . textContent ( ) ) ;
* } , { handle : true } ) ;
* await page . setContent ( `
* < script >
* document . addEventListener ( 'click' , event = > window . clicked ( event . target ) ) ;
* < / script >
* < div > Click me < / div >
* < div > Or click me < / div >
* ` );
* ` ` `
*
* @param name Name of the function on the window object .
* @param callback Callback function that will be called in the Playwright ' s context .
* @param options
* /
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , . . . args : any [ ] ) = > any , options ? : { handle? : boolean } ) : Promise < void > ;
/ * *
* Emitted when the page closes .
* /
on ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
*
* The arguments passed into ` console.log ` appear as arguments on the event handler .
*
* An example of handling ` console ` event :
*
* ` ` ` js
* page . on ( 'console' , async msg = > {
* const values = [ ] ;
* for ( const arg of msg . args ( ) )
* values . push ( await arg . jsonValue ( ) ) ;
* console . log ( . . . values ) ;
* } ) ;
* await page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
*
* /
on ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
*
* The most common way to deal with crashes is to catch an exception :
*
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
*
* /
on ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-accept) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* ` ` ` js
* page . on ( 'dialog' , dialog = > {
* dialog . accept ( ) ;
* } ) ;
* ` ` `
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-dialog) listeners are present,
* all dialogs are automatically dismissed .
* /
on ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : 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 ;
/ * *
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
* /
on ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#file-chooser-set-files) that
* can be uploaded after that .
*
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
*
* /
on ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
on ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
on ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
on ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : 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 ;
/ * *
* Emitted when an uncaught exception happens within the page .
*
* ` ` ` js
* // Log all uncaught errors to the terminal
* page . on ( 'pageerror' , exception = > {
* console . log ( ` Uncaught exception: " ${ exception } " ` ) ;
* } ) ;
*
* // Navigate to a page with an exception.
* await page . goto ( 'data:text/html,<script>throw new Error("Test")</script>' ) ;
* ` ` `
*
* /
on ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but only
* for popups relevant to this page .
*
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between evaluating and waiting for the popup.
* const [ popup ] = await Promise . all ( [
* // It is important to call waitForEvent first.
* page . waitForEvent ( 'popup' ) ,
* // Opens the popup.
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
* > NOTE : Use
* [ 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 ;
/ * *
* 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 ;
/ * *
* Emitted when a request fails , for example by timing out .
*
* ` ` ` js
* page . on ( 'requestfailed' , request = > {
* console . log ( request . url ( ) + ' ' + request . failure ( ) . errorText ) ;
* } ) ;
* ` ` `
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-finished) event
* and not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed). A request
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* Emitted when [ WebSocket ] request is sent .
* /
on ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* Emitted when the page closes .
* /
addListener ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
*
* The arguments passed into ` console.log ` appear as arguments on the event handler .
*
* An example of handling ` console ` event :
*
* ` ` ` js
* page . on ( 'console' , async msg = > {
* const values = [ ] ;
* for ( const arg of msg . args ( ) )
* values . push ( await arg . jsonValue ( ) ) ;
* console . log ( . . . values ) ;
* } ) ;
* await page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
*
* /
addListener ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
*
* The most common way to deal with crashes is to catch an exception :
*
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
*
* /
addListener ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-accept) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* ` ` ` js
* page . on ( 'dialog' , dialog = > {
* dialog . accept ( ) ;
* } ) ;
* ` ` `
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-dialog) listeners are present,
* all dialogs are automatically dismissed .
* /
addListener ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : 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 ;
/ * *
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
* /
addListener ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#file-chooser-set-files) that
* can be uploaded after that .
*
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
*
* /
addListener ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
addListener ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
addListener ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
addListener ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : 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 ;
/ * *
* Emitted when an uncaught exception happens within the page .
*
* ` ` ` js
* // Log all uncaught errors to the terminal
* page . on ( 'pageerror' , exception = > {
* console . log ( ` Uncaught exception: " ${ exception } " ` ) ;
* } ) ;
*
* // Navigate to a page with an exception.
* await page . goto ( 'data:text/html,<script>throw new Error("Test")</script>' ) ;
* ` ` `
*
* /
addListener ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but only
* for popups relevant to this page .
*
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between evaluating and waiting for the popup.
* const [ popup ] = await Promise . all ( [
* // It is important to call waitForEvent first.
* page . waitForEvent ( 'popup' ) ,
* // Opens the popup.
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
* > NOTE : Use
* [ 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 ;
/ * *
* 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 ;
/ * *
* Emitted when a request fails , for example by timing out .
*
* ` ` ` js
* page . on ( 'requestfailed' , request = > {
* console . log ( request . url ( ) + ' ' + request . failure ( ) . errorText ) ;
* } ) ;
* ` ` `
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-finished) event
* and not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed). A request
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* Emitted when [ WebSocket ] request is sent .
* /
addListener ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : 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 ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
accessibility : Accessibility ;
/ * *
* Adds a script which would be evaluated in one of the following scenarios :
* - Whenever the page is navigated .
* - Whenever the child frame is attached or navigated . In this case , the script is evaluated in the context of the newly
* attached frame .
*
* The script is evaluated after the document was created but before any of its scripts were run . This is useful to amend
* the JavaScript environment , e . g . to seed ` Math.random ` .
*
* An example of overriding ` Math.random ` before the page loads :
*
* ` ` ` js browser
* // preload.js
* Math . random = ( ) = > 42 ;
* ` ` `
*
* ` ` ` js
* // In your playwright script, assuming the preload.js file is in same directory
* await page . addInitScript ( { path : './preload.js' } ) ;
* ` ` `
*
* > NOTE : The order of evaluation of multiple scripts installed via
* [ browserContext . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script)
* and [ page . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-add-init-script) is not defined.
* @param script Script to be evaluated in the page .
* @param arg Optional argument to pass to ` script ` ( only supported when passing a function ) .
* /
addInitScript ( script : Function | string | {
/ * *
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
* /
path? : string ;
/ * *
* Raw script content . Optional .
* /
content? : string ;
} , arg? : Serializable ) : Promise < void > ;
/ * *
* Adds a ` <script> ` tag into the page with the desired url or content . Returns the added tag when the script ' s onload
* fires or when the script content was injected into frame .
*
* Shortcut for main frame ' s
* [ frame . addScriptTag ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-add-script-tag).
* @param options
* /
addScriptTag ( options ? : {
/ * *
* Raw JavaScript content to be injected into frame .
* /
content? : string ;
/ * *
* Path to the JavaScript file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory .
* /
path? : string ;
/ * *
* Script type . Use 'module' in order to load a Javascript ES6 module . See
* [ script ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/script) for more details.
* /
type ? : string ;
/ * *
* URL of a script to be added .
* /
url? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* Adds a ` <link rel="stylesheet"> ` tag into the page with the desired url or a ` <style type="text/css"> ` tag with the
* content . Returns the added tag when the stylesheet ' s onload fires or when the CSS content was injected into frame .
*
* Shortcut for main frame ' s
* [ frame . addStyleTag ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-add-style-tag).
* @param options
* /
addStyleTag ( options ? : {
/ * *
* Raw CSS content to be injected into frame .
* /
content? : string ;
/ * *
* Path to the CSS file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory .
* /
path? : string ;
/ * *
* URL of the ` <link> ` tag .
* /
url? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* Brings page to front ( activates tab ) .
* /
bringToFront ( ) : Promise < void > ;
/ * *
* This method checks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws . If the element is already
* checked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* Shortcut for main frame ' s [ frame . check ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-check).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
check ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* This method clicks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element, or
* the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* Shortcut for main frame ' s [ frame . click ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-click).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
click ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* If ` runBeforeUnload ` is ` false ` , does not run any unload handlers and waits for the page to be closed . If
* ` runBeforeUnload ` is ` true ` the method will run unload handlers , but will * * not * * wait for the page to close .
*
* By default , ` page.close() ` * * does not * * run ` beforeunload ` handlers .
*
* > NOTE : if ` runBeforeUnload ` is passed as true , a ` beforeunload ` dialog might be summoned and should be handled manually
* via [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-dialog) event.
* @param options
* /
close ( options ? : {
/ * *
* Defaults to ` false ` . Whether to run the
* [ before unload ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/beforeunload) page handlers.
* /
runBeforeUnload? : boolean ;
} ) : Promise < void > ;
/ * *
* Gets the full HTML contents of the page , including the doctype .
* /
content ( ) : Promise < string > ;
/ * *
* Get the browser context that the page belongs to .
* /
context ( ) : BrowserContext ;
/ * *
* > NOTE : Only available for Chromium atm .
*
* Browser - specific Coverage implementation . See [ Coverage ] ( # class - coverage ) for more details .
* /
coverage : Coverage ;
/ * *
* This method double clicks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will throw .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` page.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
*
* Shortcut for main frame ' s
* [ frame . dblclick ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-dblclick).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
dblclick ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the element ,
* ` click ` is dispatched . This is equivalent to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
*
* ` ` ` js
* await page . dispatchEvent ( 'button#submit' , 'click' ) ;
* ` ` `
*
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
*
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
*
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await page . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await page . dispatchEvent ( '#source' , 'dragstart' , { dataTransfer } ) ;
* ` ` `
*
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* @param options
* /
dispatchEvent ( selector : string , type : string , eventInit? : EvaluationArgument , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* @param source
* @param target
* @param options
* /
dragAndDrop ( source : string , target : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Clicks on the source element at this point relative to the top - left corner of the element ' s padding box . If not
* specified , some visible point of the element is used .
* /
sourcePosition ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Drops on the target element at this point relative to the top - left corner of the element ' s padding box . If not
* specified , some visible point of the element is used .
* /
targetPosition ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* This method changes the ` CSS media type ` through the ` media ` argument , and / or the ` 'prefers-colors-scheme' ` media
* feature , using the ` colorScheme ` argument .
*
* ` ` ` js
* await page . evaluate ( ( ) = > matchMedia ( 'screen' ) . matches ) ;
* // → true
* await page . evaluate ( ( ) = > matchMedia ( 'print' ) . matches ) ;
* // → false
*
* await page . emulateMedia ( { media : 'print' } ) ;
* await page . evaluate ( ( ) = > matchMedia ( 'screen' ) . matches ) ;
* // → false
* await page . evaluate ( ( ) = > matchMedia ( 'print' ) . matches ) ;
* // → true
*
* await page . emulateMedia ( { } ) ;
* await page . evaluate ( ( ) = > matchMedia ( 'screen' ) . matches ) ;
* // → true
* await page . evaluate ( ( ) = > matchMedia ( 'print' ) . matches ) ;
* // → false
* ` ` `
*
* ` ` ` js
* await page . emulateMedia ( { colorScheme : 'dark' } ) ;
* await page . evaluate ( ( ) = > matchMedia ( '(prefers-color-scheme: dark)' ) . matches ) ;
* // → true
* await page . evaluate ( ( ) = > matchMedia ( '(prefers-color-scheme: light)' ) . matches ) ;
* // → false
* await page . evaluate ( ( ) = > matchMedia ( '(prefers-color-scheme: no-preference)' ) . matches ) ;
* // → false
* ` ` `
*
* @param options
* /
emulateMedia ( options ? : {
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . Passing
* ` null ` disables color scheme emulation .
* /
colorScheme? : null | "light" | "dark" | "no-preference" ;
/ * *
* Emulates ` 'forced-colors' ` media feature , supported values are ` 'active' ` and ` 'none' ` . Passing ` null ` disables forced
* colors emulation .
*
* > NOTE : It ' s not supported in WebKit , see [ here ] ( https : //bugs.webkit.org/show_bug.cgi?id=225281) in their issue tracker.
* /
forcedColors? : null | "active" | "none" ;
/ * *
* Changes the CSS media type of the page . The only allowed values are ` 'screen' ` , ` 'print' ` and ` null ` . Passing ` null `
* disables CSS media emulation .
* /
media? : null | "screen" | "print" ;
/ * *
* Emulates ` 'prefers-reduced-motion' ` media feature , supported values are ` 'reduce' ` , ` 'no-preference' ` . Passing ` null `
* disables reduced motion emulation .
* /
reducedMotion? : null | "reduce" | "no-preference" ;
} ) : Promise < void > ;
/ * *
* The method adds a function called ` name ` on the ` window ` object of every frame in the page . When called , the function
* executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` .
*
* If the ` callback ` returns a [ Promise ] , it will be awaited .
*
* See
* [ browserContext . exposeFunction ( name , callback ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-expose-function)
* for context - wide exposed function .
*
* > NOTE : Functions installed via
* [ page . exposeFunction ( name , callback ) ] ( https : //playwright.dev/docs/api/class-page#page-expose-function) survive
* navigations .
*
* An example of adding a ` sha256 ` function to the page :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
* const crypto = require ( 'crypto' ) ;
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const page = await browser . newPage ( ) ;
* await page . exposeFunction ( 'sha256' , text = > crypto . createHash ( 'sha256' ) . update ( text ) . digest ( 'hex' ) ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . sha256 ( 'PLAYWRIGHT' ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
*
* @param name Name of the function on the window object
* @param callback Callback function which will be called in Playwright ' s context .
* /
exposeFunction ( name : string , callback : Function ) : Promise < void > ;
/ * *
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the
* element , fills it and triggers an ` input ` event after filling . Note that you can pass an empty string to clear the input
* field .
*
* If the target element is not an ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element , this method throws an error .
* However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
* instead .
*
* To send fine - grained keyboard events , use
* [ page . type ( selector , text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-type).
*
* Shortcut for main frame ' s
* [ frame . fill ( selector , value [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-fill).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param value Value to fill for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( selector : string , value : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method fetches an element with ` selector ` and focuses it . If there ' s no element matching ` selector ` , the method
* waits until a matching element appears in the DOM .
*
* Shortcut for main frame ' s [ frame . focus ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-focus).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
focus ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns frame matching the specified criteria . Either ` name ` or ` url ` must be specified .
*
* ` ` ` js
* const frame = page . frame ( 'frame-name' ) ;
* ` ` `
*
* ` ` ` js
* const frame = page . frame ( { url : / . * d o m a i n . * \ / } ) ;
* ` ` `
*
* @param frameSelector Frame name or other frame lookup options .
* /
frame ( frameSelector : string | {
/ * *
* Frame name specified in the ` iframe ` ' s ` name ` attribute . Optional .
* /
name? : string ;
/ * *
* A glob pattern , regex pattern or predicate receiving frame ' s ` url ` as a [ URL ] object . Optional .
* /
url? : string | RegExp | ( ( url : URL ) = > boolean ) ;
} ) : null | Frame ;
/ * *
* When working with iframes , you can create a frame locator that will enter the iframe and allow selecting elements in
* that iframe . Following snippet locates element with text "Submit" in the iframe with id ` my-frame ` , like ` <iframe
* id = "my-frame" > ` :
*
* ` ` ` js
* const locator = page . frameLocator ( '#my-iframe' ) . locator ( 'text=Submit' ) ;
* await locator . click ( ) ;
* ` ` `
*
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
frameLocator ( selector : string ) : FrameLocator ;
/ * *
* An array of all frames attached to the page .
* /
frames ( ) : Array < Frame > ;
/ * *
* Returns element attribute value .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param name Attribute name to get the value for .
* @param options
* /
getAttribute ( selector : string , name : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect . If can not go back , returns ` null ` .
*
* Navigate to the previous page in history .
* @param options
* /
goBack ( options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect . If can not go forward , returns ` null ` .
*
* Navigate to the next page in history .
* @param options
* /
goForward ( options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
2022-04-19 18:36:38 +02:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the first
* non - redirect response .
2022-04-14 01:13:30 +02:00
*
* The method will throw an error if :
* - there ' s an SSL error ( e . g . in case of self - signed certificates ) .
* - target URL is invalid .
* - the ` timeout ` is exceeded during navigation .
* - the remote server does not respond or is unreachable .
* - the main resource failed to load .
*
* The method will not throw an error when any valid HTTP status code is returned by the remote server , including 404 " Not
* Found " and 500 " Internal Server Error " . The status code for such responses can be retrieved by calling
* [ response . status ( ) ] ( https : //playwright.dev/docs/api/class-response#response-status).
*
* > NOTE : The method either throws an error or returns a main resource response . The only exceptions are navigation to
* ` about:blank ` or navigation to the same URL with a different hash , which would succeed and return ` null ` .
* > NOTE : Headless mode doesn ' t support navigation to a PDF document . See the
* [ upstream issue ] ( https : //bugs.chromium.org/p/chromium/issues/detail?id=761295).
*
* Shortcut for main frame ' s [ frame . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-goto)
* @param url URL to navigate page to . The url should include scheme , e . g . ` https:// ` . When a ` baseURL ` via the context options was provided and the passed URL is a path , it gets merged via the
* [ ` new URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
* @param options
* /
goto ( url : string , options ? : {
/ * *
* Referer header value . If provided it will take preference over the referer header value set by
* [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#page-set-extra-http-headers).
* /
referer? : string ;
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
* This method hovers over an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the element,
* or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* Shortcut for main frame ' s [ frame . hover ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-hover).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
hover ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns ` element.innerHTML ` .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
innerHTML ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` element.innerText ` .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
innerText ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
2022-04-25 14:55:41 +02:00
* Returns ` input.value ` for the selected ` <input> ` or ` <textarea> ` or ` <select> ` element .
*
* Throws for non - input elements . However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
2022-04-14 01:13:30 +02:00
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
inputValue ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isChecked ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Indicates that the page has been closed .
* /
isClosed ( ) : boolean ;
/ * *
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isDisabled ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isEditable ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isEnabled ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible). `selector` that does not
* match any elements is considered hidden .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isHidden ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* * * DEPRECATED * * This option is ignored .
* [ page . isHidden ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-is-hidden) does not wait for the
* element to become hidden and returns immediately .
* @deprecated
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible). `selector` that does not match any elements is
* considered not visible .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isVisible ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* * * DEPRECATED * * This option is ignored .
* [ page . isVisible ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-is-visible) does not wait for the
* element to become visible and returns immediately .
* @deprecated
* /
timeout? : number ;
} ) : Promise < boolean > ;
keyboard : Keyboard ;
/ * *
* The method returns an element locator that can be used to perform actions on the page . Locator is resolved to the
* element immediately before performing an action , so a series of actions on the same locator can in fact be performed on
* different DOM elements . That would happen if the DOM structure between those actions has changed .
*
2022-05-08 22:59:40 +02:00
* [ Learn more about locators ] ( https : //playwright.dev/docs/locators).
*
2022-04-14 01:13:30 +02:00
* Shortcut for main frame ' s
* [ frame . locator ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-locator).
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
locator ( selector : string , options ? : {
/ * *
* Matches elements containing an element that matches an inner locator . Inner locator is queried against the outer one .
* For example , ` article ` that has ` text=Playwright ` matches ` <article><div>Playwright</div></article> ` .
*
* Note that outer and inner locators must belong to the same frame . Inner locator must not contain [ FrameLocator ] s .
* /
has? : Locator ;
/ * *
* Matches elements containing specified text somewhere inside , possibly in a child or a descendant element . When passed a
* [ string ] , matching is case - insensitive and searches for a substring . For example , ` "Playwright" ` matches
* ` <article><div>Playwright</div></article> ` .
* /
hasText? : string | RegExp ;
} ) : Locator ;
/ * *
* The page ' s main frame . Page is guaranteed to have a main frame which persists during navigations .
* /
mainFrame ( ) : Frame ;
mouse : Mouse ;
/ * *
* Returns the opener for popup pages and ` null ` for others . If the opener has been closed already the returns ` null ` .
* /
opener ( ) : Promise < null | Page > ;
/ * *
* Pauses script execution . Playwright will stop executing the script and wait for the user to either press 'Resume' button
* in the page overlay or to call ` playwright.resume() ` in the DevTools console .
*
* User can inspect selectors or perform manual steps while paused . Resume will continue running the original script from
* the place it was paused .
*
* > NOTE : This method requires Playwright to be started in a headed mode , with a falsy ` headless ` value in the
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-launch).
* /
pause ( ) : Promise < void > ;
/ * *
* Returns the PDF buffer .
*
* > NOTE : Generating a pdf is currently only supported in Chromium headless .
*
* ` page.pdf() ` generates a pdf of the page with ` print ` css media . To generate a pdf with ` screen ` media , call
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) before calling
* ` page.pdf() ` :
*
* > NOTE : By default , ` page.pdf() ` generates a pdf with modified colors for printing . Use the
* [ ` -webkit-print-color-adjust ` ] ( https : //developer.mozilla.org/en-US/docs/Web/CSS/-webkit-print-color-adjust) property to
* force rendering of exact colors .
*
* ` ` ` js
* // Generates a PDF with 'screen' media type.
* await page . emulateMedia ( { media : 'screen' } ) ;
* await page . pdf ( { path : 'page.pdf' } ) ;
* ` ` `
*
* The ` width ` , ` height ` , and ` margin ` options accept values labeled with units . Unlabeled values are treated as pixels .
*
* A few examples :
* - ` page.pdf({width: 100}) ` - prints with width set to 100 pixels
* - ` page.pdf({width: '100px'}) ` - prints with width set to 100 pixels
* - ` page.pdf({width: '10cm'}) ` - prints with width set to 10 centimeters .
*
* All possible units are :
* - ` px ` - pixel
* - ` in ` - inch
* - ` cm ` - centimeter
* - ` mm ` - millimeter
*
* The ` format ` options are :
* - ` Letter ` : 8.5 in x 11 in
* - ` Legal ` : 8.5 in x 14 in
* - ` Tabloid ` : 11 in x 17 in
* - ` Ledger ` : 17 in x 11 in
* - ` A0 ` : 33.1 in x 46.8 in
* - ` A1 ` : 23.4 in x 33.1 in
* - ` A2 ` : 16.54 in x 23.4 in
* - ` A3 ` : 11.7 in x 16.54 in
* - ` A4 ` : 8.27 in x 11.7 in
* - ` A5 ` : 5.83 in x 8.27 in
* - ` A6 ` : 4.13 in x 5.83 in
*
* > NOTE : ` headerTemplate ` and ` footerTemplate ` markup have the following limitations : > 1 . Script tags inside templates
* are not evaluated . > 2 . Page styles are not visible inside templates .
* @param options
* /
pdf ( options ? : {
/ * *
* Display header and footer . Defaults to ` false ` .
* /
displayHeaderFooter? : boolean ;
/ * *
* HTML template for the print footer . Should use the same format as the ` headerTemplate ` .
* /
footerTemplate? : string ;
/ * *
* Paper format . If set , takes priority over ` width ` or ` height ` options . Defaults to 'Letter' .
* /
format? : string ;
/ * *
* HTML template for the print header . Should be valid HTML markup with following classes used to inject printing values
* into them :
* - ` 'date' ` formatted print date
* - ` 'title' ` document title
* - ` 'url' ` document location
* - ` 'pageNumber' ` current page number
* - ` 'totalPages' ` total pages in the document
* /
headerTemplate? : string ;
/ * *
* Paper height , accepts values labeled with units .
* /
height? : string | number ;
/ * *
* Paper orientation . Defaults to ` false ` .
* /
landscape? : boolean ;
/ * *
* Paper margins , defaults to none .
* /
margin ? : {
/ * *
* Top margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
top? : string | number ;
/ * *
* Right margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
right? : string | number ;
/ * *
* Bottom margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
bottom? : string | number ;
/ * *
* Left margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
left? : string | number ;
} ;
/ * *
* Paper ranges to print , e . g . , '1-5, 8, 11-13' . Defaults to the empty string , which means print all pages .
* /
pageRanges? : string ;
/ * *
* The file path to save the PDF to . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . If no path is provided , the PDF won ' t be saved to the disk .
* /
path? : string ;
/ * *
* Give any CSS ` @page ` size declared in the page priority over what is declared in ` width ` and ` height ` or ` format `
* options . Defaults to ` false ` , which will scale the content to fit the paper size .
* /
preferCSSPageSize? : boolean ;
/ * *
* Print background graphics . Defaults to ` false ` .
* /
printBackground? : boolean ;
/ * *
* Scale of the webpage rendering . Defaults to ` 1 ` . Scale amount must be between 0.1 and 2 .
* /
scale? : number ;
/ * *
* Paper width , accepts values labeled with units .
* /
width? : string | number ;
} ) : Promise < Buffer > ;
/ * *
* Focuses the element , and then uses [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-down)
* and [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up).
*
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
*
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
*
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
*
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
*
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
*
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When specified with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
*
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://keycode.info' ) ;
* await page . press ( 'body' , 'A' ) ;
* await page . screenshot ( { path : 'A.png' } ) ;
* await page . press ( 'body' , 'ArrowLeft' ) ;
* await page . screenshot ( { path : 'ArrowLeft.png' } ) ;
* await page . press ( 'body' , 'Shift+O' ) ;
* await page . screenshot ( { path : 'O.png' } ) ;
* await browser . close ( ) ;
* ` ` `
*
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( selector : string , key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method reloads the current page , in the same way as if the user had triggered a browser refresh . Returns the main
* resource response . In case of multiple redirects , the navigation will resolve with the response of the last redirect .
* @param options
* /
reload ( options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
* API testing helper associated with this page . This method returns the same instance as
* [ browserContext . request ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-request) on the page's
* context . See [ browserContext . request ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-request) for
* more details .
* /
request : APIRequestContext ;
/ * *
* Routing provides the capability to modify network requests that are made by a page .
*
* Once routing is enabled , every request matching the url pattern will stall unless it ' s continued , fulfilled or aborted .
*
* > NOTE : The handler will only be called for the first url if the response is a redirect .
* > NOTE : [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route) will not intercept
* requests intercepted by Service Worker . See [ this ] ( https : //github.com/microsoft/playwright/issues/1090) issue. We
* recommend disabling Service Workers when using request interception . Via ` await context.addInitScript(() => delete
* window . navigator . serviceWorker ) ; `
*
* An example of a naive handler that aborts all image requests :
*
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . route ( '**\/*.{png,jpg,jpeg}' , route = > route . abort ( ) ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
*
* or the same snippet using a regex pattern instead :
*
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . route ( /(\.png$)|(\.jpg$)/ , route = > route . abort ( ) ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
*
* It is possible to examine the request to decide the route action . For example , mocking all requests that contain some
* post data , and leaving all other requests as is :
*
* ` ` ` js
* await page . route ( '/api/**' , route = > {
* if ( route . request ( ) . postData ( ) . includes ( 'my-string' ) )
* route . fulfill ( { body : 'mocked-data' } ) ;
* else
* route . continue ( ) ;
* } ) ;
* ` ` `
*
* Page routes take precedence over browser context routes ( set up with
* [ browserContext . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-route))
* when request matches both handlers .
*
* To remove a route with its handler you can use
* [ page . unroute ( url [ , handler ] ) ] ( https : //playwright.dev/docs/api/class-page#page-unroute).
*
* > NOTE : Enabling routing disables http cache .
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while routing . When a ` baseURL ` via the context options was provided and the passed URL is a path , it gets merged via the
* [ ` new URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
* @param handler handler function to route the request .
* @param options
* /
route ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler : ( ( route : Route , request : Request ) = > void ) , options ? : {
/ * *
* How often a route should be used . By default it will be used every time .
* /
times? : number ;
} ) : Promise < void > ;
/ * *
* Returns the buffer with the captured screenshot .
* @param options
* /
screenshot ( options? : PageScreenshotOptions ) : Promise < Buffer > ;
/ * *
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, waits until
* all specified options are present in the ` <select> ` element and selects these options .
*
* If the target element is not a ` <select> ` element , this method throws an error . However , if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used instead.
*
* Returns the array of option values that have been successfully selected .
*
* Triggers a ` change ` and ` input ` event once all the provided options have been selected .
*
* ` ` ` js
* // single selection matching the value
* page . selectOption ( 'select#colors' , 'blue' ) ;
*
* // single selection matching the label
* page . selectOption ( 'select#colors' , { label : 'Blue' } ) ;
*
* // multiple selection
* page . selectOption ( 'select#colors' , [ 'red' , 'green' , 'blue' ] ) ;
*
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . selectOption ( selector , values [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-select-option).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
* @param options
* /
selectOption ( selector : string , values : null | string | ElementHandle | Array < string > | {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} > , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
* This method checks or unchecks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws .
* 1 . If the element already has the right checked state , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked or unchecked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* Shortcut for main frame ' s
* [ frame . setChecked ( selector , checked [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-set-checked).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param checked Whether to check or uncheck the checkbox .
* @param options
* /
setChecked ( selector : string , checked : boolean , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* @param html HTML markup to assign to the page .
* @param options
* /
setContent ( html : string , options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < void > ;
/ * *
* This setting will change the default maximum navigation time for the following methods and related shortcuts :
* - [ page . goBack ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-go-back)
* - [ page . goForward ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-go-forward)
* - [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto)
* - [ page . reload ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-reload)
* - [ page . setContent ( html [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-set-content)
* - [ page . waitForNavigation ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-navigation)
* - [ page . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-url)
*
* > NOTE :
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* takes priority over
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* and
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout).
* @param timeout Maximum navigation time in milliseconds
* /
setDefaultNavigationTimeout ( timeout : number ) : void ;
/ * *
* This setting will change the default maximum time for all the methods accepting ` timeout ` option .
*
* > NOTE :
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* takes priority over
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout).
* @param timeout Maximum time in milliseconds
* /
setDefaultTimeout ( timeout : number ) : void ;
/ * *
* The extra HTTP headers will be sent with every request the page initiates .
*
* > NOTE : [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#page-set-extra-http-headers) does
* not guarantee the order of headers in the outgoing requests .
* @param headers An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
setExtraHTTPHeaders ( headers : { [ key : string ] : string ; } ) : Promise < void > ;
/ * *
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
2022-04-27 16:06:30 +02:00
* are resolved relative to the current working directory . For empty array , clears the selected files .
2022-04-25 14:55:41 +02:00
*
* This method expects ` selector ` to point to an
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
2022-04-14 01:13:30 +02:00
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param files
* @param options
* /
setInputFiles ( selector : string , files : string | Array < string > | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} | Array < {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} > , options ? : {
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* In the case of multiple pages in a single browser , each page can have its own viewport size . However ,
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browser-new-context) allows to set
* viewport size ( and more ) for all pages in the context at once .
*
* [ page . setViewportSize ( viewportSize ) ] ( https : //playwright.dev/docs/api/class-page#page-set-viewport-size) will resize the
* page . A lot of websites don ' t expect phones to change size , so you should set the viewport size before navigating to the
* page . [ page . setViewportSize ( viewportSize ) ] ( https : //playwright.dev/docs/api/class-page#page-set-viewport-size) will also
* reset ` screen ` size , use
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browser-new-context) with `screen` and
* ` viewport ` parameters if you need better control of these properties .
*
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . setViewportSize ( {
* width : 640 ,
* height : 480 ,
* } ) ;
* await page . goto ( 'https://example.com' ) ;
* ` ` `
*
* @param viewportSize
* /
setViewportSize ( viewportSize : {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ) : Promise < void > ;
/ * *
* This method taps an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : [ page . tap ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-tap) requires that the
* ` hasTouch ` option of the browser context be set to true .
*
* Shortcut for main frame ' s [ frame . tap ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-tap).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
tap ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns ` element.textContent ` .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
textContent ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Returns the page 's title. Shortcut for main frame' s
* [ frame . title ( ) ] ( https : //playwright.dev/docs/api/class-frame#frame-title).
* /
title ( ) : Promise < string > ;
touchscreen : Touchscreen ;
/ * *
* Sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text . ` page.type ` can be used to send
* fine - grained keyboard events . To fill values in form fields , use
* [ page . fill ( selector , value [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-fill).
*
* To press a special key , like ` Control ` or ` ArrowDown ` , use
* [ keyboard . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-press).
*
* ` ` ` js
* await page . type ( '#mytextarea' , 'Hello' ) ; // Types instantly
* await page . type ( '#mytextarea' , 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . type ( selector , text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-type).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param text A text to type into a focused element .
* @param options
* /
type ( selector : string , text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method unchecks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws . If the element is already
* unchecked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* Shortcut for main frame ' s
* [ frame . uncheck ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-uncheck).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
uncheck ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Removes a route created with
* [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route). When `handler` is not
* specified , removes all routes for the ` url ` .
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while routing .
* @param handler Optional handler function to route the request .
* /
unroute ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler ? : ( ( route : Route , request : Request ) = > void ) ) : Promise < void > ;
/ * *
* Shortcut for main frame ' s [ frame . url ( ) ] ( https : //playwright.dev/docs/api/class-frame#frame-url).
* /
url ( ) : string ;
/ * *
* Video object associated with this page .
* /
video ( ) : null | Video ;
viewportSize ( ) : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
/ * *
* Emitted when the page closes .
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
*
* The arguments passed into ` console.log ` appear as arguments on the event handler .
*
* An example of handling ` console ` event :
*
* ` ` ` js
* page . on ( 'console' , async msg = > {
* const values = [ ] ;
* for ( const arg of msg . args ( ) )
* values . push ( await arg . jsonValue ( ) ) ;
* console . log ( . . . values ) ;
* } ) ;
* await page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
*
* /
waitForEvent ( event : 'console' , optionsOrPredicate ? : { predicate ? : ( consoleMessage : ConsoleMessage ) = > boolean | Promise < boolean > , timeout? : number } | ( ( consoleMessage : ConsoleMessage ) = > boolean | Promise < boolean > ) ) : Promise < ConsoleMessage > ;
/ * *
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
*
* The most common way to deal with crashes is to catch an exception :
*
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
*
* /
waitForEvent ( event : 'crash' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-accept) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* ` ` ` js
* page . on ( 'dialog' , dialog = > {
* dialog . accept ( ) ;
* } ) ;
* ` ` `
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-dialog) listeners are present,
* all dialogs are automatically dismissed .
* /
waitForEvent ( event : 'dialog' , optionsOrPredicate ? : { predicate ? : ( dialog : Dialog ) = > boolean | Promise < boolean > , timeout? : number } | ( ( dialog : Dialog ) = > boolean | Promise < boolean > ) ) : Promise < Dialog > ;
/ * *
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
* /
waitForEvent ( event : 'domcontentloaded' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
* /
waitForEvent ( event : 'download' , optionsOrPredicate ? : { predicate ? : ( download : Download ) = > boolean | Promise < boolean > , timeout? : number } | ( ( download : Download ) = > boolean | Promise < boolean > ) ) : Promise < Download > ;
/ * *
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#file-chooser-set-files) that
* can be uploaded after that .
*
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
*
* /
waitForEvent ( event : 'filechooser' , optionsOrPredicate ? : { predicate ? : ( fileChooser : FileChooser ) = > boolean | Promise < boolean > , timeout? : number } | ( ( fileChooser : FileChooser ) = > boolean | Promise < boolean > ) ) : Promise < FileChooser > ;
/ * *
* Emitted when a frame is attached .
* /
waitForEvent ( event : 'frameattached' , optionsOrPredicate ? : { predicate ? : ( frame : Frame ) = > boolean | Promise < boolean > , timeout? : number } | ( ( frame : Frame ) = > boolean | Promise < boolean > ) ) : Promise < Frame > ;
/ * *
* Emitted when a frame is detached .
* /
waitForEvent ( event : 'framedetached' , optionsOrPredicate ? : { predicate ? : ( frame : Frame ) = > boolean | Promise < boolean > , timeout? : number } | ( ( frame : Frame ) = > boolean | Promise < boolean > ) ) : Promise < Frame > ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
waitForEvent ( event : 'framenavigated' , optionsOrPredicate ? : { predicate ? : ( frame : Frame ) = > boolean | Promise < boolean > , timeout? : number } | ( ( frame : Frame ) = > boolean | Promise < boolean > ) ) : Promise < Frame > ;
/ * *
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
* /
waitForEvent ( event : 'load' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Emitted when an uncaught exception happens within the page .
*
* ` ` ` js
* // Log all uncaught errors to the terminal
* page . on ( 'pageerror' , exception = > {
* console . log ( ` Uncaught exception: " ${ exception } " ` ) ;
* } ) ;
*
* // Navigate to a page with an exception.
* await page . goto ( 'data:text/html,<script>throw new Error("Test")</script>' ) ;
* ` ` `
*
* /
waitForEvent ( event : 'pageerror' , optionsOrPredicate ? : { predicate ? : ( error : Error ) = > boolean | Promise < boolean > , timeout? : number } | ( ( error : Error ) = > boolean | Promise < boolean > ) ) : Promise < Error > ;
/ * *
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but only
* for popups relevant to this page .
*
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between evaluating and waiting for the popup.
* const [ popup ] = await Promise . all ( [
* // It is important to call waitForEvent first.
* page . waitForEvent ( 'popup' ) ,
* // Opens the popup.
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
* > NOTE : Use
* [ 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 ) .
* /
waitForEvent ( event : 'popup' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* 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).
* /
waitForEvent ( event : 'request' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean | Promise < boolean > , timeout? : number } | ( ( request : Request ) = > boolean | Promise < boolean > ) ) : Promise < Request > ;
/ * *
* Emitted when a request fails , for example by timing out .
*
* ` ` ` js
* page . on ( 'requestfailed' , request = > {
* console . log ( request . url ( ) + ' ' + request . failure ( ) . errorText ) ;
* } ) ;
* ` ` `
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-finished) event
* and not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed). A request
* 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 .
* /
waitForEvent ( event : 'requestfailed' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean | Promise < boolean > , timeout? : number } | ( ( request : Request ) = > boolean | Promise < boolean > ) ) : Promise < Request > ;
/ * *
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
* /
waitForEvent ( event : 'requestfinished' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean | Promise < boolean > , timeout? : number } | ( ( request : Request ) = > boolean | Promise < boolean > ) ) : Promise < Request > ;
/ * *
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
* /
waitForEvent ( event : 'response' , optionsOrPredicate ? : { predicate ? : ( response : Response ) = > boolean | Promise < boolean > , timeout? : number } | ( ( response : Response ) = > boolean | Promise < boolean > ) ) : Promise < Response > ;
/ * *
* Emitted when [ WebSocket ] request is sent .
* /
waitForEvent ( event : 'websocket' , optionsOrPredicate ? : { predicate ? : ( webSocket : WebSocket ) = > boolean | Promise < boolean > , timeout? : number } | ( ( webSocket : WebSocket ) = > boolean | Promise < boolean > ) ) : Promise < WebSocket > ;
/ * *
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
* /
waitForEvent ( event : 'worker' , optionsOrPredicate ? : { predicate ? : ( worker : Worker ) = > boolean | Promise < boolean > , timeout? : number } | ( ( worker : Worker ) = > boolean | Promise < boolean > ) ) : Promise < Worker > ;
/ * *
* Returns when the required load state has been reached .
*
* This resolves when the page reaches a required load state , ` load ` by default . The navigation must have been committed
* when this method is called . If current document has already reached the required state , resolves immediately .
*
* ` ` ` js
* await page . click ( 'button' ) ; // Click triggers navigation.
* await page . waitForLoadState ( ) ; // The promise resolves after 'load' event.
* ` ` `
*
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* // It is important to call waitForEvent before click to set up waiting.
* page . waitForEvent ( 'popup' ) ,
* // Click triggers a popup.
* page . locator ( 'button' ) . click ( ) ,
* ] )
* await popup . waitForLoadState ( 'domcontentloaded' ) ; // The promise resolves after 'domcontentloaded' event.
* console . log ( await popup . title ( ) ) ; // Popup is ready to use.
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-load-state).
* @param state Optional load state to wait for , defaults to ` load ` . If the state has been already reached while loading current document , the method resolves immediately . Can be one of :
* - ` 'load' ` - wait for the ` load ` event to be fired .
* - ` 'domcontentloaded' ` - wait for the ` DOMContentLoaded ` event to be fired .
* - ` 'networkidle' ` - wait until there are no network connections for at least ` 500 ` ms .
* @param options
* /
waitForLoadState ( state ? : "load" | "domcontentloaded" | "networkidle" , options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Waits for the main frame navigation and returns the main resource response . In case of multiple redirects , the
* navigation will resolve with the response of the last redirect . In case of navigation to a different anchor or
* navigation due to History API usage , the navigation will resolve with ` null ` .
*
* This resolves when the page navigates to a new URL or reloads . It is useful for when you run code which will indirectly
* cause the page to navigate . e . g . The click target has an ` onclick ` handler that triggers navigation from a ` setTimeout ` .
* Consider this example :
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between clicking and waiting for the navigation.
* const [ response ] = await Promise . all ( [
* // It is important to call waitForNavigation before click to set up waiting.
* page . waitForNavigation ( ) ,
* // Clicking the link will indirectly cause a navigation.
* page . locator ( 'a.delayed-navigation' ) . click ( ) ,
* ] ) ;
* ` ` `
*
* > NOTE : Usage of the [ History API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is
* considered a navigation .
*
* Shortcut for main frame ' s
* [ frame . waitForNavigation ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-navigation).
* @param options
* /
waitForNavigation ( options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* A glob pattern , regex pattern or predicate receiving [ URL ] to match while waiting for the navigation . Note that if the
* parameter is a string without wildcard characters , the method will wait for navigation to URL that is exactly equal to
* the string .
* /
url? : string | RegExp | ( ( url : URL ) = > boolean ) ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
* Waits for the matching request and returns it . See [ waiting for event ] ( https : //playwright.dev/docs/events#waiting-for-event) for more details
* about events .
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between clicking and waiting for the request.
* const [ request ] = await Promise . all ( [
* // Waits for the next request with the specified url
* page . waitForRequest ( 'https://example.com/resource' ) ,
* // Triggers the request
* page . click ( 'button.triggers-request' ) ,
* ] ) ;
*
* // Alternative way with a predicate.
* const [ request ] = await Promise . all ( [
* // Waits for the next request matching some conditions
* page . waitForRequest ( request = > request . url ( ) === 'https://example.com' && request . method ( ) === 'GET' ) ,
* // Triggers the request
* page . click ( 'button.triggers-request' ) ,
* ] ) ;
* ` ` `
*
* @param urlOrPredicate Request URL string , regex or predicate receiving [ Request ] object .
* @param options
* /
waitForRequest ( urlOrPredicate : string | RegExp | ( ( request : Request ) = > boolean | Promise < boolean > ) , options ? : {
/ * *
* Maximum wait time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable the timeout . The default value can be
* changed by using the
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) method.
* /
timeout? : number ;
} ) : Promise < Request > ;
/ * *
* Returns the matched response . See [ waiting for event ] ( https : //playwright.dev/docs/events#waiting-for-event) for more details about events.
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between clicking and waiting for the response.
* const [ response ] = await Promise . all ( [
* // Waits for the next response with the specified url
* page . waitForResponse ( 'https://example.com/resource' ) ,
* // Triggers the response
* page . click ( 'button.triggers-response' ) ,
* ] ) ;
*
* // Alternative way with a predicate.
* const [ response ] = await Promise . all ( [
* // Waits for the next response matching some conditions
* page . waitForResponse ( response = > response . url ( ) === 'https://example.com' && response . status ( ) === 200 ) ,
* // Triggers the response
* page . click ( 'button.triggers-response' ) ,
* ] ) ;
* ` ` `
*
* @param urlOrPredicate Request URL string , regex or predicate receiving [ Response ] object . When a ` baseURL ` via the context options was provided and the passed URL is a path , it gets merged via the
* [ ` new URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
* @param options
* /
waitForResponse ( urlOrPredicate : string | RegExp | ( ( response : Response ) = > boolean | Promise < boolean > ) , options ? : {
/ * *
* Maximum wait time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable the timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < Response > ;
/ * *
* Waits for the given ` timeout ` in milliseconds .
*
* Note that ` page.waitForTimeout() ` should only be used for debugging . Tests using the timer in production are going to be
* flaky . Use signals such as network events , selectors becoming visible and others instead .
*
* ` ` ` js
* // wait for 1 second
* await page . waitForTimeout ( 1000 ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . waitForTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-timeout).
* @param timeout A timeout to wait for
* /
waitForTimeout ( timeout : number ) : Promise < void > ;
/ * *
* Waits for the main frame to navigate to the given URL .
*
* ` ` ` js
* await page . click ( 'a.delayed-navigation' ) ; // Clicking the link will indirectly cause a navigation
* await page . waitForURL ( '**\/target.html' ) ;
* ` ` `
*
* Shortcut for main frame ' s
* [ frame . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-url).
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while waiting for the navigation . Note that if the parameter is a string without wildcard characters , the method will wait for navigation to URL that is exactly equal to
* the string .
* @param options
* /
waitForURL ( url : string | RegExp | ( ( url : URL ) = > boolean ) , options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < void > ;
/ * *
* This method returns all of the dedicated [ WebWorkers ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API)
* associated with the page .
*
* > NOTE : This does not contain ServiceWorkers
* /
workers ( ) : Array < Worker > ; }
/ * *
* At every point of time , page exposes its current frame tree via the
* [ page . mainFrame ( ) ] ( https : //playwright.dev/docs/api/class-page#page-main-frame) and
* [ frame . childFrames ( ) ] ( https : //playwright.dev/docs/api/class-frame#frame-child-frames) methods.
*
* [ Frame ] object ' s lifecycle is controlled by three events , dispatched on the page object :
* - [ page . on ( 'frameattached' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-frame-attached) - fired when the
* frame gets attached to the page . A Frame can be attached to the page only once .
* - [ page . on ( 'framenavigated' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-frame-navigated) - fired when the
* frame commits navigation to a different URL .
* - [ page . on ( 'framedetached' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-frame-detached) - fired when the
* frame gets detached from the page . A Frame can be detached from the page only once .
*
* An example of dumping frame tree :
*
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://www.google.com/chrome/browser/canary.html' ) ;
* dumpFrameTree ( page . mainFrame ( ) , '' ) ;
* await browser . close ( ) ;
*
* function dumpFrameTree ( frame , indent ) {
* console . log ( indent + frame . url ( ) ) ;
* for ( const child of frame . childFrames ( ) ) {
* dumpFrameTree ( child , indent + ' ' ) ;
* }
* }
* } ) ( ) ;
* ` ` `
*
* /
export interface Frame {
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) returns a [Promise],
* then [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) would wait for
* the promise to resolve and return its value .
*
* If the function passed to the
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) returns a
* non - [ Serializable ] value , then
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) returns `undefined`.
* Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` , ` NaN ` ,
* ` Infinity ` , ` -Infinity ` .
*
* ` ` ` js
* const result = await frame . evaluate ( ( [ x , y ] ) = > {
* return Promise . resolve ( x * y ) ;
* } , [ 7 , 8 ] ) ;
* console . log ( result ) ; // prints "56"
* ` ` `
*
* A string can also be passed in instead of a function .
*
* ` ` ` js
* console . log ( await frame . evaluate ( '1 + 2' ) ) ; // prints "3"
* ` ` `
*
* [ ElementHandle ] instances can be passed as an argument to the
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate):
*
* ` ` ` js
* const bodyHandle = await frame . evaluate ( 'document.body' ) ;
* const html = await frame . evaluate ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ bodyHandle , 'hello' ] ) ;
* await bodyHandle . dispose ( ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) returns a [Promise],
* then [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) would wait for
* the promise to resolve and return its value .
*
* If the function passed to the
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) returns a
* non - [ Serializable ] value , then
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) returns `undefined`.
* Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` , ` NaN ` ,
* ` Infinity ` , ` -Infinity ` .
*
* ` ` ` js
* const result = await frame . evaluate ( ( [ x , y ] ) = > {
* return Promise . resolve ( x * y ) ;
* } , [ 7 , 8 ] ) ;
* console . log ( result ) ; // prints "56"
* ` ` `
*
* A string can also be passed in instead of a function .
*
* ` ` ` js
* console . log ( await frame . evaluate ( '1 + 2' ) ) ; // prints "3"
* ` ` `
*
* [ ElementHandle ] instances can be passed as an argument to the
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate):
*
* ` ` ` js
* const bodyHandle = await frame . evaluate ( 'document.body' ) ;
* const html = await frame . evaluate ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ bodyHandle , 'hello' ] ) ;
* await bodyHandle . dispose ( ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) and
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle) is that
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle) returns
* [ JSHandle ] .
*
* If the function , passed to the
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle), returns
* a [ Promise ] , then
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle) would
* wait for the promise to resolve and return its value .
*
* ` ` ` js
* const aWindowHandle = await frame . evaluateHandle ( ( ) = > Promise . resolve ( window ) ) ;
* aWindowHandle ; // Handle for the window object.
* ` ` `
*
* A string can also be passed in instead of a function .
*
* ` ` ` js
* const aHandle = await frame . evaluateHandle ( 'document' ) ; // Handle for the 'document'.
* ` ` `
*
* [ JSHandle ] instances can be passed as an argument to the
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle):
*
* ` ` ` js
* const aHandle = await frame . evaluateHandle ( ( ) = > document . body ) ;
* const resultHandle = await frame . evaluateHandle ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ aHandle , 'hello' ] ) ;
* console . log ( await resultHandle . jsonValue ( ) ) ;
* await resultHandle . dispose ( ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate) and
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle) is that
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle) returns
* [ JSHandle ] .
*
* If the function , passed to the
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle), returns
* a [ Promise ] , then
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle) would
* wait for the promise to resolve and return its value .
*
* ` ` ` js
* const aWindowHandle = await frame . evaluateHandle ( ( ) = > Promise . resolve ( window ) ) ;
* aWindowHandle ; // Handle for the window object.
* ` ` `
*
* A string can also be passed in instead of a function .
*
* ` ` ` js
* const aHandle = await frame . evaluateHandle ( 'document' ) ; // Handle for the 'document'.
* ` ` `
*
* [ JSHandle ] instances can be passed as an argument to the
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-evaluate-handle):
*
* ` ` ` js
* const aHandle = await frame . evaluateHandle ( ( ) = > document . body ) ;
* const resultHandle = await frame . evaluateHandle ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ aHandle , 'hello' ] ) ;
* console . log ( await resultHandle . jsonValue ( ) ) ;
* await resultHandle . dispose ( ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the ElementHandle pointing to the frame element .
*
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* The method finds an element matching the specified selector within the frame . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns `null`.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
$ < K extends keyof HTMLElementTagNameMap > ( selector : K , options ? : { strict : boolean } ) : Promise < ElementHandleForTag < K > | null > ;
/ * *
* Returns the ElementHandle pointing to the frame element .
*
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* The method finds an element matching the specified selector within the frame . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns `null`.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
$ ( selector : string , options ? : { strict : boolean } ) : Promise < ElementHandle < SVGElement | HTMLElement > | null > ;
/ * *
* Returns the ElementHandles pointing to the frame elements .
*
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects instead .
*
* The method finds all elements matching the specified selector within the frame . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns empty array.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ $ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > [ ] > ;
/ * *
* Returns the ElementHandles pointing to the frame elements .
*
* > NOTE : The use of [ ElementHandle ] is discouraged , use [ Locator ] objects instead .
*
* The method finds all elements matching the specified selector within the frame . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns empty array.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ $ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > [ ] > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the frame and passes it as a first argument to
* ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, the
* method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await frame . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await frame . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await frame . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the frame and passes it as a first argument to
* ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, the
* method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await frame . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await frame . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await frame . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the frame and passes it as a first argument to
* ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, the
* method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await frame . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await frame . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await frame . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : This method does not wait for the element to pass actionability checks and therefore can lead to the flaky
* tests . Use
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate), other
* [ Locator ] helper methods or web - first assertions instead .
*
* The method finds an element matching the specified selector within the frame and passes it as a first argument to
* ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, the
* method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const searchValue = await frame . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await frame . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await frame . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
$eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the frame and passes an array of matched elements
* as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divsCounts = await frame . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the frame and passes an array of matched elements
* as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divsCounts = await frame . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the frame and passes an array of matched elements
* as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divsCounts = await frame . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* > NOTE : In most cases ,
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all), other
* [ Locator ] helper methods and web - first assertions do a better job .
*
* The method finds all elements matching the specified selector within the frame and passes an array of matched elements
* as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const divsCounts = await frame . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns when the ` pageFunction ` returns a truthy value , returns that value .
*
* The
* [ frame . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-function)
* can be used to observe viewport size change :
*
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* const watchDog = page . mainFrame ( ) . waitForFunction ( 'window.innerWidth < 100' ) ;
* page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* To pass an argument to the predicate of ` frame.waitForFunction ` function :
*
* ` ` ` js
* const selector = '.foo' ;
* await frame . waitForFunction ( selector = > ! ! document . querySelector ( selector ) , selector ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
waitForFunction < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
/ * *
* Returns when the ` pageFunction ` returns a truthy value , returns that value .
*
* The
* [ frame . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-wait-for-function)
* can be used to observe viewport size change :
*
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* const watchDog = page . mainFrame ( ) . waitForFunction ( 'window.innerWidth < 100' ) ;
* page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* To pass an argument to the predicate of ` frame.waitForFunction ` function :
*
* ` ` ` js
* const selector = '.foo' ;
* await frame . waitForFunction ( selector = > ! ! document . querySelector ( selector ) , selector ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
waitForFunction < R > ( pageFunction : PageFunction < void , R > , arg? : any , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . mainFrame ( ) . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandleForTag < K > > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . mainFrame ( ) . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector ( selector : string , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . mainFrame ( ) . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options : PageWaitForSelectorOptions ) : Promise < ElementHandleForTag < K > | null > ;
/ * *
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* > NOTE : Playwright automatically waits for element to be ready before performing an action . Using [ Locator ] objects and
* web - first assertions make the code wait - for - selector - free .
*
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
*
* This method works across navigations :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* const element = await page . mainFrame ( ) . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector ( selector : string , options : PageWaitForSelectorOptions ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* Returns the added tag when the script ' s onload fires or when the script content was injected into frame .
*
* Adds a ` <script> ` tag into the page with the desired url or content .
* @param options
* /
addScriptTag ( options ? : {
/ * *
* Raw JavaScript content to be injected into frame .
* /
content? : string ;
/ * *
* Path to the JavaScript file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory .
* /
path? : string ;
/ * *
* Script type . Use 'module' in order to load a Javascript ES6 module . See
* [ script ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/script) for more details.
* /
type ? : string ;
/ * *
* URL of a script to be added .
* /
url? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* Returns the added tag when the stylesheet ' s onload fires or when the CSS content was injected into frame .
*
* Adds a ` <link rel="stylesheet"> ` tag into the page with the desired url or a ` <style type="text/css"> ` tag with the
* content .
* @param options
* /
addStyleTag ( options ? : {
/ * *
* Raw CSS content to be injected into frame .
* /
content? : string ;
/ * *
* Path to the CSS file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory .
* /
path? : string ;
/ * *
* URL of the ` <link> ` tag .
* /
url? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* This method checks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws . If the element is already
* checked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
check ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
childFrames ( ) : Array < Frame > ;
/ * *
* This method clicks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element, or
* the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
click ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Gets the full HTML contents of the frame , including the doctype .
* /
content ( ) : Promise < string > ;
/ * *
* This method double clicks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will throw .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` frame.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
dblclick ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the element ,
* ` click ` is dispatched . This is equivalent to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
*
* ` ` ` js
* await frame . dispatchEvent ( 'button#submit' , 'click' ) ;
* ` ` `
*
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
*
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
*
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await frame . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await frame . dispatchEvent ( '#source' , 'dragstart' , { dataTransfer } ) ;
* ` ` `
*
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* @param options
* /
dispatchEvent ( selector : string , type : string , eventInit? : EvaluationArgument , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* @param source
* @param target
* @param options
* /
dragAndDrop ( source : string , target : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Clicks on the source element at this point relative to the top - left corner of the element ' s padding box . If not
* specified , some visible point of the element is used .
* /
sourcePosition ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Drops on the target element at this point relative to the top - left corner of the element ' s padding box . If not
* specified , some visible point of the element is used .
* /
targetPosition ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the
* element , fills it and triggers an ` input ` event after filling . Note that you can pass an empty string to clear the input
* field .
*
* If the target element is not an ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element , this method throws an error .
* However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
* instead .
*
* To send fine - grained keyboard events , use
* [ frame . type ( selector , text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-type).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param value Value to fill for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( selector : string , value : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method fetches an element with ` selector ` and focuses it . If there ' s no element matching ` selector ` , the method
* waits until a matching element appears in the DOM .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
focus ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the ` frame ` or ` iframe ` element handle which corresponds to this frame .
*
* This is an inverse of
* [ elementHandle . contentFrame ( ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-content-frame). Note
* that returned handle actually belongs to the parent frame .
*
* This method throws an error if the frame has been detached before ` frameElement() ` returns .
*
* ` ` ` js
* const frameElement = await frame . frameElement ( ) ;
* const contentFrame = await frameElement . contentFrame ( ) ;
* console . log ( frame === contentFrame ) ; // -> true
* ` ` `
*
* /
frameElement ( ) : Promise < ElementHandle > ;
/ * *
* When working with iframes , you can create a frame locator that will enter the iframe and allow selecting elements in
* that iframe . Following snippet locates element with text "Submit" in the iframe with id ` my-frame ` , like ` <iframe
* id = "my-frame" > ` :
*
* ` ` ` js
* const locator = frame . frameLocator ( '#my-iframe' ) . locator ( 'text=Submit' ) ;
* await locator . click ( ) ;
* ` ` `
*
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
frameLocator ( selector : string ) : FrameLocator ;
/ * *
* Returns element attribute value .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param name Attribute name to get the value for .
* @param options
* /
getAttribute ( selector : string , name : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect .
*
* The method will throw an error if :
* - there ' s an SSL error ( e . g . in case of self - signed certificates ) .
* - target URL is invalid .
* - the ` timeout ` is exceeded during navigation .
* - the remote server does not respond or is unreachable .
* - the main resource failed to load .
*
* The method will not throw an error when any valid HTTP status code is returned by the remote server , including 404 " Not
* Found " and 500 " Internal Server Error " . The status code for such responses can be retrieved by calling
* [ response . status ( ) ] ( https : //playwright.dev/docs/api/class-response#response-status).
*
* > NOTE : The method either throws an error or returns a main resource response . The only exceptions are navigation to
* ` about:blank ` or navigation to the same URL with a different hash , which would succeed and return ` null ` .
* > NOTE : Headless mode doesn ' t support navigation to a PDF document . See the
* [ upstream issue ] ( https : //bugs.chromium.org/p/chromium/issues/detail?id=761295).
* @param url URL to navigate frame to . The url should include scheme , e . g . ` https:// ` .
* @param options
* /
goto ( url : string , options ? : {
/ * *
* Referer header value . If provided it will take preference over the referer header value set by
* [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#page-set-extra-http-headers).
* /
referer? : string ;
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
* This method hovers over an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the element,
* or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
hover ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns ` element.innerHTML ` .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
innerHTML ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` element.innerText ` .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
innerText ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
2022-04-25 14:55:41 +02:00
* Returns ` input.value ` for the selected ` <input> ` or ` <textarea> ` or ` <select> ` element .
*
* Throws for non - input elements . However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
2022-04-14 01:13:30 +02:00
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
inputValue ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isChecked ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns ` true ` if the frame has been detached , or ` false ` otherwise .
* /
isDetached ( ) : boolean ;
/ * *
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isDisabled ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isEditable ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isEnabled ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible). `selector` that does not
* match any elements is considered hidden .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isHidden ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* * * DEPRECATED * * This option is ignored .
* [ frame . isHidden ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-is-hidden) does not wait for the
* element to become hidden and returns immediately .
* @deprecated
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible). `selector` that does not match any elements is
* considered not visible .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
isVisible ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* * * DEPRECATED * * This option is ignored .
* [ frame . isVisible ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-is-visible) does not wait for
* the element to become visible and returns immediately .
* @deprecated
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* The method returns an element locator that can be used to perform actions in the frame . Locator is resolved to the
* element immediately before performing an action , so a series of actions on the same locator can in fact be performed on
* different DOM elements . That would happen if the DOM structure between those actions has changed .
2022-05-08 22:59:40 +02:00
*
* [ Learn more about locators ] ( https : //playwright.dev/docs/locators).
2022-04-14 01:13:30 +02:00
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
locator ( selector : string , options ? : {
/ * *
* Matches elements containing an element that matches an inner locator . Inner locator is queried against the outer one .
* For example , ` article ` that has ` text=Playwright ` matches ` <article><div>Playwright</div></article> ` .
*
* Note that outer and inner locators must belong to the same frame . Inner locator must not contain [ FrameLocator ] s .
* /
has? : Locator ;
/ * *
* Matches elements containing specified text somewhere inside , possibly in a child or a descendant element . When passed a
* [ string ] , matching is case - insensitive and searches for a substring . For example , ` "Playwright" ` matches
* ` <article><div>Playwright</div></article> ` .
* /
hasText? : string | RegExp ;
} ) : Locator ;
/ * *
* Returns frame ' s name attribute as specified in the tag .
*
* If the name is empty , returns the id attribute instead .
*
* > NOTE : This value is calculated once when the frame is created , and will not update if the attribute is changed later .
* /
name ( ) : string ;
/ * *
* Returns the page containing this frame .
* /
page ( ) : Page ;
/ * *
* Parent frame , if any . Detached frames and main frames return ` null ` .
* /
parentFrame ( ) : null | Frame ;
/ * *
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
*
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
*
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
*
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
*
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
*
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When specified with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( selector : string , key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, waits until
* all specified options are present in the ` <select> ` element and selects these options .
*
* If the target element is not a ` <select> ` element , this method throws an error . However , if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used instead.
*
* Returns the array of option values that have been successfully selected .
*
* Triggers a ` change ` and ` input ` event once all the provided options have been selected .
*
* ` ` ` js
* // single selection matching the value
* frame . selectOption ( 'select#colors' , 'blue' ) ;
*
* // single selection matching both the value and the label
* frame . selectOption ( 'select#colors' , { label : 'Blue' } ) ;
*
* // multiple selection
* frame . selectOption ( 'select#colors' , 'red' , 'green' , 'blue' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
* @param options
* /
selectOption ( selector : string , values : null | string | ElementHandle | Array < string > | {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} > , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
* This method checks or unchecks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws .
* 1 . If the element already has the right checked state , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked or unchecked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param checked Whether to check or uncheck the checkbox .
* @param options
* /
setChecked ( selector : string , checked : boolean , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* @param html HTML markup to assign to the page .
* @param options
* /
setContent ( html : string , options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < void > ;
/ * *
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
2022-04-27 16:06:30 +02:00
* are resolved relative to the current working directory . For empty array , clears the selected files .
2022-04-25 14:55:41 +02:00
*
* This method expects ` selector ` to point to an
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
2022-04-14 01:13:30 +02:00
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param files
* @param options
* /
setInputFiles ( selector : string , files : string | Array < string > | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} | Array < {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} > , options ? : {
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method taps an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` frame.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
tap ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns ` element.textContent ` .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
textContent ( selector : string , options ? : {
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Returns the page title .
* /
title ( ) : Promise < string > ;
/ * *
* Sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text . ` frame.type ` can be used to
* send fine - grained keyboard events . To fill values in form fields , use
* [ frame . fill ( selector , value [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frame-fill).
*
* To press a special key , like ` Control ` or ` ArrowDown ` , use
* [ keyboard . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-press).
*
* ` ` ` js
* await frame . type ( '#mytextarea' , 'Hello' ) ; // Types instantly
* await frame . type ( '#mytextarea' , 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
*
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param text A text to type into a focused element .
* @param options
* /
type ( selector : string , text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks an element matching ` selector ` by performing the following steps :
* 1 . Find an element matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws . If the element is already
* unchecked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param selector A selector to search for an element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
uncheck ( selector : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns frame ' s url .
* /
url ( ) : string ;
/ * *
* Waits for the required load state to be reached .
*
* This returns when the frame reaches a required load state , ` load ` by default . The navigation must have been committed
* when this method is called . If current document has already reached the required state , resolves immediately .
*
* ` ` ` js
* await frame . click ( 'button' ) ; // Click triggers navigation.
* await frame . waitForLoadState ( ) ; // Waits for 'load' state by default.
* ` ` `
*
* @param state Optional load state to wait for , defaults to ` load ` . If the state has been already reached while loading current document , the method resolves immediately . Can be one of :
* - ` 'load' ` - wait for the ` load ` event to be fired .
* - ` 'domcontentloaded' ` - wait for the ` DOMContentLoaded ` event to be fired .
* - ` 'networkidle' ` - wait until there are no network connections for at least ` 500 ` ms .
* @param options
* /
waitForLoadState ( state ? : "load" | "domcontentloaded" | "networkidle" , options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Waits for the frame navigation and returns the main resource response . In case of multiple redirects , the navigation
* will resolve with the response of the last redirect . In case of navigation to a different anchor or navigation due to
* History API usage , the navigation will resolve with ` null ` .
*
* This method waits for the frame to navigate to a new URL . It is useful for when you run code which will indirectly cause
* the frame to navigate . Consider this example :
*
* ` ` ` js
* const [ response ] = await Promise . all ( [
* frame . waitForNavigation ( ) , // The promise resolves after navigation has finished
* frame . click ( 'a.delayed-navigation' ) , // Clicking the link will indirectly cause a navigation
* ] ) ;
* ` ` `
*
* > NOTE : Usage of the [ History API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is
* considered a navigation .
* @param options
* /
waitForNavigation ( options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* A glob pattern , regex pattern or predicate receiving [ URL ] to match while waiting for the navigation . Note that if the
* parameter is a string without wildcard characters , the method will wait for navigation to URL that is exactly equal to
* the string .
* /
url? : string | RegExp | ( ( url : URL ) = > boolean ) ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < null | Response > ;
/ * *
* Waits for the given ` timeout ` in milliseconds .
*
* Note that ` frame.waitForTimeout() ` should only be used for debugging . Tests using the timer in production are going to
* be flaky . Use signals such as network events , selectors becoming visible and others instead .
* @param timeout A timeout to wait for
* /
waitForTimeout ( timeout : number ) : Promise < void > ;
/ * *
* Waits for the frame to navigate to the given URL .
*
* ` ` ` js
* await frame . click ( 'a.delayed-navigation' ) ; // Clicking the link will indirectly cause a navigation
* await frame . waitForURL ( '**\/target.html' ) ;
* ` ` `
*
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while waiting for the navigation . Note that if the parameter is a string without wildcard characters , the method will wait for navigation to URL that is exactly equal to
* the string .
* @param options
* /
waitForURL ( url : string | RegExp | ( ( url : URL ) = > boolean ) , options ? : {
/ * *
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
* - ` 'commit' ` - consider operation to be finished when network response is received and the document started loading .
* /
waitUntil ? : "load" | "domcontentloaded" | "networkidle" | "commit" ;
} ) : Promise < void > ; }
/ * *
* - extends : [ EventEmitter ]
*
* BrowserContexts provide a way to operate multiple independent browser sessions .
*
* If a page opens another page , e . g . with a ` window.open ` call , the popup will belong to the parent page ' s browser
* context .
*
* Playwright allows creating "incognito" browser contexts with
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browser-new-context) method. "Incognito"
* browser contexts don ' t write any browsing data to disk .
*
* ` ` ` js
* // Create a new incognito browser context
* const context = await browser . newContext ( ) ;
* // Create a new page inside context.
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* // Dispose context once it's no longer needed.
* await context . close ( ) ;
* ` ` `
*
* /
export interface BrowserContext {
/ * *
* The method adds a function called ` name ` on the ` window ` object of every frame in every page in the context . When
* called , the function executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` . If
* the ` callback ` returns a [ Promise ] , it will be awaited .
*
* The first argument of the ` callback ` function contains information about the caller : ` { browserContext: BrowserContext,
* page : Page , frame : Frame } ` .
*
* See [ page . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-expose-binding) for
* page - only version .
*
* An example of exposing page URL to all frames in all pages in the context :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* await context . exposeBinding ( 'pageURL' , ( { page } ) = > page . url ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . pageURL ( ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
*
* An example of passing an element handle :
*
* ` ` ` js
* await context . exposeBinding ( 'clicked' , async ( source , element ) = > {
* console . log ( await element . textContent ( ) ) ;
* } , { handle : true } ) ;
* await page . setContent ( `
* < script >
* document . addEventListener ( 'click' , event = > window . clicked ( event . target ) ) ;
* < / script >
* < div > Click me < / div >
* < div > Or click me < / div >
* ` );
* ` ` `
*
* @param name Name of the function on the window object .
* @param callback Callback function that will be called in the Playwright ' s context .
* @param options
* /
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , arg : JSHandle ) = > any , options : { handle : true } ) : Promise < void > ;
/ * *
* The method adds a function called ` name ` on the ` window ` object of every frame in every page in the context . When
* called , the function executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` . If
* the ` callback ` returns a [ Promise ] , it will be awaited .
*
* The first argument of the ` callback ` function contains information about the caller : ` { browserContext: BrowserContext,
* page : Page , frame : Frame } ` .
*
* See [ page . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-expose-binding) for
* page - only version .
*
* An example of exposing page URL to all frames in all pages in the context :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* await context . exposeBinding ( 'pageURL' , ( { page } ) = > page . url ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . pageURL ( ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
*
* An example of passing an element handle :
*
* ` ` ` js
* await context . exposeBinding ( 'clicked' , async ( source , element ) = > {
* console . log ( await element . textContent ( ) ) ;
* } , { handle : true } ) ;
* await page . setContent ( `
* < script >
* document . addEventListener ( 'click' , event = > window . clicked ( event . target ) ) ;
* < / script >
* < div > Click me < / div >
* < div > Or click me < / div >
* ` );
* ` ` `
*
* @param name Name of the function on the window object .
* @param callback Callback function that will be called in the Playwright ' s context .
* @param options
* /
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , . . . args : any [ ] ) = > any , options ? : { handle? : boolean } ) : Promise < void > ;
/ * *
* > NOTE : Only works with Chromium browser ' s persistent context .
*
* Emitted when new background page is created in the context .
*
* ` ` ` js
* const backgroundPage = await context . waitForEvent ( 'backgroundpage' ) ;
* ` ` `
*
* /
on ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-close) method was called.
* /
on ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
/ * *
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-popup) to
* receive events about popups relevant to a specific page .
*
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
*
* ` ` ` js
* const [ newPage ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await newPage . evaluate ( 'location.href' ) ) ;
* ` ` `
*
* > NOTE : Use
* [ 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 ;
/ * *
* Emitted when a request is issued from any pages created through this context . The [ request ] object is read - only . To only
* listen for requests from a particular page , use
* [ page . on ( 'request' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request).
*
* In order to intercept and mutate requests , see
* [ 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 ;
/ * *
* Emitted when a request fails , for example by timing out . To only listen for failed requests from a particular page , use
* [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed).
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with
* [ browserContext . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
* 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 ;
/ * *
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` . To listen for successful requests from a 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 ;
/ * *
* 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 ;
/ * *
* > 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* > NOTE : Only works with Chromium browser ' s persistent context .
*
* Emitted when new background page is created in the context .
*
* ` ` ` js
* const backgroundPage = await context . waitForEvent ( 'backgroundpage' ) ;
* ` ` `
*
* /
addListener ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-close) method was called.
* /
addListener ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
/ * *
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-popup) to
* receive events about popups relevant to a specific page .
*
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
*
* ` ` ` js
* const [ newPage ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await newPage . evaluate ( 'location.href' ) ) ;
* ` ` `
*
* > NOTE : Use
* [ 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 ;
/ * *
* Emitted when a request is issued from any pages created through this context . The [ request ] object is read - only . To only
* listen for requests from a particular page , use
* [ page . on ( 'request' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request).
*
* In order to intercept and mutate requests , see
* [ 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 ;
/ * *
* Emitted when a request fails , for example by timing out . To only listen for failed requests from a particular page , use
* [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed).
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with
* [ browserContext . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
* 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 ;
/ * *
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` . To listen for successful requests from a 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 ;
/ * *
* 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 ;
/ * *
* > 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 ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Adds cookies into this browser context . All pages within this context will have these cookies installed . Cookies can be
* obtained via
* [ browserContext . cookies ( [ urls ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-cookies).
*
* ` ` ` js
* await browserContext . addCookies ( [ cookieObject1 , cookieObject2 ] ) ;
* ` ` `
*
* @param cookies
* /
addCookies ( cookies : Array < {
name : string ;
value : string ;
/ * *
* either url or domain / path are required . Optional .
* /
url? : string ;
/ * *
* either url or domain / path are required Optional .
* /
domain? : string ;
/ * *
* either url or domain / path are required Optional .
* /
path? : string ;
/ * *
* Unix time in seconds . Optional .
* /
expires? : number ;
/ * *
* Optional .
* /
httpOnly? : boolean ;
/ * *
* Optional .
* /
secure? : boolean ;
/ * *
* Optional .
* /
sameSite ? : "Strict" | "Lax" | "None" ;
} > ) : Promise < void > ;
/ * *
* Adds a script which would be evaluated in one of the following scenarios :
* - Whenever a page is created in the browser context or is navigated .
* - Whenever a child frame is attached or navigated in any page in the browser context . In this case , the script is
* evaluated in the context of the newly attached frame .
*
* The script is evaluated after the document was created but before any of its scripts were run . This is useful to amend
* the JavaScript environment , e . g . to seed ` Math.random ` .
*
* An example of overriding ` Math.random ` before the page loads :
*
* ` ` ` js browser
* // preload.js
* Math . random = ( ) = > 42 ;
* ` ` `
*
* ` ` ` js
* // In your playwright script, assuming the preload.js file is in same directory.
* await browserContext . addInitScript ( {
* path : 'preload.js'
* } ) ;
* ` ` `
*
* > NOTE : The order of evaluation of multiple scripts installed via
* [ browserContext . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script)
* and [ page . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-add-init-script) is not defined.
* @param script Script to be evaluated in all pages in the browser context .
* @param arg Optional argument to pass to ` script ` ( only supported when passing a function ) .
* /
addInitScript ( script : Function | string | {
/ * *
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
* /
path? : string ;
/ * *
* Raw script content . Optional .
* /
content? : string ;
} , arg? : Serializable ) : Promise < void > ;
/ * *
* > NOTE : Background pages are only supported on Chromium - based browsers .
*
* All existing background pages in the context .
* /
backgroundPages ( ) : Array < Page > ;
/ * *
* Returns the browser instance of the context . If it was launched as a persistent context null gets returned .
* /
browser ( ) : null | Browser ;
/ * *
* Clears context cookies .
* /
clearCookies ( ) : Promise < void > ;
/ * *
* Clears all permission overrides for the browser context .
*
* ` ` ` js
* const context = await browser . newContext ( ) ;
* await context . grantPermissions ( [ 'clipboard-read' ] ) ;
* // do stuff ..
* context . clearPermissions ( ) ;
* ` ` `
*
* /
clearPermissions ( ) : Promise < void > ;
/ * *
* Closes the browser context . All the pages that belong to the browser context will be closed .
*
* > NOTE : The default browser context cannot be closed .
* /
close ( ) : Promise < void > ;
/ * *
* If no URLs are specified , this method returns all cookies . If URLs are specified , only cookies that affect those URLs
* are returned .
* @param urls Optional list of URLs .
* /
cookies ( urls? : string | Array < string > ) : Promise < Array < Cookie > > ;
/ * *
* The method adds a function called ` name ` on the ` window ` object of every frame in every page in the context . When
* called , the function executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` .
*
* If the ` callback ` returns a [ Promise ] , it will be awaited .
*
* See [ page . exposeFunction ( name , callback ) ] ( https : //playwright.dev/docs/api/class-page#page-expose-function) for page-only
* version .
*
* An example of adding a ` sha256 ` function to all pages in the context :
*
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
* const crypto = require ( 'crypto' ) ;
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* await context . exposeFunction ( 'sha256' , text = > crypto . createHash ( 'sha256' ) . update ( text ) . digest ( 'hex' ) ) ;
* const page = await context . newPage ( ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . sha256 ( 'PLAYWRIGHT' ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
*
* @param name Name of the function on the window object .
* @param callback Callback function that will be called in the Playwright ' s context .
* /
exposeFunction ( name : string , callback : Function ) : Promise < void > ;
/ * *
* Grants specified permissions to the browser context . Only grants corresponding permissions to the given origin if
* specified .
* @param permissions A permission or an array of permissions to grant . Permissions can be one of the following values : - ` 'geolocation' `
* - ` 'midi' `
* - ` 'midi-sysex' ` ( system - exclusive midi )
* - ` 'notifications' `
* - ` 'camera' `
* - ` 'microphone' `
* - ` 'background-sync' `
* - ` 'ambient-light-sensor' `
* - ` 'accelerometer' `
* - ` 'gyroscope' `
* - ` 'magnetometer' `
* - ` 'accessibility-events' `
* - ` 'clipboard-read' `
* - ` 'clipboard-write' `
* - ` 'payment-handler' `
* @param options
* /
grantPermissions ( permissions : Array < string > , options ? : {
/ * *
* The [ origin ] to grant permissions to , e . g . "https://example.com" .
* /
origin? : string ;
} ) : Promise < void > ;
/ * *
* > NOTE : CDP sessions are only supported on Chromium - based browsers .
*
* Returns the newly created session .
* @param page Target to create new session for . For backwards - compatibility , this parameter is named ` page ` , but it can be a ` Page ` or ` Frame ` type .
* /
newCDPSession ( page : Page | Frame ) : Promise < CDPSession > ;
/ * *
* Creates a new page in the browser context .
* /
newPage ( ) : Promise < Page > ;
/ * *
* Returns all open pages in the context .
* /
pages ( ) : Array < Page > ;
/ * *
* API testing helper associated with this context . Requests made with this API will use context cookies .
* /
request : APIRequestContext ;
/ * *
* Routing provides the capability to modify network requests that are made by any page in the browser context . Once route
* is enabled , every request matching the url pattern will stall unless it ' s continued , fulfilled or aborted .
*
* > NOTE : [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route) will not intercept
* requests intercepted by Service Worker . See [ this ] ( https : //github.com/microsoft/playwright/issues/1090) issue. We
* recommend disabling Service Workers when using request interception . Via ` await context.addInitScript(() => delete
* window . navigator . serviceWorker ) ; `
*
* An example of a naive handler that aborts all image requests :
*
* ` ` ` js
* const context = await browser . newContext ( ) ;
* await context . route ( '**\/*.{png,jpg,jpeg}' , route = > route . abort ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
*
* or the same snippet using a regex pattern instead :
*
* ` ` ` js
* const context = await browser . newContext ( ) ;
* await context . route ( /(\.png$)|(\.jpg$)/ , route = > route . abort ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
*
* It is possible to examine the request to decide the route action . For example , mocking all requests that contain some
* post data , and leaving all other requests as is :
*
* ` ` ` js
* await context . route ( '/api/**' , route = > {
* if ( route . request ( ) . postData ( ) . includes ( 'my-string' ) )
* route . fulfill ( { body : 'mocked-data' } ) ;
* else
* route . continue ( ) ;
* } ) ;
* ` ` `
*
* Page routes ( set up with [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route))
* take precedence over browser context routes when request matches both handlers .
*
* To remove a route with its handler you can use
* [ browserContext . unroute ( url [ , handler ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-unroute).
*
* > NOTE : Enabling routing disables http cache .
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while routing . When a ` baseURL ` via the context options was provided and the passed URL is a path , it gets merged via the
* [ ` new URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
* @param handler handler function to route the request .
* @param options
* /
route ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler : ( ( route : Route , request : Request ) = > void ) , options ? : {
/ * *
* How often a route should be used . By default it will be used every time .
* /
times? : number ;
} ) : Promise < void > ;
/ * *
* > NOTE : Service workers are only supported on Chromium - based browsers .
*
* All existing service workers in the context .
* /
serviceWorkers ( ) : Array < Worker > ;
/ * *
* This setting will change the default maximum navigation time for the following methods and related shortcuts :
* - [ page . goBack ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-go-back)
* - [ page . goForward ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-go-forward)
* - [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto)
* - [ page . reload ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-reload)
* - [ page . setContent ( html [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-set-content)
* - [ page . waitForNavigation ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-navigation)
*
* > NOTE :
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
* and [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) take priority
* over
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout).
* @param timeout Maximum navigation time in milliseconds
* /
setDefaultNavigationTimeout ( timeout : number ) : void ;
/ * *
* This setting will change the default maximum time for all the methods accepting ` timeout ` option .
*
* > NOTE :
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout),
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) and
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout)
* take priority over
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout).
* @param timeout Maximum time in milliseconds
* /
setDefaultTimeout ( timeout : number ) : void ;
/ * *
* The extra HTTP headers will be sent with every request initiated by any page in the context . These headers are merged
* with page - specific extra HTTP headers set with
* [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#page-set-extra-http-headers). If page
* overrides a particular header , page - specific header value will be used instead of the browser context header value .
*
* > NOTE :
* [ browserContext . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-extra-http-headers)
* does not guarantee the order of headers in the outgoing requests .
* @param headers An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
setExtraHTTPHeaders ( headers : { [ key : string ] : string ; } ) : Promise < void > ;
/ * *
* Sets the context ' s geolocation . Passing ` null ` or ` undefined ` emulates position unavailable .
*
* ` ` ` js
* await browserContext . setGeolocation ( { latitude : 59.95 , longitude : 30.31667 } ) ;
* ` ` `
*
* > NOTE : Consider using
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
* to grant permissions for the browser context pages to read its geolocation .
* @param geolocation
* /
setGeolocation ( geolocation : null | {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ) : Promise < void > ;
/ * *
* * * DEPRECATED * * Browsers may cache credentials after successful authentication . Create a new browser context instead .
* @deprecated
* @param httpCredentials
* /
setHTTPCredentials ( httpCredentials : null | {
username : string ;
password : string ;
} ) : Promise < void > ;
/ * *
* @param offline Whether to emulate network being offline for the browser context .
* /
setOffline ( offline : boolean ) : Promise < void > ;
/ * *
* Returns storage state for this browser context , contains current cookies and local storage snapshot .
* @param options
* /
storageState ( options ? : {
/ * *
* The file path to save the storage state to . If ` path ` is a relative path , then it is resolved relative to current
* working directory . If no path is provided , storage state is still returned , but won ' t be saved to the disk .
* /
path? : string ;
} ) : Promise < {
cookies : Array < {
name : string ;
value : string ;
domain : string ;
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
sameSite : "Strict" | "Lax" | "None" ;
} > ;
origins : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} > ;
tracing : Tracing ;
/ * *
* Removes a route created with
* [ browserContext . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-route).
* When ` handler ` is not specified , removes all routes for the ` url ` .
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] used to register a routing with [ browserContext . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-route).
* @param handler Optional handler function used to register a routing with [ browserContext . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-route).
* /
unroute ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler ? : ( ( route : Route , request : Request ) = > void ) ) : Promise < void > ;
/ * *
* > NOTE : Only works with Chromium browser ' s persistent context .
*
* Emitted when new background page is created in the context .
*
* ` ` ` js
* const backgroundPage = await context . waitForEvent ( 'backgroundpage' ) ;
* ` ` `
*
* /
waitForEvent ( event : 'backgroundpage' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-close) method was called.
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( browserContext : BrowserContext ) = > boolean | Promise < boolean > , timeout? : number } | ( ( browserContext : BrowserContext ) = > boolean | Promise < boolean > ) ) : Promise < BrowserContext > ;
/ * *
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-popup) to
* receive events about popups relevant to a specific page .
*
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
*
* ` ` ` js
* const [ newPage ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await newPage . evaluate ( 'location.href' ) ) ;
* ` ` `
*
* > NOTE : Use
* [ 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 ) .
* /
waitForEvent ( event : 'page' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Emitted when a request is issued from any pages created through this context . The [ request ] object is read - only . To only
* listen for requests from a particular page , use
* [ page . on ( 'request' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request).
*
* In order to intercept and mutate requests , see
* [ 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).
* /
waitForEvent ( event : 'request' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean | Promise < boolean > , timeout? : number } | ( ( request : Request ) = > boolean | Promise < boolean > ) ) : Promise < Request > ;
/ * *
* Emitted when a request fails , for example by timing out . To only listen for failed requests from a particular page , use
* [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed).
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with
* [ browserContext . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
* event and not with
* [ browserContext . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed).
* /
waitForEvent ( event : 'requestfailed' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean | Promise < boolean > , timeout? : number } | ( ( request : Request ) = > boolean | Promise < boolean > ) ) : Promise < Request > ;
/ * *
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` . To listen for successful requests from a particular
* page , use [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-finished).
* /
waitForEvent ( event : 'requestfinished' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean | Promise < boolean > , timeout? : number } | ( ( request : Request ) = > boolean | Promise < boolean > ) ) : Promise < Request > ;
/ * *
* 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).
* /
waitForEvent ( event : 'response' , optionsOrPredicate ? : { predicate ? : ( response : Response ) = > boolean | Promise < boolean > , timeout? : number } | ( ( response : Response ) = > boolean | Promise < boolean > ) ) : Promise < Response > ;
/ * *
* > NOTE : Service workers are only supported on Chromium - based browsers .
*
* Emitted when new service worker is created in the context .
* /
waitForEvent ( event : 'serviceworker' , optionsOrPredicate ? : { predicate ? : ( worker : Worker ) = > boolean | Promise < boolean > , timeout? : number } | ( ( worker : Worker ) = > boolean | Promise < boolean > ) ) : Promise < Worker > ;
}
/ * *
* The Worker class represents a [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API). `worker`
* event is emitted on the page object to signal a worker creation . ` close ` event is emitted on the worker object when the
* worker is gone .
*
* ` ` ` js
* page . on ( 'worker' , worker = > {
* console . log ( 'Worker created: ' + worker . url ( ) ) ;
* worker . on ( 'close' , worker = > console . log ( 'Worker destroyed: ' + worker . url ( ) ) ) ;
* } ) ;
*
* console . log ( 'Current workers:' ) ;
* for ( const worker of page . workers ( ) )
* console . log ( ' ' + worker . url ( ) ) ;
* ` ` `
*
* /
export interface Worker {
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) returns a
* [ Promise ] , then [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate)
* would wait for the promise to resolve and return its value .
*
* If the function passed to the
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) returns a
* non - [ Serializable ] value , then
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) returns
* ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` ,
* ` NaN ` , ` Infinity ` , ` -Infinity ` .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) returns a
* [ Promise ] , then [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate)
* would wait for the promise to resolve and return its value .
*
* If the function passed to the
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) returns a
* non - [ Serializable ] value , then
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) returns
* ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` ,
* ` NaN ` , ` Infinity ` , ` -Infinity ` .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) and
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle) is
* that [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle)
* returns [ JSHandle ] .
*
* If the function passed to the
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle)
* returns a [ Promise ] , then
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle) would
* wait for the promise to resolve and return its value .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate) and
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle) is
* that [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle)
* returns [ JSHandle ] .
*
* If the function passed to the
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle)
* returns a [ Promise ] , then
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#worker-evaluate-handle) would
* wait for the promise to resolve and return its value .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* 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 ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
url ( ) : string ; }
/ * *
* JSHandle represents an in - page JavaScript object . JSHandles can be created with the
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) method.
*
* ` ` ` js
* const windowHandle = await page . evaluateHandle ( ( ) = > window ) ;
* // ...
* ` ` `
*
* JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with
* [ jsHandle . dispose ( ) ] ( https : //playwright.dev/docs/api/class-jshandle#js-handle-dispose). JSHandles are auto-disposed when
* their origin frame gets navigated or the parent context gets destroyed .
*
* JSHandle instances can be used as an argument in
* [ page . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector),
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) and
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) methods.
* /
export interface JSHandle < T = any > {
/ * *
* Returns the return value of ` pageFunction ` .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then ` handle.evaluate ` would wait for the promise to resolve and return its
* value .
*
* Examples :
*
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet .retweets' ) ;
* expect ( await tweetHandle . evaluate ( node = > node . innerText ) ) . toBe ( '10 retweets' ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , Arg , O extends T = T > ( pageFunction : PageFunctionOn < O , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then ` handle.evaluate ` would wait for the promise to resolve and return its
* value .
*
* Examples :
*
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet .retweets' ) ;
* expect ( await tweetHandle . evaluate ( node = > node . innerText ) ) . toBe ( '10 retweets' ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , O extends T = T > ( pageFunction : PageFunctionOn < O , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* The only difference between ` jsHandle.evaluate ` and ` jsHandle.evaluateHandle ` is that ` jsHandle.evaluateHandle ` returns
* [ JSHandle ] .
*
* If the function passed to the ` jsHandle.evaluateHandle ` returns a [ Promise ] , then ` jsHandle.evaluateHandle ` would wait
* for the promise to resolve and return its value .
*
* See [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) for more
* details .
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R , Arg , O extends T = T > ( pageFunction : PageFunctionOn < O , Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* The only difference between ` jsHandle.evaluate ` and ` jsHandle.evaluateHandle ` is that ` jsHandle.evaluateHandle ` returns
* [ JSHandle ] .
*
* If the function passed to the ` jsHandle.evaluateHandle ` returns a [ Promise ] , then ` jsHandle.evaluateHandle ` would wait
* for the promise to resolve and return its value .
*
* See [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) for more
* details .
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R , O extends T = T > ( pageFunction : PageFunctionOn < O , void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* Returns a JSON representation of the object . If the object has a ` toJSON ` function , it * * will not be called * * .
*
* > NOTE : The method will return an empty JSON object if the referenced object is not stringifiable . It will throw an
* error if the object has circular references .
* /
jsonValue ( ) : Promise < T > ;
/ * *
* Returns either ` null ` or the object handle itself , if the object handle is an instance of [ ElementHandle ] .
* /
asElement ( ) : T extends Node ? ElementHandle < T > : null ;
/ * *
* The ` jsHandle.dispose ` method stops referencing the element handle .
* /
dispose ( ) : Promise < void > ;
/ * *
* The method returns a map with * * own property names * * as keys and JSHandle instances for the property values .
*
* ` ` ` js
* const handle = await page . evaluateHandle ( ( ) = > ( { window , document } ) ) ;
* const properties = await handle . getProperties ( ) ;
* const windowHandle = properties . get ( 'window' ) ;
* const documentHandle = properties . get ( 'document' ) ;
* await handle . dispose ( ) ;
* ` ` `
*
* /
getProperties ( ) : Promise < Map < string , JSHandle > > ;
/ * *
* Fetches a single property from the referenced object .
* @param propertyName property to get
* /
getProperty ( propertyName : string ) : Promise < JSHandle > ; }
/ * *
* - extends : [ JSHandle ]
*
* ElementHandle represents an in - page DOM element . ElementHandles can be created with the
* [ page . $ ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-query-selector) method.
*
* > NOTE : The use of ElementHandle is discouraged , use [ Locator ] objects and web - first assertions instead .
*
* ` ` ` js
* const hrefElement = await page . $ ( 'a' ) ;
* await hrefElement . click ( ) ;
* ` ` `
*
* ElementHandle prevents DOM element from garbage collection unless the handle is disposed with
* [ jsHandle . dispose ( ) ] ( https : //playwright.dev/docs/api/class-jshandle#js-handle-dispose). ElementHandles are auto-disposed
* when their origin frame gets navigated .
*
* ElementHandle instances can be used as an argument in
* [ page . $eval ( selector , pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-eval-on-selector)
* and [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate) methods.
*
* The difference between the [ Locator ] and ElementHandle is that the ElementHandle points to a particular element , while
* [ Locator ] captures the logic of how to retrieve an element .
*
* In the example below , handle points to a particular DOM element on page . If that element changes text or is used by
* React to render an entirely different component , handle is still pointing to that very DOM element . This can lead to
* unexpected behaviors .
*
* ` ` ` js
* const handle = await page . $ ( 'text=Submit' ) ;
* // ...
* await handle . hover ( ) ;
* await handle . click ( ) ;
* ` ` `
*
* With the locator , every time the ` element ` is used , up - to - date DOM element is located in the page using the selector . So
* in the snippet below , underlying DOM element is going to be located twice .
*
* ` ` ` js
* const locator = page . locator ( 'text=Submit' ) ;
* // ...
* await locator . hover ( ) ;
* await locator . click ( ) ;
* ` ` `
*
* /
export interface ElementHandle < T = Node > extends JSHandle < T > {
/ * *
* The method finds an element matching the specified selector in the ` ElementHandle ` ' s subtree . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns `null`.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ < K extends keyof HTMLElementTagNameMap > ( selector : K , options ? : { strict : boolean } ) : Promise < ElementHandleForTag < K > | null > ;
/ * *
* The method finds an element matching the specified selector in the ` ElementHandle ` ' s subtree . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns `null`.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ ( selector : string , options ? : { strict : boolean } ) : Promise < ElementHandle < SVGElement | HTMLElement > | null > ;
/ * *
* The method finds all elements matching the specified selector in the ` ElementHandle ` s subtree . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns empty array.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ $ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > [ ] > ;
/ * *
* The method finds all elements matching the specified selector in the ` ElementHandle ` s subtree . See
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns empty array.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
$ $ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > [ ] > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds an element matching the specified selector in the ` ElementHandle ` s subtree and passes it as a first
* argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the
* selector , the method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet' ) ;
* expect ( await tweetHandle . $eval ( '.like' , node = > node . innerText ) ) . toBe ( '100' ) ;
* expect ( await tweetHandle . $eval ( '.retweets' , node = > node . innerText ) ) . toBe ( '10' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds an element matching the specified selector in the ` ElementHandle ` s subtree and passes it as a first
* argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the
* selector , the method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet' ) ;
* expect ( await tweetHandle . $eval ( '.like' , node = > node . innerText ) ) . toBe ( '100' ) ;
* expect ( await tweetHandle . $eval ( '.retweets' , node = > node . innerText ) ) . toBe ( '10' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds an element matching the specified selector in the ` ElementHandle ` s subtree and passes it as a first
* argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the
* selector , the method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet' ) ;
* expect ( await tweetHandle . $eval ( '.like' , node = > node . innerText ) ) . toBe ( '100' ) ;
* expect ( await tweetHandle . $eval ( '.retweets' , node = > node . innerText ) ) . toBe ( '10' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds an element matching the specified selector in the ` ElementHandle ` s subtree and passes it as a first
* argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the
* selector , the method throws an error .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet' ) ;
* expect ( await tweetHandle . $eval ( '.like' , node = > node . innerText ) ) . toBe ( '100' ) ;
* expect ( await tweetHandle . $eval ( '.retweets' , node = > node . innerText ) ) . toBe ( '10' ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds all elements matching the specified selector in the ` ElementHandle ` ' s subtree and passes an array of
* matched elements as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` html
* < div class = "feed" >
* < div class = "tweet" > Hello ! < / div >
* < div class = "tweet" > Hi ! < / div >
* < / div >
* ` ` `
*
* ` ` ` js
* const feedHandle = await page . $ ( '.feed' ) ;
* expect ( await feedHandle . $ $eval ( '.tweet' , nodes = > nodes . map ( n = > n . innerText ) ) ) . toEqual ( [ 'Hello!' , 'Hi!' ] ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds all elements matching the specified selector in the ` ElementHandle ` ' s subtree and passes an array of
* matched elements as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` html
* < div class = "feed" >
* < div class = "tweet" > Hello ! < / div >
* < div class = "tweet" > Hi ! < / div >
* < / div >
* ` ` `
*
* ` ` ` js
* const feedHandle = await page . $ ( '.feed' ) ;
* expect ( await feedHandle . $ $eval ( '.tweet' , nodes = > nodes . map ( n = > n . innerText ) ) ) . toEqual ( [ 'Hello!' , 'Hi!' ] ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds all elements matching the specified selector in the ` ElementHandle ` ' s subtree and passes an array of
* matched elements as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` html
* < div class = "feed" >
* < div class = "tweet" > Hello ! < / div >
* < div class = "tweet" > Hi ! < / div >
* < / div >
* ` ` `
*
* ` ` ` js
* const feedHandle = await page . $ ( '.feed' ) ;
* expect ( await feedHandle . $ $eval ( '.tweet' , nodes = > nodes . map ( n = > n . innerText ) ) ) . toEqual ( [ 'Hello!' , 'Hi!' ] ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* The method finds all elements matching the specified selector in the ` ElementHandle ` ' s subtree and passes an array of
* matched elements as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
* would wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` html
* < div class = "feed" >
* < div class = "tweet" > Hello ! < / div >
* < div class = "tweet" > Hi ! < / div >
* < / div >
* ` ` `
*
* ` ` ` js
* const feedHandle = await page . $ ( '.feed' ) ;
* expect ( await feedHandle . $ $eval ( '.tweet' , nodes = > nodes . map ( n = > n . innerText ) ) ) . toEqual ( [ 'Hello!' , 'Hi!' ] ) ;
* ` ` `
*
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
$ $eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns element specified by selector when it satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* Wait for the ` selector ` relative to the element handle to satisfy ` state ` option ( either appear / disappear from dom , or
* become visible / hidden ) . If at the moment of calling the method ` selector ` already satisfies the condition , the method
* will return immediately . If the selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will
* throw .
*
* ` ` ` js
* await page . setContent ( ` <div><span></span></div> ` ) ;
* const div = await page . $ ( 'div' ) ;
* // Waiting for the 'span' selector relative to the div.
* const span = await div . waitForSelector ( 'span' , { state : 'attached' } ) ;
* ` ` `
*
* > NOTE : This method does not work across navigations , use
* [ page . waitForSelector ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-selector) instead.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options? : ElementHandleWaitForSelectorOptionsNotHidden ) : Promise < ElementHandleForTag < K > > ;
/ * *
* Returns element specified by selector when it satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* Wait for the ` selector ` relative to the element handle to satisfy ` state ` option ( either appear / disappear from dom , or
* become visible / hidden ) . If at the moment of calling the method ` selector ` already satisfies the condition , the method
* will return immediately . If the selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will
* throw .
*
* ` ` ` js
* await page . setContent ( ` <div><span></span></div> ` ) ;
* const div = await page . $ ( 'div' ) ;
* // Waiting for the 'span' selector relative to the div.
* const span = await div . waitForSelector ( 'span' , { state : 'attached' } ) ;
* ` ` `
*
* > NOTE : This method does not work across navigations , use
* [ page . waitForSelector ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-selector) instead.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector ( selector : string , options? : ElementHandleWaitForSelectorOptionsNotHidden ) : Promise < ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* Returns element specified by selector when it satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* Wait for the ` selector ` relative to the element handle to satisfy ` state ` option ( either appear / disappear from dom , or
* become visible / hidden ) . If at the moment of calling the method ` selector ` already satisfies the condition , the method
* will return immediately . If the selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will
* throw .
*
* ` ` ` js
* await page . setContent ( ` <div><span></span></div> ` ) ;
* const div = await page . $ ( 'div' ) ;
* // Waiting for the 'span' selector relative to the div.
* const span = await div . waitForSelector ( 'span' , { state : 'attached' } ) ;
* ` ` `
*
* > NOTE : This method does not work across navigations , use
* [ page . waitForSelector ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-selector) instead.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options : ElementHandleWaitForSelectorOptions ) : Promise < ElementHandleForTag < K > | null > ;
/ * *
* Returns element specified by selector when it satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
*
* Wait for the ` selector ` relative to the element handle to satisfy ` state ` option ( either appear / disappear from dom , or
* become visible / hidden ) . If at the moment of calling the method ` selector ` already satisfies the condition , the method
* will return immediately . If the selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will
* throw .
*
* ` ` ` js
* await page . setContent ( ` <div><span></span></div> ` ) ;
* const div = await page . $ ( 'div' ) ;
* // Waiting for the 'span' selector relative to the div.
* const span = await div . waitForSelector ( 'span' , { state : 'attached' } ) ;
* ` ` `
*
* > NOTE : This method does not work across navigations , use
* [ page . waitForSelector ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-selector) instead.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
waitForSelector ( selector : string , options : ElementHandleWaitForSelectorOptions ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* This method returns the bounding box of the element , or ` null ` if the element is not visible . The bounding box is
* calculated relative to the main frame viewport - which is usually the same as the browser window .
*
* Scrolling affects the returned bonding box , similarly to
* [ Element . getBoundingClientRect ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). That
* means ` x ` and / or ` y ` may be negative .
*
* Elements from child frames return the bounding box relative to the main frame , unlike the
* [ Element . getBoundingClientRect ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
*
* Assuming the page is static , it is safe to use bounding box coordinates to perform input . For example , the following
* snippet should click the center of the element .
*
* ` ` ` js
* const box = await elementHandle . boundingBox ( ) ;
* await page . mouse . click ( box . x + box . width / 2 , box . y + box . height / 2 ) ;
* ` ` `
*
* /
boundingBox ( ) : Promise < null | {
/ * *
* the x coordinate of the element in pixels .
* /
x : number ;
/ * *
* the y coordinate of the element in pixels .
* /
y : number ;
/ * *
* the width of the element in pixels .
* /
width : number ;
/ * *
* the height of the element in pixels .
* /
height : number ;
} > ;
/ * *
* This method checks the element by performing the following steps :
* 1 . Ensure that element is a checkbox or a radio input . If not , this method throws . If the element is already checked ,
* this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method throws .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
check ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* This method clicks the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element, or
* the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
click ( options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the content frame for element handles referencing iframe nodes , or ` null ` otherwise
* /
contentFrame ( ) : Promise < null | Frame > ;
/ * *
* This method double clicks the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will throw .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` elementHandle.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
* @param options
* /
dblclick ( options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the element ,
* ` click ` is dispatched . This is equivalent to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
*
* ` ` ` js
* await elementHandle . dispatchEvent ( 'click' ) ;
* ` ` `
*
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
*
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
*
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await page . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await elementHandle . dispatchEvent ( 'dragstart' , { dataTransfer } ) ;
* ` ` `
*
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* /
dispatchEvent ( type : string , eventInit? : EvaluationArgument ) : Promise < void > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an `input`
* event after filling . Note that you can pass an empty string to clear the input field .
*
* If the target element is not an ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element , this method throws an error .
* However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
* instead .
*
* To send fine - grained keyboard events , use
* [ elementHandle . type ( text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-type).
* @param value Value to set for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( value : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Calls [ focus ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element.
* /
focus ( ) : Promise < void > ;
/ * *
* Returns element attribute value .
* @param name Attribute name to get the value for .
* /
getAttribute ( name : string ) : Promise < null | string > ;
/ * *
* This method hovers over the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the element,
* or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
hover ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the ` element.innerHTML ` .
* /
innerHTML ( ) : Promise < string > ;
/ * *
* Returns the ` element.innerText ` .
* /
innerText ( ) : Promise < string > ;
/ * *
2022-04-25 14:55:41 +02:00
* Returns ` input.value ` for the selected ` <input> ` or ` <textarea> ` or ` <select> ` element .
*
* Throws for non - input elements . However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
2022-04-14 01:13:30 +02:00
* @param options
* /
inputValue ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
* /
isChecked ( ) : Promise < boolean > ;
/ * *
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* /
isDisabled ( ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
* /
isEditable ( ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* /
isEnabled ( ) : Promise < boolean > ;
/ * *
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* /
isHidden ( ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* /
isVisible ( ) : Promise < boolean > ;
/ * *
* Returns the frame containing the given element .
* /
ownerFrame ( ) : Promise < null | Frame > ;
/ * *
* Focuses the element , and then uses [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-down)
* and [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up).
*
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
*
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
*
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
*
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
*
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
*
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When specified with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2022-04-29 18:36:09 +02:00
* This method captures a screenshot of the page , clipped to the size and position of this particular element . If the
* element is covered by other elements , it will not be actually visible on the screenshot . If the element is a scrollable
* container , only the currently scrolled content will be visible on the screenshot .
2022-04-14 01:13:30 +02:00
*
* This method waits for the [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then scrolls element into view before taking a
* screenshot . If the element is detached from DOM , the method throws an error .
2022-04-29 18:36:09 +02:00
*
* Returns the buffer with the captured screenshot .
2022-04-14 01:13:30 +02:00
* @param options
* /
screenshot ( options ? : {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
* Defaults to ` "allow" ` that leaves animations untouched .
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* The file path to save the image to . The screenshot type will be inferred from file extension . If ` path ` is a relative
* path , then it is resolved relative to the current working directory . If no path is provided , the image won ' t be saved to
* the disk .
* /
path? : string ;
/ * *
* The quality of the image , between 0 - 100 . Not applicable to ` png ` images .
* /
quality? : number ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "device" ` .
2022-04-14 01:13:30 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* Specify screenshot type , defaults to ` png ` .
* /
type ? : "png" | "jpeg" ;
} ) : Promise < Buffer > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then tries to scroll element into view, unless it is
* completely visible as defined by
* [ IntersectionObserver ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
*
* Throws when ` elementHandle ` does not point to an element
* [ connected ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Node/isConnected) to a Document or a ShadowRoot.
* @param options
* /
scrollIntoViewIfNeeded ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, waits until all specified options are present in the
* ` <select> ` element and selects these options .
*
* If the target element is not a ` <select> ` element , this method throws an error . However , if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used instead.
*
* Returns the array of option values that have been successfully selected .
*
* Triggers a ` change ` and ` input ` event once all the provided options have been selected .
*
* ` ` ` js
* // single selection matching the value
* handle . selectOption ( 'blue' ) ;
*
* // single selection matching the label
* handle . selectOption ( { label : 'Blue' } ) ;
*
* // multiple selection
* handle . selectOption ( [ 'red' , 'green' , 'blue' ] ) ;
* ` ` `
*
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
* @param options
* /
selectOption ( values : null | string | ElementHandle | Array < string > | {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} > , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then focuses the element and selects all its text
* content .
2022-04-25 14:55:41 +02:00
*
* If the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
* control instead .
2022-04-14 01:13:30 +02:00
* @param options
* /
selectText ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks or unchecks an element by performing the following steps :
* 1 . Ensure that element is a checkbox or a radio input . If not , this method throws .
* 1 . If the element already has the right checked state , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked or unchecked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param checked Whether to check or uncheck the checkbox .
* @param options
* /
setChecked ( checked : boolean , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
2022-04-27 16:06:30 +02:00
* are resolved relative to the current working directory . For empty array , clears the selected files .
2022-04-25 14:55:41 +02:00
*
2022-04-27 16:06:30 +02:00
* This method expects [ ElementHandle ] to point to an
2022-04-25 14:55:41 +02:00
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
2022-04-14 01:13:30 +02:00
* @param files
* @param options
* /
setInputFiles ( files : string | Array < string > | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} | Array < {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} > , options ? : {
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method taps the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` elementHandle.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
* @param options
* /
tap ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the ` node.textContent ` .
* /
textContent ( ) : Promise < null | string > ;
/ * *
* Focuses the element , and then sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text .
*
* To press a special key , like ` Control ` or ` ArrowDown ` , use
* [ elementHandle . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#element-handle-press).
*
* ` ` ` js
* await elementHandle . type ( 'Hello' ) ; // Types instantly
* await elementHandle . type ( 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
*
* An example of typing into a text field and then submitting the form :
*
* ` ` ` js
* const elementHandle = await page . $ ( 'input' ) ;
* await elementHandle . type ( 'some text' ) ;
* await elementHandle . press ( 'Enter' ) ;
* ` ` `
*
* @param text A text to type into a focused element .
* @param options
* /
type ( text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks the element by performing the following steps :
* 1 . Ensure that element is a checkbox or a radio input . If not , this method throws . If the element is already
* unchecked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method throws .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
uncheck ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns when the element satisfies the ` state ` .
*
* Depending on the ` state ` parameter , this method waits for one of the [ actionability ] ( https : //playwright.dev/docs/actionability) checks to
* pass . This method throws when the element is detached while waiting , unless waiting for the ` "hidden" ` state .
* - ` "visible" ` Wait until the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* - ` "hidden" ` Wait until the element is [ not visible ] ( https : //playwright.dev/docs/actionability#visible) or
* [ not attached ] ( https : //playwright.dev/docs/actionability#attached). Note that waiting for hidden does not throw when the element detaches.
* - ` "stable" ` Wait until the element is both [ visible ] ( https : //playwright.dev/docs/actionability#visible) and
* [ stable ] ( https : //playwright.dev/docs/actionability#stable).
* - ` "enabled" ` Wait until the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* - ` "disabled" ` Wait until the element is [ not enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* - ` "editable" ` Wait until the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
*
* If the element does not satisfy the condition for the ` timeout ` milliseconds , this method will throw .
* @param state A state to wait for , see below for more details .
* @param options
* /
waitForElementState ( state : "visible" | "hidden" | "stable" | "enabled" | "disabled" | "editable" , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ; }
/ * *
* Locators are the central piece of Playwright ' s auto - waiting and retry - ability . In a nutshell , locators represent a way
* to find element ( s ) on the page at any moment . Locator can be created with the
* [ page . locator ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-locator) method.
*
* [ Learn more about locators ] ( https : //playwright.dev/docs/locators).
* /
export interface Locator {
/ * *
* Returns the return value of ` pageFunction ` .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then ` handle.evaluate ` would wait for the promise to resolve and return its
* value .
*
* Examples :
*
* ` ` ` js
* const tweets = page . locator ( '.tweet .retweets' ) ;
* expect ( await tweets . evaluate ( node = > node . innerText ) ) . toBe ( '10 retweets' ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
evaluate < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg , options ? : {
timeout? : number ;
} ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* If ` pageFunction ` returns a [ Promise ] , then ` handle.evaluate ` would wait for the promise to resolve and return its
* value .
*
* Examples :
*
* ` ` ` js
* const tweets = page . locator ( '.tweet .retweets' ) ;
* expect ( await tweets . evaluate ( node = > node . innerText ) ) . toBe ( '10 retweets' ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
evaluate < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( pageFunction : PageFunctionOn < E , void , R > , options ? : {
timeout? : number ;
} ) : Promise < R > ;
/ * *
* The method finds all elements matching the specified locator and passes an array of matched elements as a first argument
* to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all) would
* wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const elements = page . locator ( 'div' ) ;
* const divCounts = await elements . evaluateAll ( ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateAll < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* The method finds all elements matching the specified locator and passes an array of matched elements as a first argument
* to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
*
* If ` pageFunction ` returns a [ Promise ] , then
* [ locator . evaluateAll ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-all) would
* wait for the promise to resolve and return its value .
*
* Examples :
*
* ` ` ` js
* const elements = page . locator ( 'div' ) ;
* const divCounts = await elements . evaluateAll ( ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
*
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateAll < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( pageFunction : PageFunctionOn < E [ ] , void , R > ) : Promise < R > ;
/ * *
* Resolves given locator to the first matching DOM element . If no elements matching the query are visible , waits for them
* up to a given timeout . If multiple elements match the selector , throws .
* @param options
* /
elementHandle ( options ? : {
timeout? : number ;
} ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* Returns an array of ` node.innerText ` values for all matching nodes .
* /
allInnerTexts ( ) : Promise < Array < string > > ;
/ * *
* Returns an array of ` node.textContent ` values for all matching nodes .
* /
allTextContents ( ) : Promise < Array < string > > ;
/ * *
* This method returns the bounding box of the element , or ` null ` if the element is not visible . The bounding box is
* calculated relative to the main frame viewport - which is usually the same as the browser window .
*
* Scrolling affects the returned bonding box , similarly to
* [ Element . getBoundingClientRect ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). That
* means ` x ` and / or ` y ` may be negative .
*
* Elements from child frames return the bounding box relative to the main frame , unlike the
* [ Element . getBoundingClientRect ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
*
* Assuming the page is static , it is safe to use bounding box coordinates to perform input . For example , the following
* snippet should click the center of the element .
*
* ` ` ` js
* const box = await element . boundingBox ( ) ;
* await page . mouse . click ( box . x + box . width / 2 , box . y + box . height / 2 ) ;
* ` ` `
*
* @param options
* /
boundingBox ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | {
/ * *
* the x coordinate of the element in pixels .
* /
x : number ;
/ * *
* the y coordinate of the element in pixels .
* /
y : number ;
/ * *
* the width of the element in pixels .
* /
width : number ;
/ * *
* the height of the element in pixels .
* /
height : number ;
} > ;
/ * *
* This method checks the element by performing the following steps :
* 1 . Ensure that element is a checkbox or a radio input . If not , this method throws . If the element is already checked ,
* this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method throws .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
check ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* This method clicks the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element, or
* the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
click ( options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the number of elements matching given selector .
* /
count ( ) : Promise < number > ;
/ * *
* This method double clicks the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will throw .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` element.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
* @param options
* /
dblclick ( options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the element ,
* ` click ` is dispatched . This is equivalent to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
*
* ` ` ` js
* await element . dispatchEvent ( 'click' ) ;
* ` ` `
*
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
*
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
*
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await page . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await element . dispatchEvent ( 'dragstart' , { dataTransfer } ) ;
* ` ` `
*
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* @param options
* /
dispatchEvent ( type : string , eventInit? : EvaluationArgument , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* @param target Locator of the element to drag to .
* @param options
* /
dragTo ( target : Locator , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Clicks on the source element at this point relative to the top - left corner of the element ' s padding box . If not
* specified , some visible point of the element is used .
* /
sourcePosition ? : {
x : number ;
y : number ;
} ;
/ * *
* Drops on the target element at this point relative to the top - left corner of the element ' s padding box . If not
* specified , some visible point of the element is used .
* /
targetPosition ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Resolves given locator to all matching DOM elements .
* /
elementHandles ( ) : Promise < Array < ElementHandle > > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* This method passes this handle as the first argument to ` pageFunction ` .
*
* The only difference between
* [ locator . evaluate ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate) and
* [ locator . evaluateHandle ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-handle)
* is that
* [ locator . evaluateHandle ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-handle)
* returns [ JSHandle ] .
*
* If the function passed to the
* [ locator . evaluateHandle ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-handle)
* returns a [ Promise ] , then
* [ locator . evaluateHandle ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-evaluate-handle)
* would wait for the promise to resolve and return its value .
*
* See [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#page-evaluate-handle) for more
* details .
* @param pageFunction Function to be evaluated in the page context .
* @param arg Optional argument to pass to ` pageFunction ` .
* @param options
* /
evaluateHandle ( pageFunction : Function | string , arg? : EvaluationArgument , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < JSHandle > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an `input`
* event after filling . Note that you can pass an empty string to clear the input field .
*
* If the target element is not an ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element , this method throws an error .
* However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
* instead .
*
* To send fine - grained keyboard events , use
* [ locator . type ( text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-type).
* @param value Value to set for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( value : string , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
2022-05-08 22:59:40 +02:00
/ * *
* This method narrows existing locator according to the options , for example filters by text .
* @param options
* /
filter ( options ? : {
/ * *
* Matches elements containing an element that matches an inner locator . Inner locator is queried against the outer one .
* For example , ` article ` that has ` text=Playwright ` matches ` <article><div>Playwright</div></article> ` .
*
* Note that outer and inner locators must belong to the same frame . Inner locator must not contain [ FrameLocator ] s .
* /
has? : Locator ;
/ * *
* Matches elements containing specified text somewhere inside , possibly in a child or a descendant element . When passed a
* [ string ] , matching is case - insensitive and searches for a substring . For example , ` "Playwright" ` matches
* ` <article><div>Playwright</div></article> ` .
* /
hasText? : string | RegExp ;
} ) : Locator ;
2022-04-14 01:13:30 +02:00
/ * *
* Returns locator to the first matching element .
* /
first ( ) : Locator ;
/ * *
* Calls [ focus ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element.
* @param options
* /
focus ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* When working with iframes , you can create a frame locator that will enter the iframe and allow selecting elements in
* that iframe :
*
* ` ` ` js
* const locator = page . frameLocator ( 'iframe' ) . locator ( 'text=Submit' ) ;
* await locator . click ( ) ;
* ` ` `
*
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
frameLocator ( selector : string ) : FrameLocator ;
/ * *
* Returns element attribute value .
* @param name Attribute name to get the value for .
* @param options
* /
getAttribute ( name : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Highlight the corresponding element ( s ) on the screen . Useful for debugging , don ' t commit the code that uses
* [ locator . highlight ( ) ] ( https : //playwright.dev/docs/api/class-locator#locator-highlight).
* /
highlight ( ) : Promise < void > ;
/ * *
* This method hovers over the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the element,
* or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
hover ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the ` element.innerHTML ` .
* @param options
* /
innerHTML ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns the ` element.innerText ` .
* @param options
* /
innerText ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
2022-04-25 14:55:41 +02:00
* Returns ` input.value ` for the selected ` <input> ` or ` <textarea> ` or ` <select> ` element .
*
* Throws for non - input elements . However , if the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
2022-04-14 01:13:30 +02:00
* @param options
* /
inputValue ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
* @param options
* /
isChecked ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @param options
* /
isDisabled ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
* @param options
* /
isEditable ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @param options
* /
isEnabled ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* @param options
* /
isHidden ( options ? : {
/ * *
* * * DEPRECATED * * This option is ignored .
* [ locator . isHidden ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-is-hidden) does not wait for the
* element to become hidden and returns immediately .
* @deprecated
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* @param options
* /
isVisible ( options ? : {
/ * *
* * * DEPRECATED * * This option is ignored .
* [ locator . isVisible ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-is-visible) does not wait for the
* element to become visible and returns immediately .
* @deprecated
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
* Returns locator to the last matching element .
* /
last ( ) : Locator ;
/ * *
2022-05-08 22:59:40 +02:00
* The method finds an element matching the specified selector in the ` Locator ` ' s subtree . It also accepts filter options ,
* similar to [ locator . filter ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-filter) method.
2022-04-14 01:13:30 +02:00
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
locator ( selector : string , options ? : {
/ * *
* Matches elements containing an element that matches an inner locator . Inner locator is queried against the outer one .
* For example , ` article ` that has ` text=Playwright ` matches ` <article><div>Playwright</div></article> ` .
*
* Note that outer and inner locators must belong to the same frame . Inner locator must not contain [ FrameLocator ] s .
* /
has? : Locator ;
/ * *
* Matches elements containing specified text somewhere inside , possibly in a child or a descendant element . When passed a
* [ string ] , matching is case - insensitive and searches for a substring . For example , ` "Playwright" ` matches
* ` <article><div>Playwright</div></article> ` .
* /
hasText? : string | RegExp ;
} ) : Locator ;
/ * *
* Returns locator to the n - th matching element . It ' s zero based , ` nth(0) ` selects the first element .
* @param index
* /
nth ( index : number ) : Locator ;
/ * *
* A page this locator belongs to .
* /
page ( ) : Page ;
/ * *
* Focuses the element , and then uses [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-down)
* and [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up).
*
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
*
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
*
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
*
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
*
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
*
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When specified with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2022-04-29 18:36:09 +02:00
* This method captures a screenshot of the page , clipped to the size and position of a particular element matching the
* locator . If the element is covered by other elements , it will not be actually visible on the screenshot . If the element
* is a scrollable container , only the currently scrolled content will be visible on the screenshot .
2022-04-14 01:13:30 +02:00
*
* This method waits for the [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then scrolls element into view before taking a
* screenshot . If the element is detached from DOM , the method throws an error .
2022-04-29 18:36:09 +02:00
*
* Returns the buffer with the captured screenshot .
2022-04-14 01:13:30 +02:00
* @param options
* /
screenshot ( options? : LocatorScreenshotOptions ) : Promise < Buffer > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then tries to scroll element into view, unless it is
* completely visible as defined by
* [ IntersectionObserver ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
* @param options
* /
scrollIntoViewIfNeeded ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, waits until all specified options are present in the
* ` <select> ` element and selects these options .
*
* If the target element is not a ` <select> ` element , this method throws an error . However , if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used instead.
*
* Returns the array of option values that have been successfully selected .
*
* Triggers a ` change ` and ` input ` event once all the provided options have been selected .
*
* ` ` ` js
* // single selection matching the value
* element . selectOption ( 'blue' ) ;
*
* // single selection matching the label
* element . selectOption ( { label : 'Blue' } ) ;
*
* // multiple selection
* element . selectOption ( [ 'red' , 'green' , 'blue' ] ) ;
* ` ` `
*
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
* @param options
* /
selectOption ( values : null | string | ElementHandle | Array < string > | {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
* Matches by ` option.value ` . Optional .
* /
value? : string ;
/ * *
* Matches by ` option.label ` . Optional .
* /
label? : string ;
/ * *
* Matches by the index . Optional .
* /
index? : number ;
} > , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then focuses the element and selects all its text
* content .
2022-04-25 14:55:41 +02:00
*
* If the element is inside the ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
* control instead .
2022-04-14 01:13:30 +02:00
* @param options
* /
selectText ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks or unchecks an element by performing the following steps :
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method throws .
* 1 . If the element already has the right checked state , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked or unchecked . If not , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param checked Whether to check or uncheck the checkbox .
* @param options
* /
setChecked ( checked : boolean , options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
2022-04-27 16:06:30 +02:00
* are resolved relative to the current working directory . For empty array , clears the selected files .
2022-04-25 14:55:41 +02:00
*
2022-04-27 16:06:30 +02:00
* This method expects [ Locator ] to point to an
2022-04-25 14:55:41 +02:00
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
* ` <label> ` element that has an associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
2022-04-14 01:13:30 +02:00
* @param files
* @param options
* /
setInputFiles ( files : string | Array < string > | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} | Array < {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} > , options ? : {
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method taps the element by performing the following steps :
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
* element , or the specified ` position ` .
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
*
* > NOTE : ` element.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
* @param options
* /
tap ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the ` node.textContent ` .
* @param options
* /
textContent ( options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Focuses the element , and then sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text .
*
* To press a special key , like ` Control ` or ` ArrowDown ` , use
* [ locator . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-press).
*
* ` ` ` js
* await element . type ( 'Hello' ) ; // Types instantly
* await element . type ( 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
*
* An example of typing into a text field and then submitting the form :
*
* ` ` ` js
* const element = page . locator ( 'input' ) ;
* await element . type ( 'some text' ) ;
* await element . press ( 'Enter' ) ;
* ` ` `
*
* @param text A text to type into a focused element .
* @param options
* /
type ( text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks the element by performing the following steps :
* 1 . Ensure that element is a checkbox or a radio input . If not , this method throws . If the element is already
* unchecked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse) to click in the center of the element.
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method throws .
*
* If the element is detached from the DOM at any moment during the action , this method throws .
*
* When all steps combined have not finished during the specified ` timeout ` , this method throws a [ TimeoutError ] . Passing
* zero timeout disables this .
* @param options
* /
uncheck ( options ? : {
/ * *
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) checks. Defaults to `false`.
* /
force? : boolean ;
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* When set , this method only performs the [ actionability ] ( https : //playwright.dev/docs/actionability) checks and skips the action. Defaults to
* ` false ` . Useful to wait until the element is ready for the action without performing it .
* /
trial? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns when element specified by locator satisfies the ` state ` option .
*
* If target element already satisfies the condition , the method returns immediately . Otherwise , waits for up to ` timeout `
* milliseconds until the condition is met .
*
* ` ` ` js
* const orderSent = page . locator ( '#order-sent' ) ;
* await orderSent . waitFor ( ) ;
* ` ` `
*
* @param options
* /
waitFor ( options ? : {
/ * *
* Defaults to ` 'visible' ` . Can be either :
* - ` 'attached' ` - wait for element to be present in DOM .
* - ` 'detached' ` - wait for element to not be present in DOM .
* - ` 'visible' ` - wait for element to have non - empty bounding box and no ` visibility:hidden ` . Note that element without
* any content or with ` display:none ` has an empty bounding box and is not considered visible .
* - ` 'hidden' ` - wait for element to be either detached from DOM , or have an empty bounding box or ` visibility:hidden ` .
* This is opposite to the ` 'visible' ` option .
* /
state ? : "attached" | "detached" | "visible" | "hidden" ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ; }
/ * *
* BrowserType provides methods to launch a specific browser instance or connect to an existing one . The following is a
* typical example of using Playwright to drive automation :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* // other actions...
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* /
export interface BrowserType < Unused = {} > {
/ * *
* This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol .
*
* The default browser context is accessible via
* [ browser . contexts ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-contexts).
*
* > NOTE : Connecting over the Chrome DevTools Protocol is only supported for Chromium - based browsers .
* @param endpointURL A CDP websocket endpoint or http url to connect to . For example ` http://localhost:9222/ ` or ` ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4 ` .
* @param options
* /
connectOverCDP ( endpointURL : string , options? : ConnectOverCDPOptions ) : Promise < Browser > ;
/ * *
* Option ` wsEndpoint ` is deprecated . Instead use ` endpointURL ` .
* @deprecated
* /
/ * *
* This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol .
*
* The default browser context is accessible via
* [ browser . contexts ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-contexts).
*
* > NOTE : Connecting over the Chrome DevTools Protocol is only supported for Chromium - based browsers .
* @param endpointURL A CDP websocket endpoint or http url to connect to . For example ` http://localhost:9222/ ` or ` ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4 ` .
* @param options
* /
connectOverCDP ( options : ConnectOverCDPOptions & { wsEndpoint? : string } ) : Promise < Browser > ;
/ * *
* This method attaches Playwright to an existing browser instance .
* @param wsEndpoint A browser websocket endpoint to connect to .
* @param options
* /
connect ( wsEndpoint : string , options? : ConnectOptions ) : Promise < Browser > ;
/ * *
* wsEndpoint in options is deprecated . Instead use ` wsEndpoint ` .
* @param wsEndpoint A browser websocket endpoint to connect to .
* @param options
* @deprecated
* /
/ * *
* This method attaches Playwright to an existing browser instance .
* @param wsEndpoint A browser websocket endpoint to connect to .
* @param options
* /
connect ( options : ConnectOptions & { wsEndpoint? : string } ) : Promise < Browser > ;
/ * *
* A path where Playwright expects to find a bundled browser executable .
* /
executablePath ( ) : string ;
/ * *
* Returns the browser instance .
*
* You can use ` ignoreDefaultArgs ` to filter out ` --mute-audio ` from default arguments :
*
* ` ` ` js
* const browser = await chromium . launch ( { // Or 'firefox' or 'webkit'.
* ignoreDefaultArgs : [ '--mute-audio' ]
* } ) ;
* ` ` `
*
* > * * Chromium - only * * Playwright can also be used to control the Google Chrome or Microsoft Edge browsers , but it works
* best with the version of Chromium it is bundled with . There is no guarantee it will work with any other version . Use
* ` executablePath ` option with extreme caution .
* >
* > If Google Chrome ( rather than Chromium ) is preferred , a
* [ Chrome Canary ] ( https : //www.google.com/chrome/browser/canary.html) or
* [ Dev Channel ] ( https : //www.chromium.org/getting-involved/dev-channel) build is suggested.
* >
* > Stock browsers like Google Chrome and Microsoft Edge are suitable for tests that require proprietary media codecs for
* video playback . See
* [ this article ] ( https : //www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for other
* differences between Chromium and Chrome .
* [ This article ] ( https : //chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md)
* describes some differences for Linux users .
* @param options
* /
launch ( options? : LaunchOptions ) : Promise < Browser > ;
/ * *
* Returns the persistent browser context instance .
*
* Launches browser that uses persistent storage located at ` userDataDir ` and returns the only context . Closing this
* context will automatically close the browser .
* @param userDataDir Path to a User Data Directory , which stores browser session data like cookies and local storage . More details for [ Chromium ] ( https : //chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options#User_Profile). Note that Chromium's user
* data directory is the * * parent * * directory of the "Profile Path" seen at ` chrome://version ` . Pass an empty string to use
* a temporary directory instead .
* @param options
* /
launchPersistentContext ( userDataDir : string , options ? : {
/ * *
* Whether to automatically download all the attachments . Defaults to ` true ` where all the downloads are accepted .
* /
acceptDownloads? : boolean ;
/ * *
* Additional arguments to pass to the browser instance . The list of Chromium flags can be found
* [ here ] ( http : //peter.sh/experiments/chromium-command-line-switches/).
* /
args? : Array < string > ;
/ * *
* When using [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto),
* [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route),
* [ page . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-url),
* [ page . waitForRequest ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-request), or
* [ page . waitForResponse ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-response) it
* takes the base URL in consideration by using the [ ` URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL)
* constructor for building the corresponding URL . Examples :
* - baseURL : ` http://localhost:3000 ` and navigating to ` /bar.html ` results in ` http://localhost:3000/bar.html `
* - baseURL : ` http://localhost:3000/foo/ ` and navigating to ` ./bar.html ` results in ` http://localhost:3000/foo/bar.html `
* - baseURL : ` http://localhost:3000/foo ` ( without trailing slash ) and navigating to ` ./bar.html ` results in
* ` http://localhost:3000/bar.html `
* /
baseURL? : string ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
* Browser distribution channel . Supported values are "chrome" , "chrome-beta" , "chrome-dev" , "chrome-canary" , "msedge" ,
* "msedge-beta" , "msedge-dev" , "msedge-canary" . Read more about using
* [ Google Chrome and Microsoft Edge ] ( https : //playwright.dev/docs/browsers#google-chrome--microsoft-edge).
* /
channel? : string ;
/ * *
* Enable Chromium sandboxing . Defaults to ` false ` .
* /
chromiumSandbox? : boolean ;
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'light' ` .
* /
colorScheme ? : "light" | "dark" | "no-preference" ;
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
* * * Chromium - only * * Whether to auto - open a Developer Tools panel for each tab . If this option is ` true ` , the ` headless `
* option will be set ` false ` .
* /
devtools? : boolean ;
/ * *
* If specified , accepted downloads are downloaded into this directory . Otherwise , temporary directory is created and is
* deleted when browser is closed . In either case , the downloads are deleted when the browser context they were created in
* is closed .
* /
downloadsPath? : string ;
/ * *
* Specify environment variables that will be visible to the browser . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Path to a browser executable to run instead of the bundled one . If ` executablePath ` is a relative path , then it is
* resolved relative to the current working directory . Note that Playwright only works with the bundled Chromium , Firefox
* or WebKit , use at your own risk .
* /
executablePath? : string ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
/ * *
* Emulates ` 'forced-colors' ` media feature , supported values are ` 'active' ` , ` 'none' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'none' ` .
*
* > NOTE : It ' s not supported in WebKit , see [ here ] ( https : //bugs.webkit.org/show_bug.cgi?id=225281) in their issue tracker.
* /
forcedColors ? : "active" | "none" ;
geolocation ? : {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ;
/ * *
* Close the browser process on SIGHUP . Defaults to ` true ` .
* /
handleSIGHUP? : boolean ;
/ * *
* Close the browser process on Ctrl - C . Defaults to ` true ` .
* /
handleSIGINT? : boolean ;
/ * *
* Close the browser process on SIGTERM . Defaults to ` true ` .
* /
handleSIGTERM? : boolean ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
* /
headless? : boolean ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
* If ` true ` , Playwright does not pass its own configurations args and only uses the ones from ` args ` . If an array is
* given , then filters out the given default arguments . Dangerous option ; use with care . Defaults to ` false ` .
* /
ignoreDefaultArgs? : boolean | Array < string > ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
* A list of permissions to grant to all pages in this context . See
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
* for more details .
* /
permissions? : Array < string > ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
* /
server : string ;
/ * *
* Optional comma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for the HAR to be
* saved .
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for
* videos to be saved .
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . Actual picture of each page
* will be scaled down if necessary to fit the specified size .
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
* Emulates ` 'prefers-reduced-motion' ` media feature , supported values are ` 'reduce' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'no-preference' ` .
* /
reducedMotion ? : "reduce" | "no-preference" ;
/ * *
* Emulates consistent window screen size available inside web page via ` window.screen ` . Is only used when the ` viewport `
* is set .
* /
screen ? : {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
/ * *
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* /
slowMo? : number ;
/ * *
* It specified , enables strict selectors mode for this context . In the strict selectors mode all operations on selectors
* that imply single target DOM element will throw when more than one element matches the selector . See [ Locator ] to learn
* more about the strict mode .
* /
strictSelectors? : boolean ;
/ * *
* Maximum time in milliseconds to wait for the browser instance to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
* /
timeout? : number ;
/ * *
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
* /
timezoneId? : string ;
/ * *
* If specified , traces are saved into this directory .
* /
tracesDir? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videosPath? : string ;
/ * *
* Emulates consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
} ) : Promise < BrowserContext > ;
/ * *
* Returns the browser app instance .
*
* Launches browser server that client can connect to . An example of launching a browser executable and connecting to it
* later :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'webkit' or 'firefox'.
*
* ( async ( ) = > {
* const browserServer = await chromium . launchServer ( ) ;
* const wsEndpoint = browserServer . wsEndpoint ( ) ;
* // Use web socket endpoint later to establish a connection.
* const browser = await chromium . connect ( wsEndpoint ) ;
* // Close browser instance.
* await browserServer . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param options
* /
launchServer ( options ? : {
/ * *
* Additional arguments to pass to the browser instance . The list of Chromium flags can be found
* [ here ] ( http : //peter.sh/experiments/chromium-command-line-switches/).
* /
args? : Array < string > ;
/ * *
* Browser distribution channel . Supported values are "chrome" , "chrome-beta" , "chrome-dev" , "chrome-canary" , "msedge" ,
* "msedge-beta" , "msedge-dev" , "msedge-canary" . Read more about using
* [ Google Chrome and Microsoft Edge ] ( https : //playwright.dev/docs/browsers#google-chrome--microsoft-edge).
* /
channel? : string ;
/ * *
* Enable Chromium sandboxing . Defaults to ` false ` .
* /
chromiumSandbox? : boolean ;
/ * *
* * * Chromium - only * * Whether to auto - open a Developer Tools panel for each tab . If this option is ` true ` , the ` headless `
* option will be set ` false ` .
* /
devtools? : boolean ;
/ * *
* If specified , accepted downloads are downloaded into this directory . Otherwise , temporary directory is created and is
* deleted when browser is closed . In either case , the downloads are deleted when the browser context they were created in
* is closed .
* /
downloadsPath? : string ;
/ * *
* Specify environment variables that will be visible to the browser . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Path to a browser executable to run instead of the bundled one . If ` executablePath ` is a relative path , then it is
* resolved relative to the current working directory . Note that Playwright only works with the bundled Chromium , Firefox
* or WebKit , use at your own risk .
* /
executablePath? : string ;
/ * *
* Firefox user preferences . Learn more about the Firefox user preferences at
* [ ` about:config ` ] ( https : //support.mozilla.org/en-US/kb/about-config-editor-firefox).
* /
firefoxUserPrefs ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Close the browser process on SIGHUP . Defaults to ` true ` .
* /
handleSIGHUP? : boolean ;
/ * *
* Close the browser process on Ctrl - C . Defaults to ` true ` .
* /
handleSIGINT? : boolean ;
/ * *
* Close the browser process on SIGTERM . Defaults to ` true ` .
* /
handleSIGTERM? : boolean ;
/ * *
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
* /
headless? : boolean ;
/ * *
* If ` true ` , Playwright does not pass its own configurations args and only uses the ones from ` args ` . If an array is
* given , then filters out the given default arguments . Dangerous option ; use with care . Defaults to ` false ` .
* /
ignoreDefaultArgs? : boolean | Array < string > ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Port to use for the web socket . Defaults to 0 that picks any available port .
* /
port? : number ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
* /
server : string ;
/ * *
* Optional comma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Maximum time in milliseconds to wait for the browser instance to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
* /
timeout? : number ;
/ * *
* If specified , traces are saved into this directory .
* /
tracesDir? : string ;
/ * *
* Path at which to serve the Browser Server . For security , this defaults to an unguessable string .
*
* > NOTE : Any process or web page ( including those running in Playwright ) with knowledge of the ` wsPath ` can take control
* of the OS user . For this reason , you should use an unguessable token when using this option .
* /
wsPath? : string ;
} ) : Promise < BrowserServer > ;
/ * *
* Returns browser name . For example : ` 'chromium' ` , ` 'webkit' ` or ` 'firefox' ` .
* /
name ( ) : string ; }
/ * *
* - extends : [ EventEmitter ]
*
* The ` CDPSession ` instances are used to talk raw Chrome Devtools Protocol :
* - protocol methods can be called with ` session.send ` method .
* - protocol events can be subscribed to with ` session.on ` method .
*
* Useful links :
* - Documentation on DevTools Protocol can be found here :
* [ DevTools Protocol Viewer ] ( https : //chromedevtools.github.io/devtools-protocol/).
* - Getting Started with DevTools Protocol :
* https : //github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
*
* ` ` ` js
* const client = await page . context ( ) . newCDPSession ( page ) ;
* await client . send ( 'Animation.enable' ) ;
* client . on ( 'Animation.animationCreated' , ( ) = > console . log ( 'Animation created!' ) ) ;
* const response = await client . send ( 'Animation.getPlaybackRate' ) ;
* console . log ( 'playback rate is ' + response . playbackRate ) ;
* await client . send ( 'Animation.setPlaybackRate' , {
* playbackRate : response.playbackRate / 2
* } ) ;
* ` ` `
*
* /
export interface CDPSession {
on : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
addListener : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
off : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
removeListener : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
once : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
/ * *
* @param method Protocol method name .
* @param params Optional method parameters .
* /
send < T extends keyof Protocol.CommandParameters > (
method : T ,
params? : Protocol.CommandParameters [ T ]
) : Promise < Protocol.CommandReturnValues [ T ] > ;
/ * *
* Detaches the CDPSession from the target . Once detached , the CDPSession object won 't emit any events and can' t be used to
* send messages .
* /
detach ( ) : Promise < void > ; }
type DeviceDescriptor = {
viewport : ViewportSize ;
userAgent : string ;
deviceScaleFactor : number ;
isMobile : boolean ;
hasTouch : boolean ;
defaultBrowserType : 'chromium' | 'firefox' | 'webkit' ;
} ;
export namespace errors {
/ * *
* - extends : [ Error ]
*
* TimeoutError is emitted whenever certain operations are terminated due to timeout , e . g .
* [ locator . waitFor ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-locator#locator-wait-for) or
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-launch).
*
* ` ` ` js
* const playwright = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* const browser = await playwright . chromium . launch ( ) ;
* const context = await browser . newContext ( ) ;
* const page = await context . newPage ( ) ;
* try {
* await page . click ( "text=Foo" , {
* timeout : 100 ,
* } )
* } catch ( error ) {
* if ( error instanceof playwright . errors . TimeoutError )
* console . log ( "Timeout!" )
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* /
class TimeoutError extends Error { }
}
/ * *
* The Accessibility class provides methods for inspecting Chromium ' s accessibility tree . The accessibility tree is used by
* assistive technology such as [ screen readers ] ( https : //en.wikipedia.org/wiki/Screen_reader) or
* [ switches ] ( https : //en.wikipedia.org/wiki/Switch_access).
*
* Accessibility is a very platform - specific thing . On different platforms , there are different screen readers that might
* have wildly different output .
*
* Rendering engines of Chromium , Firefox and WebKit have a concept of "accessibility tree" , which is then translated into
* different platform - specific APIs . Accessibility namespace gives access to this Accessibility Tree .
*
* Most of the accessibility tree gets filtered out when converting from internal browser AX Tree to Platform - specific
* AX - Tree or by assistive technologies themselves . By default , Playwright tries to approximate this filtering , exposing
* only the "interesting" nodes of the tree .
* /
export interface Accessibility {
/ * *
* Captures the current state of the accessibility tree . The returned object represents the root accessible node of the
* page .
*
* > NOTE : The Chromium accessibility tree contains nodes that go unused on most platforms and by most screen readers .
* Playwright will discard them as well for an easier to process tree , unless ` interestingOnly ` is set to ` false ` .
*
* An example of dumping the entire accessibility tree :
*
* ` ` ` js
* const snapshot = await page . accessibility . snapshot ( ) ;
* console . log ( snapshot ) ;
* ` ` `
*
* An example of logging the focused node ' s name :
*
* ` ` ` js
* const snapshot = await page . accessibility . snapshot ( ) ;
* const node = findFocusedNode ( snapshot ) ;
* console . log ( node && node . name ) ;
*
* function findFocusedNode ( node ) {
* if ( node . focused )
* return node ;
* for ( const child of node . children || [ ] ) {
* const foundNode = findFocusedNode ( child ) ;
* if ( foundNode )
* return foundNode ;
* }
* return null ;
* }
* ` ` `
*
* @param options
* /
snapshot ( options? : AccessibilitySnapshotOptions ) : Promise < null | AccessibilityNode > ;
}
type AccessibilityNode = {
role : string ;
name : string ;
value? : string | number ;
description? : string ;
keyshortcuts? : string ;
roledescription? : string ;
valuetext? : string ;
disabled? : boolean ;
expanded? : boolean ;
focused? : boolean ;
modal? : boolean ;
multiline? : boolean ;
multiselectable? : boolean ;
readonly ? : boolean ;
required? : boolean ;
selected? : boolean ;
checked? : boolean | "mixed" ;
pressed? : boolean | "mixed" ;
level? : number ;
valuemin? : number ;
valuemax? : number ;
autocomplete? : string ;
haspopup? : string ;
invalid? : string ;
orientation? : string ;
children? : AccessibilityNode [ ] ;
}
export const devices : Devices & DeviceDescriptor [ ] ;
//@ts-ignore this will be any if electron is not installed
type ElectronType = typeof import ( 'electron' ) ;
/ * *
* Electron application representation . You can use
* [ electron . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-electron#electron-launch) to obtain the application
* instance . This instance you can control main electron process as well as work with Electron windows :
*
* ` ` ` js
* const { _electron : electron } = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* // Launch Electron app.
* const electronApp = await electron . launch ( { args : [ 'main.js' ] } ) ;
*
* // Evaluation expression in the Electron context.
* const appPath = await electronApp . evaluate ( async ( { app } ) = > {
* // This runs in the main Electron process, parameter here is always
* // the result of the require('electron') in the main app script.
* return app . getAppPath ( ) ;
* } ) ;
* console . log ( appPath ) ;
*
* // Get the first window that the app opens, wait if necessary.
* const window = await electronApp . firstWindow ( ) ;
* // Print the title.
* console . log ( await window . title ( ) ) ;
* // Capture a screenshot.
* await window . screenshot ( { path : 'intro.png' } ) ;
* // Direct Electron console to Node terminal.
* window . on ( 'console' , console . log ) ;
* // Click button.
* await window . click ( 'text=Click me' ) ;
* // Exit app.
* await electronApp . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* /
export interface ElectronApplication {
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* returns a [ Promise ] , then
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* would wait for the promise to resolve and return its value .
*
* If the function passed to the
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* returns a non - [ Serializable ] value , then
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* returns ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , Arg > ( pageFunction : PageFunctionOn < ElectronType , Arg , R > , arg : Arg ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* returns a [ Promise ] , then
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* would wait for the promise to resolve and return its value .
*
* If the function passed to the
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* returns a non - [ Serializable ] value , then
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* returns ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R > ( pageFunction : PageFunctionOn < ElectronType , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* and
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* is that
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* returns [ JSHandle ] .
*
* If the function passed to the
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* returns a [ Promise ] , then
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* would wait for the promise to resolve and return its value .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunctionOn < ElectronType , Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate)
* and
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* is that
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* returns [ JSHandle ] .
*
* If the function passed to the
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* returns a [ Promise ] , then
* [ electronApplication . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electron-application-evaluate-handle)
* would wait for the promise to resolve and return its value .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluateHandle < R > ( pageFunction : PageFunctionOn < ElectronType , void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* This event is issued when the application closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
on ( event : 'window' , listener : ( page : Page ) = > void ) : 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 ;
/ * *
* 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 ;
/ * *
* This event is issued when the application closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
addListener ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Returns the BrowserWindow object that corresponds to the given Playwright page .
* @param page Page to retrieve the window for .
* /
browserWindow ( page : Page ) : Promise < JSHandle > ;
/ * *
* Closes Electron application .
* /
close ( ) : Promise < void > ;
/ * *
* This method returns browser context that can be used for setting up context - wide routing , etc .
* /
context ( ) : BrowserContext ;
/ * *
* Convenience method that waits for the first application window to be opened . Typically your script will start with :
*
* ` ` ` js
* const electronApp = await electron . launch ( {
* args : [ 'main.js' ]
* } ) ;
* const window = await electronApp . firstWindow ( ) ;
* // ...
* ` ` `
*
* /
firstWindow ( ) : Promise < Page > ;
/ * *
* Returns the main process for this Electron Application .
* /
process ( ) : ChildProcess ;
/ * *
* This event is issued when the application closes .
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean | Promise < boolean > , timeout? : number } | ( ( ) = > boolean | Promise < boolean > ) ) : Promise < void > ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
waitForEvent ( event : 'window' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean | Promise < boolean > , timeout? : number } | ( ( page : Page ) = > boolean | Promise < boolean > ) ) : Promise < Page > ;
/ * *
* Convenience method that returns all the opened windows .
* /
windows ( ) : Array < Page > ; }
export type AndroidElementInfo = {
clazz : string ;
desc : string ;
res : string ;
pkg : string ;
text : string ;
bounds : { x : number , y : number , width : number , height : number } ;
checkable : boolean ;
checked : boolean ;
clickable : boolean ;
enabled : boolean ;
focusable : boolean ;
focused : boolean ;
longClickable : boolean ;
scrollable : boolean ;
selected : boolean ;
} ;
export type AndroidSelector = {
checkable? : boolean ,
checked? : boolean ,
clazz? : string | RegExp ,
clickable? : boolean ,
depth? : number ,
desc? : string | RegExp ,
enabled? : boolean ,
focusable? : boolean ,
focused? : boolean ,
hasChild ? : { selector : AndroidSelector } ,
hasDescendant ? : { selector : AndroidSelector , maxDepth? : number } ,
longClickable? : boolean ,
pkg? : string | RegExp ,
res? : string | RegExp ,
scrollable? : boolean ,
selected? : boolean ,
text? : string | RegExp ,
} ;
export type AndroidKey =
'Unknown' |
'SoftLeft' | 'SoftRight' |
'Home' |
'Back' |
'Call' | 'EndCall' |
'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' |
'Star' | 'Pound' | '*' | '#' |
'DialUp' | 'DialDown' | 'DialLeft' | 'DialRight' | 'DialCenter' |
'VolumeUp' | 'VolumeDown' |
'Power' |
'Camera' |
'Clear' |
'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' |
'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' |
'Comma' | ',' |
'Period' | '.' |
'AltLeft' | 'AltRight' |
'ShiftLeft' | 'ShiftRight' |
'Tab' | '\t' |
'Space' | ' ' |
'Sym' |
'Explorer' |
'Envelop' |
'Enter' | '\n' |
'Del' |
'Grave' |
'Minus' | '-' |
'Equals' | '=' |
'LeftBracket' | '(' |
'RightBracket' | ')' |
'Backslash' | '\\' |
'Semicolon' | ';' |
'Apostrophe' | '`' |
'Slash' | '/' |
'At' | '@' |
'Num' |
'HeadsetHook' |
'Focus' |
'Plus' | '+' |
'Menu' |
'Notification' |
'Search' |
'RecentApps' |
'AppSwitch' |
'Assist' |
'Cut' |
'Copy' |
'Paste' ;
export const _electron : Electron ;
export const _android : Android ;
// This is required to not export everything by default. See https://github.com/Microsoft/TypeScript/issues/19545#issuecomment-340490459
export { } ;
/ * *
* Playwright has * * experimental * * support for Android automation . This includes Chrome for Android and Android WebView .
*
* * Requirements *
* - Android device or AVD Emulator .
* - [ ADB daemon ] ( https : //developer.android.com/studio/command-line/adb) running and authenticated with your device.
* Typically running ` adb devices ` is all you need to do .
* - [ ` Chrome 87 ` ] ( https : //play.google.com/store/apps/details?id=com.android.chrome) or newer installed on the device
* - "Enable command line on non-rooted devices" enabled in ` chrome://flags ` .
*
* * Known limitations *
* - Raw USB operation is not yet supported , so you need ADB .
* - Device needs to be awake to produce screenshots . Enabling "Stay awake" developer mode will help .
* - We didn ' t run all the tests against the device , so not everything works .
*
* * How to run *
*
* An example of the Android automation script would be :
*
* ` ` ` js
* const { _android : android } = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* // Connect to the device.
* const [ device ] = await android . devices ( ) ;
* console . log ( ` Model: ${ device . model ( ) } ` ) ;
* console . log ( ` Serial: ${ device . serial ( ) } ` ) ;
* // Take screenshot of the whole device.
* await device . screenshot ( { path : 'device.png' } ) ;
*
* {
* // --------------------- WebView -----------------------
*
* // Launch an application with WebView.
* await device . shell ( 'am force-stop org.chromium.webview_shell' ) ;
* await device . shell ( 'am start org.chromium.webview_shell/.WebViewBrowserActivity' ) ;
* // Get the WebView.
* const webview = await device . webView ( { pkg : 'org.chromium.webview_shell' } ) ;
*
* // Fill the input box.
* await device . fill ( { res : 'org.chromium.webview_shell:id/url_field' } , 'github.com/microsoft/playwright' ) ;
* await device . press ( { res : 'org.chromium.webview_shell:id/url_field' } , 'Enter' ) ;
*
* // Work with WebView's page as usual.
* const page = await webview . page ( ) ;
* await page . waitForNavigation ( { url : / . * m i c r o s o f t \ / p l a y w r i g h t . * \ / } ) ;
* console . log ( await page . title ( ) ) ;
* }
*
* {
* // --------------------- Browser -----------------------
*
* // Launch Chrome browser.
* await device . shell ( 'am force-stop com.android.chrome' ) ;
* const context = await device . launchBrowser ( ) ;
*
* // Use BrowserContext as usual.
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://webkit.org/' ) ;
* console . log ( await page . evaluate ( ( ) = > window . location . href ) ) ;
* await page . screenshot ( { path : 'page.png' } ) ;
*
* await context . close ( ) ;
* }
*
* // Close the device.
* await device . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* Note that since you don ' t need Playwright to install web browsers when testing Android , you can omit browser download
* via setting the following environment variable when installing Playwright :
*
* ` ` ` bash js
* PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = 1 npm i - D playwright
* ` ` `
*
* /
export interface Android {
/ * *
* Returns the list of detected Android devices .
* @param options
* /
devices ( options ? : {
2022-04-22 18:27:02 +02:00
/ * *
* Optional host to establish ADB server connection . Default to ` 127.0.0.1 ` .
* /
host? : string ;
2022-04-14 01:13:30 +02:00
/ * *
* Prevents automatic playwright driver installation on attach . Assumes that the drivers have been installed already .
* /
omitDriverInstall? : boolean ;
/ * *
2022-04-22 18:27:02 +02:00
* Optional port to establish ADB server connection . Default to ` 5037 ` .
2022-04-14 01:13:30 +02:00
* /
port? : number ;
} ) : Promise < Array < AndroidDevice > > ;
/ * *
* This setting will change the default maximum time for all the methods accepting ` timeout ` option .
* @param timeout Maximum time in milliseconds
* /
setDefaultTimeout ( timeout : number ) : void ;
}
/ * *
* [ AndroidDevice ] represents a connected device , either real hardware or emulated . Devices can be obtained using
* [ android . devices ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-android#android-devices).
* /
export interface AndroidDevice {
/ * *
* Emitted when a new WebView instance is detected .
* /
on ( event : 'webview' , listener : ( androidWebView : AndroidWebView ) = > void ) : 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 ;
/ * *
* Emitted when a new WebView instance is detected .
* /
addListener ( event : 'webview' , listener : ( androidWebView : AndroidWebView ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'webview' , listener : ( androidWebView : AndroidWebView ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'webview' , listener : ( androidWebView : AndroidWebView ) = > void ) : this ;
/ * *
* Disconnects from the device .
* /
close ( ) : Promise < void > ;
/ * *
* Drags the widget defined by ` selector ` towards ` dest ` point .
* @param selector Selector to drag .
* @param dest Point to drag to .
* @param options
* /
drag ( selector : AndroidSelector , dest : {
x : number ;
y : number ;
} , options ? : {
/ * *
* Optional speed of the drag in pixels per second .
* /
speed? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Fills the specific ` selector ` input box with ` text ` .
* @param selector Selector to fill .
* @param text Text to be filled in the input box .
* @param options
* /
fill ( selector : AndroidSelector , text : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Flings the widget defined by ` selector ` in the specified ` direction ` .
* @param selector Selector to fling .
* @param direction Fling direction .
* @param options
* /
fling ( selector : AndroidSelector , direction : "down" | "up" | "left" | "right" , options ? : {
/ * *
* Optional speed of the fling in pixels per second .
* /
speed? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns information about a widget defined by ` selector ` .
* @param selector Selector to return information about .
* /
info ( selector : AndroidSelector ) : Promise < AndroidElementInfo > ;
input : AndroidInput ;
/ * *
* Installs an apk on the device .
* @param file Either a path to the apk file , or apk file content .
* @param options
* /
installApk ( file : string | Buffer , options ? : {
/ * *
* Optional arguments to pass to the ` shell:cmd package install ` call . Defaults to ` -r -t -S ` .
* /
args? : Array < string > ;
} ) : Promise < void > ;
/ * *
* Launches Chrome browser on the device , and returns its persistent context .
* @param options
* /
launchBrowser ( options ? : {
/ * *
* Whether to automatically download all the attachments . Defaults to ` true ` where all the downloads are accepted .
* /
acceptDownloads? : boolean ;
/ * *
* When using [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto),
* [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route),
* [ page . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-url),
* [ page . waitForRequest ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-request), or
* [ page . waitForResponse ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-response) it
* takes the base URL in consideration by using the [ ` URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL)
* constructor for building the corresponding URL . Examples :
* - baseURL : ` http://localhost:3000 ` and navigating to ` /bar.html ` results in ` http://localhost:3000/bar.html `
* - baseURL : ` http://localhost:3000/foo/ ` and navigating to ` ./bar.html ` results in ` http://localhost:3000/foo/bar.html `
* - baseURL : ` http://localhost:3000/foo ` ( without trailing slash ) and navigating to ` ./bar.html ` results in
* ` http://localhost:3000/bar.html `
* /
baseURL? : string ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'light' ` .
* /
colorScheme ? : "light" | "dark" | "no-preference" ;
/ * *
* Optional package name to launch instead of default Chrome for Android .
* /
command? : string ;
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
/ * *
* Emulates ` 'forced-colors' ` media feature , supported values are ` 'active' ` , ` 'none' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'none' ` .
*
* > NOTE : It ' s not supported in WebKit , see [ here ] ( https : //bugs.webkit.org/show_bug.cgi?id=225281) in their issue tracker.
* /
forcedColors ? : "active" | "none" ;
geolocation ? : {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
* A list of permissions to grant to all pages in this context . See
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
* for more details .
* /
permissions? : Array < string > ;
/ * *
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for the HAR to be
* saved .
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for
* videos to be saved .
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . Actual picture of each page
* will be scaled down if necessary to fit the specified size .
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
* Emulates ` 'prefers-reduced-motion' ` media feature , supported values are ` 'reduce' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'no-preference' ` .
* /
reducedMotion ? : "reduce" | "no-preference" ;
/ * *
* Emulates consistent window screen size available inside web page via ` window.screen ` . Is only used when the ` viewport `
* is set .
* /
screen ? : {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
/ * *
* It specified , enables strict selectors mode for this context . In the strict selectors mode all operations on selectors
* that imply single target DOM element will throw when more than one element matches the selector . See [ Locator ] to learn
* more about the strict mode .
* /
strictSelectors? : boolean ;
/ * *
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
* /
timezoneId? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videosPath? : string ;
/ * *
* Emulates consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
} ) : Promise < BrowserContext > ;
/ * *
* Performs a long tap on the widget defined by ` selector ` .
* @param selector Selector to tap on .
* @param options
* /
longTap ( selector : AndroidSelector , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Device model .
* /
model ( ) : string ;
/ * *
* Launches a process in the shell on the device and returns a socket to communicate with the launched process .
* @param command
* /
open ( command : string ) : Promise < AndroidSocket > ;
/ * *
* Pinches the widget defined by ` selector ` in the closing direction .
* @param selector Selector to pinch close .
* @param percent The size of the pinch as a percentage of the widget ' s size .
* @param options
* /
pinchClose ( selector : AndroidSelector , percent : number , options ? : {
/ * *
* Optional speed of the pinch in pixels per second .
* /
speed? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Pinches the widget defined by ` selector ` in the open direction .
* @param selector Selector to pinch open .
* @param percent The size of the pinch as a percentage of the widget ' s size .
* @param options
* /
pinchOpen ( selector : AndroidSelector , percent : number , options ? : {
/ * *
* Optional speed of the pinch in pixels per second .
* /
speed? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Presses the specific ` key ` in the widget defined by ` selector ` .
* @param selector Selector to press the key in .
* @param key The key to press .
* @param options
* /
press ( selector : AndroidSelector , key : AndroidKey , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Copies a file to the device .
* @param file Either a path to the file , or file content .
* @param path Path to the file on the device .
* @param options
* /
push ( file : string | Buffer , path : string , options ? : {
/ * *
* Optional file mode , defaults to ` 644 ` ( ` rw-r--r-- ` ) .
* /
mode? : number ;
} ) : Promise < void > ;
/ * *
* Returns the buffer with the captured screenshot of the device .
* @param options
* /
screenshot ( options ? : {
/ * *
* The file path to save the image to . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . If no path is provided , the image won ' t be saved to the disk .
* /
path? : string ;
} ) : Promise < Buffer > ;
/ * *
* Scrolls the widget defined by ` selector ` in the specified ` direction ` .
* @param selector Selector to scroll .
* @param direction Scroll direction .
* @param percent Distance to scroll as a percentage of the widget ' s size .
* @param options
* /
scroll ( selector : AndroidSelector , direction : "down" | "up" | "left" | "right" , percent : number , options ? : {
/ * *
* Optional speed of the scroll in pixels per second .
* /
speed? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Device serial number .
* /
serial ( ) : string ;
/ * *
* This setting will change the default maximum time for all the methods accepting ` timeout ` option .
* @param timeout Maximum time in milliseconds
* /
setDefaultTimeout ( timeout : number ) : void ;
/ * *
* Executes a shell command on the device and returns its output .
* @param command Shell command to execute .
* /
shell ( command : string ) : Promise < Buffer > ;
/ * *
* Swipes the widget defined by ` selector ` in the specified ` direction ` .
* @param selector Selector to swipe .
* @param direction Swipe direction .
* @param percent Distance to swipe as a percentage of the widget ' s size .
* @param options
* /
swipe ( selector : AndroidSelector , direction : "down" | "up" | "left" | "right" , percent : number , options ? : {
/ * *
* Optional speed of the swipe in pixels per second .
* /
speed? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Taps on the widget defined by ` selector ` .
* @param selector Selector to tap on .
* @param options
* /
tap ( selector : AndroidSelector , options ? : {
/ * *
* Optional duration of the tap in milliseconds .
* /
duration? : number ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Waits for the specific ` selector ` to either appear or disappear , depending on the ` state ` .
* @param selector Selector to wait for .
* @param options
* /
wait ( selector : AndroidSelector , options ? : {
/ * *
* Optional state . Can be either :
* - default - wait for element to be present .
* - ` 'gone' ` - wait for element to not be present .
* /
state ? : "gone" ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Emitted when a new WebView instance is detected .
* /
waitForEvent ( event : 'webview' , optionsOrPredicate ? : { predicate ? : ( androidWebView : AndroidWebView ) = > boolean | Promise < boolean > , timeout? : number } | ( ( androidWebView : AndroidWebView ) = > boolean | Promise < boolean > ) ) : Promise < AndroidWebView > ;
/ * *
* This method waits until [ AndroidWebView ] matching the ` selector ` is opened and returns it . If there is already an open
* [ AndroidWebView ] matching the ` selector ` , returns immediately .
* @param selector
* @param options
* /
webView ( selector : {
/ * *
* Optional Package identifier .
* /
pkg? : string ;
/ * *
* Optional webview socket name .
* /
socketName? : string ;
} , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ androidDevice . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-set-default-timeout)
* method .
* /
timeout? : number ;
} ) : Promise < AndroidWebView > ;
/ * *
* Currently open WebViews .
* /
webViews ( ) : Array < AndroidWebView > ;
}
export interface AndroidInput {
/ * *
* Performs a drag between ` from ` and ` to ` points .
* @param from The start point of the drag .
* @param to The end point of the drag .
* @param steps The number of steps in the drag . Each step takes 5 milliseconds to complete .
* /
drag ( from : {
x : number ;
y : number ;
} , to : {
x : number ;
y : number ;
} , steps : number ) : Promise < void > ;
/ * *
* Presses the ` key ` .
* @param key Key to press .
* /
press ( key : AndroidKey ) : Promise < void > ;
/ * *
* Swipes following the path defined by ` segments ` .
* @param from The point to start swiping from .
* @param segments Points following the ` from ` point in the swipe gesture .
* @param steps The number of steps for each segment . Each step takes 5 milliseconds to complete , so 100 steps means half a second per each segment .
* /
swipe ( from : {
x : number ;
y : number ;
} , segments : Array < {
x : number ;
y : number ;
} > , steps : number ) : Promise < void > ;
/ * *
* Taps at the specified ` point ` .
* @param point The point to tap at .
* /
tap ( point : {
x : number ;
y : number ;
} ) : Promise < void > ;
/ * *
* Types ` text ` into currently focused widget .
* @param text Text to type .
* /
type ( text : string ) : Promise < void > ;
}
/ * *
* [ AndroidSocket ] is a way to communicate with a process launched on the [ AndroidDevice ] . Use
* [ androidDevice . open ( command ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-open) to open a socket.
* /
export interface AndroidSocket {
/ * *
* Emitted when the socket is closed .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when data is available to read from the socket .
* /
on ( event : 'data' , listener : ( buffer : Buffer ) = > void ) : 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 ;
/ * *
* 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 ;
/ * *
* Emitted when the socket is closed .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when data is available to read from the socket .
* /
addListener ( event : 'data' , listener : ( buffer : Buffer ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'data' , listener : ( buffer : Buffer ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'data' , listener : ( buffer : Buffer ) = > void ) : this ;
/ * *
* Closes the socket .
* /
close ( ) : Promise < void > ;
/ * *
* Writes some ` data ` to the socket .
* @param data Data to write .
* /
write ( data : Buffer ) : Promise < void > ;
}
/ * *
* [ AndroidWebView ] represents a WebView open on the [ AndroidDevice ] . WebView is usually obtained using
* [ androidDevice . webView ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-androiddevice#android-device-web-view).
* /
export interface AndroidWebView {
/ * *
* Emitted when the WebView is closed .
* /
on ( event : 'close' , listener : ( ) = > void ) : 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 ;
/ * *
* Emitted when the WebView is closed .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Connects to the WebView and returns a regular Playwright [ Page ] to interact with .
* /
page ( ) : Promise < Page > ;
/ * *
* WebView process PID .
* /
pid ( ) : number ;
/ * *
* WebView package identifier .
* /
pkg ( ) : string ;
}
/ * *
* Exposes API that can be used for the Web API testing . This class is used for creating [ APIRequestContext ] instance which
* in turn can be used for sending web requests . An instance of this class can be obtained via
* [ playwright . request ] ( https : //playwright.dev/docs/api/class-playwright#playwright-request). For more information see
* [ APIRequestContext ] .
* /
export interface APIRequest {
/ * *
* Creates new instances of [ APIRequestContext ] .
* @param options
* /
newContext ( options ? : {
/ * *
* Methods like
* [ apiRequestContext . get ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-apirequestcontext#api-request-context-get)
* take the base URL into consideration by using the [ ` URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL)
* constructor for building the corresponding URL . Examples :
* - baseURL : ` http://localhost:3000 ` and sending request to ` /bar.html ` results in ` http://localhost:3000/bar.html `
* - baseURL : ` http://localhost:3000/foo/ ` and sending request to ` ./bar.html ` results in
* ` http://localhost:3000/foo/bar.html `
* - baseURL : ` http://localhost:3000/foo ` ( without trailing slash ) and navigating to ` ./bar.html ` results in
* ` http://localhost:3000/bar.html `
* /
baseURL? : string ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
* /
server : string ;
/ * *
* Optional comma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Populates context with given storage state . This option can be used to initialize context with logged - in information
* obtained via
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-storage-state)
* or
* [ apiRequestContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-apirequestcontext#api-request-context-storage-state).
* Either a path to the file with saved storage , or the value returned by one of
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-storage-state)
* or
* [ apiRequestContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-apirequestcontext#api-request-context-storage-state)
* methods .
* /
storageState? : string | {
cookies : Array < {
name : string ;
value : string ;
domain : string ;
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
sameSite : "Strict" | "Lax" | "None" ;
} > ;
origins : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} ;
/ * *
* Maximum time in milliseconds to wait for the response . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
} ) : Promise < APIRequestContext > ;
}
/ * *
* This API is used for the Web API testing . You can use it to trigger API endpoints , configure micro - services , prepare
* environment or the service to your e2e test .
*
* Each Playwright browser context has associated with it [ APIRequestContext ] instance which shares cookie storage with the
* browser context and can be accessed via
* [ browserContext . request ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-request) or
* [ page . request ] ( https : //playwright.dev/docs/api/class-page#page-request). It is also possible to create a new
* APIRequestContext instance manually by calling
* [ apiRequest . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-apirequest#api-request-new-context).
*
* * * Cookie management * *
*
* [ APIRequestContext ] retuned by
* [ browserContext . request ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-request) and
* [ page . request ] ( https : //playwright.dev/docs/api/class-page#page-request) shares cookie storage with the corresponding
* [ BrowserContext ] . Each API request will have ` Cookie ` header populated with the values from the browser context . If the
* API response contains ` Set-Cookie ` header it will automatically update [ BrowserContext ] cookies and requests made from
* the page will pick them up . This means that if you log in using this API , your e2e test will be logged in and vice
* versa .
*
* If you want API requests to not interfere with the browser cookies you shoud create a new [ APIRequestContext ] by calling
* [ apiRequest . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-apirequest#api-request-new-context). Such
* ` APIRequestContext ` object will have its own isolated cookie storage .
*
* /
export interface APIRequestContext {
/ * *
* Sends HTTP ( S ) [ DELETE ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE) request and returns its
* response . The method will populate request cookies from the context and update context cookies from the response . The
* method will automatically follow redirects .
* @param url Target URL .
* @param options
* /
delete ( url : string , options ? : {
/ * *
* Allows to set post data of the request . If the data parameter is an object , it will be serialized to json string and
* ` content-type ` header will be set to ` application/json ` if not explicitly set . Otherwise the ` content-type ` header will
* be set to ` application/octet-stream ` if not explicitly set .
* /
data? : string | Buffer | Serializable ;
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` application/x-www-form-urlencoded ` encoding and sent as
* this request body . If this parameter is specified ` content-type ` header will be set to
* ` application/x-www-form-urlencoded ` unless explicitly provided .
* /
form ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` multipart/form-data ` encoding and sent as this request
* body . If this parameter is specified ` content-type ` header will be set to ` multipart/form-data ` unless explicitly
* provided . File values can be passed either as [ ` fs.ReadStream ` ] ( https : //nodejs.org/api/fs.html#fs_class_fs_readstream)
* or as file - like object containing file name , mime - type and its content .
* /
multipart ? : { [ key : string ] : string | number | boolean | ReadStream | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} ; } ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* All responses returned by
* [ apiRequestContext . get ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-apirequestcontext#api-request-context-get)
* and similar methods are stored in the memory , so that you can later call
* [ apiResponse . body ( ) ] ( https : //playwright.dev/docs/api/class-apiresponse#api-response-body). This method discards all
* stored responses , and makes [ apiResponse . body ( ) ] ( https : //playwright.dev/docs/api/class-apiresponse#api-response-body)
* throw "Response disposed" error .
* /
dispose ( ) : Promise < void > ;
/ * *
* Sends HTTP ( S ) request and returns its response . The method will populate request cookies from the context and update
* context cookies from the response . The method will automatically follow redirects .
* @param urlOrRequest Target URL or Request to get all parameters from .
* @param options
* /
fetch ( urlOrRequest : string | Request , options ? : {
/ * *
* Allows to set post data of the request . If the data parameter is an object , it will be serialized to json string and
* ` content-type ` header will be set to ` application/json ` if not explicitly set . Otherwise the ` content-type ` header will
* be set to ` application/octet-stream ` if not explicitly set .
* /
data? : string | Buffer | Serializable ;
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` application/x-www-form-urlencoded ` encoding and sent as
* this request body . If this parameter is specified ` content-type ` header will be set to
* ` application/x-www-form-urlencoded ` unless explicitly provided .
* /
form ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* If set changes the fetch method ( e . g . [ PUT ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) or
* [ POST ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)). If not specified, GET method is used.
* /
method? : string ;
/ * *
* Provides an object that will be serialized as html form using ` multipart/form-data ` encoding and sent as this request
* body . If this parameter is specified ` content-type ` header will be set to ` multipart/form-data ` unless explicitly
* provided . File values can be passed either as [ ` fs.ReadStream ` ] ( https : //nodejs.org/api/fs.html#fs_class_fs_readstream)
* or as file - like object containing file name , mime - type and its content .
* /
multipart ? : { [ key : string ] : string | number | boolean | ReadStream | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} ; } ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* Sends HTTP ( S ) [ GET ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET) request and returns its response. The
* method will populate request cookies from the context and update context cookies from the response . The method will
* automatically follow redirects .
* @param url Target URL .
* @param options
* /
get ( url : string , options ? : {
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* Sends HTTP ( S ) [ HEAD ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD) request and returns its response.
* The method will populate request cookies from the context and update context cookies from the response . The method will
* automatically follow redirects .
* @param url Target URL .
* @param options
* /
head ( url : string , options ? : {
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* Sends HTTP ( S ) [ PATCH ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH) request and returns its response.
* The method will populate request cookies from the context and update context cookies from the response . The method will
* automatically follow redirects .
* @param url Target URL .
* @param options
* /
patch ( url : string , options ? : {
/ * *
* Allows to set post data of the request . If the data parameter is an object , it will be serialized to json string and
* ` content-type ` header will be set to ` application/json ` if not explicitly set . Otherwise the ` content-type ` header will
* be set to ` application/octet-stream ` if not explicitly set .
* /
data? : string | Buffer | Serializable ;
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` application/x-www-form-urlencoded ` encoding and sent as
* this request body . If this parameter is specified ` content-type ` header will be set to
* ` application/x-www-form-urlencoded ` unless explicitly provided .
* /
form ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` multipart/form-data ` encoding and sent as this request
* body . If this parameter is specified ` content-type ` header will be set to ` multipart/form-data ` unless explicitly
* provided . File values can be passed either as [ ` fs.ReadStream ` ] ( https : //nodejs.org/api/fs.html#fs_class_fs_readstream)
* or as file - like object containing file name , mime - type and its content .
* /
multipart ? : { [ key : string ] : string | number | boolean | ReadStream | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} ; } ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* Sends HTTP ( S ) [ POST ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) request and returns its response.
* The method will populate request cookies from the context and update context cookies from the response . The method will
* automatically follow redirects .
* @param url Target URL .
* @param options
* /
post ( url : string , options ? : {
/ * *
* Allows to set post data of the request . If the data parameter is an object , it will be serialized to json string and
* ` content-type ` header will be set to ` application/json ` if not explicitly set . Otherwise the ` content-type ` header will
* be set to ` application/octet-stream ` if not explicitly set .
* /
data? : string | Buffer | Serializable ;
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` application/x-www-form-urlencoded ` encoding and sent as
* this request body . If this parameter is specified ` content-type ` header will be set to
* ` application/x-www-form-urlencoded ` unless explicitly provided .
* /
form ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` multipart/form-data ` encoding and sent as this request
* body . If this parameter is specified ` content-type ` header will be set to ` multipart/form-data ` unless explicitly
* provided . File values can be passed either as [ ` fs.ReadStream ` ] ( https : //nodejs.org/api/fs.html#fs_class_fs_readstream)
* or as file - like object containing file name , mime - type and its content .
* /
multipart ? : { [ key : string ] : string | number | boolean | ReadStream | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} ; } ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* Sends HTTP ( S ) [ PUT ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) request and returns its response. The
* method will populate request cookies from the context and update context cookies from the response . The method will
* automatically follow redirects .
* @param url Target URL .
* @param options
* /
put ( url : string , options ? : {
/ * *
* Allows to set post data of the request . If the data parameter is an object , it will be serialized to json string and
* ` content-type ` header will be set to ` application/json ` if not explicitly set . Otherwise the ` content-type ` header will
* be set to ` application/octet-stream ` if not explicitly set .
* /
data? : string | Buffer | Serializable ;
/ * *
* Whether to throw on response codes other than 2 xx and 3 xx . By default response object is returned for all status codes .
* /
failOnStatusCode? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` application/x-www-form-urlencoded ` encoding and sent as
* this request body . If this parameter is specified ` content-type ` header will be set to
* ` application/x-www-form-urlencoded ` unless explicitly provided .
* /
form ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Allows to set HTTP headers .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Provides an object that will be serialized as html form using ` multipart/form-data ` encoding and sent as this request
* body . If this parameter is specified ` content-type ` header will be set to ` multipart/form-data ` unless explicitly
* provided . File values can be passed either as [ ` fs.ReadStream ` ] ( https : //nodejs.org/api/fs.html#fs_class_fs_readstream)
* or as file - like object containing file name , mime - type and its content .
* /
multipart ? : { [ key : string ] : string | number | boolean | ReadStream | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} ; } ;
/ * *
* Query parameters to be sent with the URL .
* /
params ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Request timeout in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout .
* /
timeout? : number ;
} ) : Promise < APIResponse > ;
/ * *
* Returns storage state for this request context , contains current cookies and local storage snapshot if it was passed to
* the constructor .
* @param options
* /
storageState ( options ? : {
/ * *
* The file path to save the storage state to . If ` path ` is a relative path , then it is resolved relative to current
* working directory . If no path is provided , storage state is still returned , but won ' t be saved to the disk .
* /
path? : string ;
} ) : Promise < {
cookies : Array < {
name : string ;
value : string ;
domain : string ;
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
sameSite : "Strict" | "Lax" | "None" ;
} > ;
origins : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} > ;
}
/ * *
* [ APIResponse ] class represents responses returned by
* [ apiRequestContext . get ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-apirequestcontext#api-request-context-get)
* and similar methods .
*
* /
export interface APIResponse {
/ * *
* Returns the buffer with response body .
* /
body ( ) : Promise < Buffer > ;
/ * *
* Disposes the body of this response . If not called then the body will stay in memory until the context closes .
* /
dispose ( ) : Promise < void > ;
/ * *
* An object with all the response HTTP headers associated with this response .
* /
headers ( ) : { [ key : string ] : string ; } ;
/ * *
* An array with all the request HTTP headers associated with this response . Header names are not lower - cased . Headers with
* multiple entries , such as ` Set-Cookie ` , appear in the array multiple times .
* /
headersArray ( ) : Array < {
/ * *
* Name of the header .
* /
name : string ;
/ * *
* Value of the header .
* /
value : string ;
} > ;
/ * *
* Returns the JSON representation of response body .
*
* This method will throw if the response body is not parsable via ` JSON.parse ` .
* /
json ( ) : Promise < Serializable > ;
/ * *
* Contains a boolean stating whether the response was successful ( status in the range 200 - 299 ) or not .
* /
ok ( ) : boolean ;
/ * *
* Contains the status code of the response ( e . g . , 200 for a success ) .
* /
status ( ) : number ;
/ * *
* Contains the status text of the response ( e . g . usually an "OK" for a success ) .
* /
statusText ( ) : string ;
/ * *
* Returns the text representation of response body .
* /
text ( ) : Promise < string > ;
/ * *
* Contains the URL of the response .
* /
url ( ) : string ;
}
/ * *
* - extends : [ EventEmitter ]
*
* A Browser is created via
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-launch). An example of
* using a [ Browser ] to create a [ Page ] :
*
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* /
export interface Browser extends EventEmitter {
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-close) method was called.
* /
on ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : 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 ;
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-close) method was called.
* /
addListener ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
/ * *
* In case this browser is obtained using
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-launch), closes the
* browser and all of its pages ( if any were opened ) .
*
* In case this browser is connected to , clears all created contexts belonging to this browser and disconnects from the
* browser server .
*
* The [ Browser ] object itself is considered to be disposed and cannot be used anymore .
* /
close ( ) : Promise < void > ;
/ * *
* Returns an array of all open browser contexts . In a newly created browser , this will return zero browser contexts .
*
* ` ` ` js
* const browser = await pw . webkit . launch ( ) ;
* console . log ( browser . contexts ( ) . length ) ; // prints `0`
*
* const context = await browser . newContext ( ) ;
* console . log ( browser . contexts ( ) . length ) ; // prints `1`
* ` ` `
*
* /
contexts ( ) : Array < BrowserContext > ;
/ * *
* Indicates that the browser is connected .
* /
isConnected ( ) : boolean ;
/ * *
* > NOTE : CDP Sessions are only supported on Chromium - based browsers .
*
* Returns the newly created browser session .
* /
newBrowserCDPSession ( ) : Promise < CDPSession > ;
/ * *
* Creates a new browser context . It won ' t share cookies / cache with other browser contexts .
*
* ` ` ` js
* ( async ( ) = > {
* const browser = await playwright . firefox . launch ( ) ; // Or 'chromium' or 'webkit'.
* // Create a new incognito browser context.
* const context = await browser . newContext ( ) ;
* // Create a new page in a pristine context.
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* } ) ( ) ;
* ` ` `
*
* @param options
* /
newContext ( options? : BrowserContextOptions ) : Promise < BrowserContext > ;
/ * *
* Creates a new page in a new browser context . Closing this page will close the context as well .
*
* This is a convenience API that should only be used for the single - page scenarios and short snippets . Production code and
* testing frameworks should explicitly create
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browser-new-context) followed by the
* [ browserContext . newPage ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-new-page) to control
* their exact life times .
* @param options
* /
newPage ( options ? : {
/ * *
* Whether to automatically download all the attachments . Defaults to ` true ` where all the downloads are accepted .
* /
acceptDownloads? : boolean ;
/ * *
* When using [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto),
* [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route),
* [ page . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-url),
* [ page . waitForRequest ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-request), or
* [ page . waitForResponse ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-response) it
* takes the base URL in consideration by using the [ ` URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL)
* constructor for building the corresponding URL . Examples :
* - baseURL : ` http://localhost:3000 ` and navigating to ` /bar.html ` results in ` http://localhost:3000/bar.html `
* - baseURL : ` http://localhost:3000/foo/ ` and navigating to ` ./bar.html ` results in ` http://localhost:3000/foo/bar.html `
* - baseURL : ` http://localhost:3000/foo ` ( without trailing slash ) and navigating to ` ./bar.html ` results in
* ` http://localhost:3000/bar.html `
* /
baseURL? : string ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'light' ` .
* /
colorScheme ? : "light" | "dark" | "no-preference" ;
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
/ * *
* Emulates ` 'forced-colors' ` media feature , supported values are ` 'active' ` , ` 'none' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'none' ` .
*
* > NOTE : It ' s not supported in WebKit , see [ here ] ( https : //bugs.webkit.org/show_bug.cgi?id=225281) in their issue tracker.
* /
forcedColors ? : "active" | "none" ;
geolocation ? : {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
* A list of permissions to grant to all pages in this context . See
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
* for more details .
* /
permissions? : Array < string > ;
/ * *
* Network proxy settings to use with this context .
*
* > NOTE : For Chromium on Windows the browser needs to be launched with the global proxy for this option to work . If all
* contexts override the proxy , global proxy will be never used and can be any string , for example ` launch({ proxy: {
* server : 'http://per-context' } } ) ` .
* /
proxy ? : {
/ * *
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
* /
server : string ;
/ * *
* Optional comma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for the HAR to be
* saved .
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for
* videos to be saved .
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . Actual picture of each page
* will be scaled down if necessary to fit the specified size .
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
* Emulates ` 'prefers-reduced-motion' ` media feature , supported values are ` 'reduce' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'no-preference' ` .
* /
reducedMotion ? : "reduce" | "no-preference" ;
/ * *
* Emulates consistent window screen size available inside web page via ` window.screen ` . Is only used when the ` viewport `
* is set .
* /
screen ? : {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
/ * *
* Populates context with given storage state . This option can be used to initialize context with logged - in information
* obtained via
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-storage-state).
* Either a path to the file with saved storage , or an object with the following fields :
* /
storageState? : string | {
/ * *
* cookies to set for context
* /
cookies : Array < {
name : string ;
value : string ;
/ * *
* domain and path are required
* /
domain : string ;
/ * *
* domain and path are required
* /
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
/ * *
* sameSite flag
* /
sameSite : "Strict" | "Lax" | "None" ;
} > ;
/ * *
* localStorage to set for context
* /
origins : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} ;
/ * *
* It specified , enables strict selectors mode for this context . In the strict selectors mode all operations on selectors
* that imply single target DOM element will throw when more than one element matches the selector . See [ Locator ] to learn
* more about the strict mode .
* /
strictSelectors? : boolean ;
/ * *
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
* /
timezoneId? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videosPath? : string ;
/ * *
* Emulates consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
} ) : Promise < Page > ;
/ * *
* > NOTE : This API controls [ Chromium Tracing ] ( https : //www.chromium.org/developers/how-tos/trace-event-profiling-tool)
* which is a low - level chromium - specific debugging tool . API to control [ Playwright Tracing ] ( https : //playwright.dev/docs/trace-viewer) could be
* found [ here ] ( https : //playwright.dev/docs/api/class-tracing).
*
* You can use [ browser . startTracing ( [ page , options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browser-start-tracing)
* and [ browser . stopTracing ( ) ] ( https : //playwright.dev/docs/api/class-browser#browser-stop-tracing) to create a trace file
* that can be opened in Chrome DevTools performance panel .
*
* ` ` ` js
* await browser . startTracing ( page , { path : 'trace.json' } ) ;
* await page . goto ( 'https://www.google.com' ) ;
* await browser . stopTracing ( ) ;
* ` ` `
*
* @param page Optional , if specified , tracing includes screenshots of the given page .
* @param options
* /
startTracing ( page? : Page , options ? : {
/ * *
* specify custom categories to use instead of default .
* /
categories? : Array < string > ;
/ * *
* A path to write the trace file to .
* /
path? : string ;
/ * *
* captures screenshots in the trace .
* /
screenshots? : boolean ;
} ) : Promise < void > ;
/ * *
* > NOTE : This API controls [ Chromium Tracing ] ( https : //www.chromium.org/developers/how-tos/trace-event-profiling-tool)
* which is a low - level chromium - specific debugging tool . API to control [ Playwright Tracing ] ( https : //playwright.dev/docs/trace-viewer) could be
* found [ here ] ( https : //playwright.dev/docs/api/class-tracing).
*
* Returns the buffer with trace data .
* /
stopTracing ( ) : Promise < Buffer > ;
/ * *
* Returns the browser version .
* /
version ( ) : string ;
}
export interface BrowserServer {
/ * *
* Emitted when the browser server closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : 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 ;
/ * *
* Emitted when the browser server closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Closes the browser gracefully and makes sure the process is terminated .
* /
close ( ) : Promise < void > ;
/ * *
* Kills the browser process and waits for the process to exit .
* /
kill ( ) : Promise < void > ;
/ * *
* Spawned browser application process .
* /
process ( ) : ChildProcess ;
/ * *
* Browser websocket url .
*
* Browser websocket endpoint which can be used as an argument to
* [ browserType . connect ( wsEndpoint [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-connect) to
* establish connection to the browser .
* /
wsEndpoint ( ) : string ;
}
/ * *
* [ ConsoleMessage ] objects are dispatched by page via the
* [ page . on ( 'console' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-console) event. For each console messages
* logged in the page there will be corresponding event in the Playwright context .
*
* ` ` ` js
* // Listen for all console logs
* page . on ( 'console' , msg = > console . log ( msg . text ( ) ) )
*
* // Listen for all console events and handle errors
* page . on ( 'console' , msg = > {
* if ( msg . type ( ) === 'error' )
* console . log ( ` Error text: " ${ msg . text ( ) } " ` ) ;
* } ) ;
*
* // Get the next console log
* const [ msg ] = await Promise . all ( [
* page . waitForEvent ( 'console' ) ,
* // Issue console.log inside the page
* page . evaluate ( ( ) = > {
* console . log ( 'hello' , 42 , { foo : 'bar' } ) ;
* } ) ,
* ] ) ;
*
* // Deconstruct console log arguments
* await msg . args [ 0 ] . jsonValue ( ) // hello
* await msg . args [ 1 ] . jsonValue ( ) // 42
* ` ` `
*
* /
export interface ConsoleMessage {
/ * *
* List of arguments passed to a ` console ` function call . See also
* [ page . on ( 'console' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-console).
* /
args ( ) : Array < JSHandle > ;
location ( ) : {
/ * *
* URL of the resource .
* /
url : string ;
/ * *
* 0 - based line number in the resource .
* /
lineNumber : number ;
/ * *
* 0 - based column number in the resource .
* /
columnNumber : number ;
} ;
/ * *
* The text of the console message .
* /
text ( ) : string ;
/ * *
* One of the following values : ` 'log' ` , ` 'debug' ` , ` 'info' ` , ` 'error' ` , ` 'warning' ` , ` 'dir' ` , ` 'dirxml' ` , ` 'table' ` ,
* ` 'trace' ` , ` 'clear' ` , ` 'startGroup' ` , ` 'startGroupCollapsed' ` , ` 'endGroup' ` , ` 'assert' ` , ` 'profile' ` , ` 'profileEnd' ` ,
* ` 'count' ` , ` 'timeEnd' ` .
* /
type ( ) : string ;
}
/ * *
* Coverage gathers information about parts of JavaScript and CSS that were used by the page .
*
* An example of using JavaScript coverage to produce Istanbul report for page load :
*
* > NOTE : Coverage APIs are only supported on Chromium - based browsers .
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ;
* const v8toIstanbul = require ( 'v8-to-istanbul' ) ;
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . coverage . startJSCoverage ( ) ;
* await page . goto ( 'https://chromium.org' ) ;
* const coverage = await page . coverage . stopJSCoverage ( ) ;
* for ( const entry of coverage ) {
* const converter = v8toIstanbul ( '' , 0 , { source : entry.source } ) ;
* await converter . load ( ) ;
* converter . applyCoverage ( entry . functions ) ;
* console . log ( JSON . stringify ( converter . toIstanbul ( ) ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* /
export interface Coverage {
/ * *
* Returns coverage is started
* @param options
* /
startCSSCoverage ( options ? : {
/ * *
* Whether to reset coverage on every navigation . Defaults to ` true ` .
* /
resetOnNavigation? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns coverage is started
*
* > NOTE : Anonymous scripts are ones that don ' t have an associated url . These are scripts that are dynamically created on
* the page using ` eval ` or ` new Function ` . If ` reportAnonymousScripts ` is set to ` true ` , anonymous scripts will have
* ` __playwright_evaluation_script__ ` as their URL .
* @param options
* /
startJSCoverage ( options ? : {
/ * *
* Whether anonymous scripts generated by the page should be reported . Defaults to ` false ` .
* /
reportAnonymousScripts? : boolean ;
/ * *
* Whether to reset coverage on every navigation . Defaults to ` true ` .
* /
resetOnNavigation? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the array of coverage reports for all stylesheets
*
* > NOTE : CSS Coverage doesn ' t include dynamically injected style tags without sourceURLs .
* /
stopCSSCoverage ( ) : Promise < Array < {
/ * *
* StyleSheet URL
* /
url : string ;
/ * *
* StyleSheet content , if available .
* /
text? : string ;
/ * *
* StyleSheet ranges that were used . Ranges are sorted and non - overlapping .
* /
ranges : Array < {
/ * *
* A start offset in text , inclusive
* /
start : number ;
/ * *
* An end offset in text , exclusive
* /
end : number ;
} > ;
} >> ;
/ * *
* Returns the array of coverage reports for all scripts
*
* > NOTE : JavaScript Coverage doesn ' t include anonymous scripts by default . However , scripts with sourceURLs are reported .
* /
stopJSCoverage ( ) : Promise < Array < {
/ * *
* Script URL
* /
url : string ;
/ * *
* Script ID
* /
scriptId : string ;
/ * *
* Script content , if applicable .
* /
source? : string ;
/ * *
* V8 - specific coverage format .
* /
functions : Array < {
functionName : string ;
isBlockCoverage : boolean ;
ranges : Array < {
count : number ;
startOffset : number ;
endOffset : number ;
} > ;
} > ;
} >> ;
}
/ * *
* [ Dialog ] objects are dispatched by page via the
* [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-dialog) event.
*
* An example of using ` Dialog ` class :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* page . on ( 'dialog' , async dialog = > {
* console . log ( dialog . message ( ) ) ;
* await dialog . dismiss ( ) ;
* } ) ;
* await page . evaluate ( ( ) = > alert ( '1' ) ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* > NOTE : Dialogs are dismissed automatically , unless there is a
* [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-dialog) listener. When listener is present, it
* * * must * * either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-accept) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
* /
export interface Dialog {
/ * *
* Returns when the dialog has been accepted .
* @param promptText A text to enter in prompt . Does not cause any effects if the dialog ' s ` type ` is not prompt . Optional .
* /
accept ( promptText? : string ) : Promise < void > ;
/ * *
* If dialog is prompt , returns default prompt value . Otherwise , returns empty string .
* /
defaultValue ( ) : string ;
/ * *
* Returns when the dialog has been dismissed .
* /
dismiss ( ) : Promise < void > ;
/ * *
* A message displayed in the dialog .
* /
message ( ) : string ;
/ * *
* Returns dialog ' s type , can be one of ` alert ` , ` beforeunload ` , ` confirm ` or ` prompt ` .
* /
type ( ) : string ;
}
/ * *
* [ Download ] objects are dispatched by page via the
* [ page . on ( 'download' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-download) event.
*
* All the downloaded files belonging to the browser context are deleted when the browser context is closed .
*
* Download event is emitted once the download starts . Download path becomes available once download completes :
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between clicking and waiting for the download.
* const [ download ] = await Promise . all ( [
* // It is important to call waitForEvent before click to set up waiting.
* page . waitForEvent ( 'download' ) ,
* // Triggers the download.
* page . locator ( 'text=Download file' ) . click ( ) ,
* ] ) ;
* // wait for download to complete
* const path = await download . path ( ) ;
* ` ` `
*
* /
export interface Download {
/ * *
* Cancels a download . Will not fail if the download is already finished or canceled . Upon successful cancellations ,
* ` download.failure() ` would resolve to ` 'canceled' ` .
* /
cancel ( ) : Promise < void > ;
/ * *
* Returns readable stream for current download or ` null ` if download failed .
* /
createReadStream ( ) : Promise < null | Readable > ;
/ * *
* Deletes the downloaded file . Will wait for the download to finish if necessary .
* /
delete ( ) : Promise < void > ;
/ * *
* Returns download error if any . Will wait for the download to finish if necessary .
* /
failure ( ) : Promise < null | string > ;
/ * *
* Get the page that the download belongs to .
* /
page ( ) : Page ;
/ * *
* Returns path to the downloaded file in case of successful download . The method will wait for the download to finish if
* necessary . The method throws when connected remotely .
*
* Note that the download ' s file name is a random GUID , use
* [ download . suggestedFilename ( ) ] ( https : //playwright.dev/docs/api/class-download#download-suggested-filename) to get
* suggested file name .
* /
path ( ) : Promise < null | string > ;
/ * *
* Copy the download to a user - specified path . It is safe to call this method while the download is still in progress . Will
* wait for the download to finish if necessary .
* @param path Path where the download should be copied .
* /
saveAs ( path : string ) : Promise < void > ;
/ * *
* Returns suggested filename for this download . It is typically computed by the browser from the
* [ ` Content-Disposition ` ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) response header
* or the ` download ` attribute . See the spec on [ whatwg ] ( https : //html.spec.whatwg.org/#downloading-resources). Different
* browsers can use different logic for computing it .
* /
suggestedFilename ( ) : string ;
/ * *
* Returns downloaded url .
* /
url ( ) : string ;
}
/ * *
* Playwright has * * experimental * * support for Electron automation . You can access electron namespace via :
*
* ` ` ` js
* const { _electron } = require ( 'playwright' ) ;
* ` ` `
*
* An example of the Electron automation script would be :
*
* ` ` ` js
* const { _electron : electron } = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* // Launch Electron app.
* const electronApp = await electron . launch ( { args : [ 'main.js' ] } ) ;
*
* // Evaluation expression in the Electron context.
* const appPath = await electronApp . evaluate ( async ( { app } ) = > {
* // This runs in the main Electron process, parameter here is always
* // the result of the require('electron') in the main app script.
* return app . getAppPath ( ) ;
* } ) ;
* console . log ( appPath ) ;
*
* // Get the first window that the app opens, wait if necessary.
* const window = await electronApp . firstWindow ( ) ;
* // Print the title.
* console . log ( await window . title ( ) ) ;
* // Capture a screenshot.
* await window . screenshot ( { path : 'intro.png' } ) ;
* // Direct Electron console to Node terminal.
* window . on ( 'console' , console . log ) ;
* // Click button.
* await window . click ( 'text=Click me' ) ;
* // Exit app.
* await electronApp . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* Note that since you don ' t need Playwright to install web browsers when testing Electron , you can omit browser download
* via setting the following environment variable when installing Playwright :
*
* ` ` ` bash js
* PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = 1 npm i - D playwright
* ` ` `
*
* * * Supported Electron versions are : * *
* - v12 . 2.0 +
* - v13 . 4.0 +
* - v14 +
* /
export interface Electron {
/ * *
* Launches electron application specified with the ` executablePath ` .
* @param options
* /
launch ( options ? : {
/ * *
* Whether to automatically download all the attachments . Defaults to ` true ` where all the downloads are accepted .
* /
acceptDownloads? : boolean ;
/ * *
* Additional arguments to pass to the application when launching . You typically pass the main script name here .
* /
args? : Array < string > ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'light' ` .
* /
colorScheme ? : "light" | "dark" | "no-preference" ;
/ * *
* Current working directory to launch application from .
* /
cwd? : string ;
/ * *
* Specifies environment variables that will be visible to Electron . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string ; } ;
/ * *
* Launches given Electron application . If not specified , launches the default Electron executable installed in this
* package , located at ` node_modules/.bin/electron ` .
* /
executablePath? : string ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
geolocation ? : {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
* /
locale? : string ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for the HAR to be
* saved .
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for
* videos to be saved .
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . Actual picture of each page
* will be scaled down if necessary to fit the specified size .
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
* Maximum time in milliseconds to wait for the application to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable
* timeout .
* /
timeout? : number ;
/ * *
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
* /
timezoneId? : string ;
} ) : Promise < ElectronApplication > ;
}
/ * *
* [ FileChooser ] objects are dispatched by the page in the
* [ page . on ( 'filechooser' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-file-chooser) event.
*
* ` ` ` js
* // Note that Promise.all prevents a race condition
* // between clicking and waiting for the file chooser.
* const [ fileChooser ] = await Promise . all ( [
* // It is important to call waitForEvent before click to set up waiting.
* page . waitForEvent ( 'filechooser' ) ,
* // Opens the file chooser.
* page . locator ( 'text=Upload' ) . click ( ) ,
* ] ) ;
* await fileChooser . setFiles ( 'myfile.pdf' ) ;
* ` ` `
*
* /
export interface FileChooser {
/ * *
* Returns input element associated with this file chooser .
* /
element ( ) : ElementHandle ;
/ * *
* Returns whether this file chooser accepts multiple files .
* /
isMultiple ( ) : boolean ;
/ * *
* Returns page this file chooser belongs to .
* /
page ( ) : Page ;
/ * *
* Sets the value of the file input this chooser is associated with . If some of the ` filePaths ` are relative paths , then
2022-04-27 16:06:30 +02:00
* they are resolved relative to the current working directory . For empty array , clears the selected files .
2022-04-14 01:13:30 +02:00
* @param files
* @param options
* /
setFiles ( files : string | Array < string > | {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} | Array < {
/ * *
* File name
* /
name : string ;
/ * *
* File type
* /
mimeType : string ;
/ * *
* File content
* /
buffer : Buffer ;
} > , options ? : {
/ * *
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
* /
noWaitAfter? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
} ) : Promise < void > ;
}
/ * *
* FrameLocator represents a view to the ` iframe ` on the page . It captures the logic sufficient to retrieve the ` iframe `
* and locate elements in that iframe . FrameLocator can be created with either
* [ page . frameLocator ( selector ) ] ( https : //playwright.dev/docs/api/class-page#page-frame-locator) or
* [ locator . frameLocator ( selector ) ] ( https : //playwright.dev/docs/api/class-locator#locator-frame-locator) method.
*
* ` ` ` js
* const locator = page . frameLocator ( '#my-frame' ) . locator ( 'text=Submit' ) ;
* await locator . click ( ) ;
* ` ` `
*
* * * Strictness * *
*
* Frame locators are strict . This means that all operations on frame locators will throw if more than one element matches
* given selector .
*
* ` ` ` js
* // Throws if there are several frames in DOM:
* await page . frameLocator ( '.result-frame' ) . locator ( 'button' ) . click ( ) ;
*
* // Works because we explicitly tell locator to pick the first frame:
* await page . frameLocator ( '.result-frame' ) . first ( ) . locator ( 'button' ) . click ( ) ;
* ` ` `
*
* * * Converting Locator to FrameLocator * *
*
* If you have a [ Locator ] object pointing to an ` iframe ` it can be converted to [ FrameLocator ] using
* [ ` :scope ` ] ( https : //developer.mozilla.org/en-US/docs/Web/CSS/:scope) CSS selector:
*
* ` ` ` js
* const frameLocator = locator . frameLocator ( ':scope' ) ;
* ` ` `
*
* /
export interface FrameLocator {
/ * *
* Returns locator to the first matching frame .
* /
first ( ) : FrameLocator ;
/ * *
* When working with iframes , you can create a frame locator that will enter the iframe and allow selecting elements in
* that iframe .
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* /
frameLocator ( selector : string ) : FrameLocator ;
/ * *
* Returns locator to the last matching frame .
* /
last ( ) : FrameLocator ;
/ * *
* The method finds an element matching the specified selector in the FrameLocator ' s subtree .
* @param selector A selector to use when resolving DOM element . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
* @param options
* /
locator ( selector : string , options ? : {
/ * *
* Matches elements containing an element that matches an inner locator . Inner locator is queried against the outer one .
* For example , ` article ` that has ` text=Playwright ` matches ` <article><div>Playwright</div></article> ` .
*
* Note that outer and inner locators must belong to the same frame . Inner locator must not contain [ FrameLocator ] s .
* /
has? : Locator ;
/ * *
* Matches elements containing specified text somewhere inside , possibly in a child or a descendant element . When passed a
* [ string ] , matching is case - insensitive and searches for a substring . For example , ` "Playwright" ` matches
* ` <article><div>Playwright</div></article> ` .
* /
hasText? : string | RegExp ;
} ) : Locator ;
/ * *
* Returns locator to the n - th matching frame . It ' s zero based , ` nth(0) ` selects the first frame .
* @param index
* /
nth ( index : number ) : FrameLocator ;
}
/ * *
* Keyboard provides an api for managing a virtual keyboard . The high level api is
* [ keyboard . type ( text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-type), which takes raw
* characters and generates proper keydown , keypress / input , and keyup events on your page .
*
* For finer control , you can use [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-down),
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up), and
* [ keyboard . insertText ( text ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-insert-text) to manually fire events
* as if they were generated from a real keyboard .
*
* An example of holding down ` Shift ` in order to select and delete some text :
*
* ` ` ` js
* await page . keyboard . type ( 'Hello World!' ) ;
* await page . keyboard . press ( 'ArrowLeft' ) ;
*
* await page . keyboard . down ( 'Shift' ) ;
* for ( let i = 0 ; i < ' World' . length ; i ++ )
* await page . keyboard . press ( 'ArrowLeft' ) ;
* await page . keyboard . up ( 'Shift' ) ;
*
* await page . keyboard . press ( 'Backspace' ) ;
* // Result text will end up saying 'Hello!'
* ` ` `
*
* An example of pressing uppercase ` A `
*
* ` ` ` js
* await page . keyboard . press ( 'Shift+KeyA' ) ;
* // or
* await page . keyboard . press ( 'Shift+A' ) ;
* ` ` `
*
* An example to trigger select - all with the keyboard
*
* ` ` ` js
* // on Windows and Linux
* await page . keyboard . press ( 'Control+A' ) ;
* // on macOS
* await page . keyboard . press ( 'Meta+A' ) ;
* ` ` `
*
* /
export interface Keyboard {
/ * *
* Dispatches a ` keydown ` event .
*
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
*
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
*
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
*
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
*
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
*
* If ` key ` is a modifier key , ` Shift ` , ` Meta ` , ` Control ` , or ` Alt ` , subsequent key presses will be sent with that modifier
* active . To release the modifier key , use [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up).
*
* After the key is pressed once , subsequent calls to
* [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-down) will have
* [ repeat ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat) set to true. To release the key, use
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up).
*
* > NOTE : Modifier keys DO influence ` keyboard.down ` . Holding down ` Shift ` will type the text in upper case .
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* /
down ( key : string ) : Promise < void > ;
/ * *
* Dispatches only ` input ` event , does not emit the ` keydown ` , ` keyup ` or ` keypress ` events .
*
* ` ` ` js
* page . keyboard . insertText ( '嗨' ) ;
* ` ` `
*
* > NOTE : Modifier keys DO NOT effect ` keyboard.insertText ` . Holding down ` Shift ` will not type the text in upper case .
* @param text Sets input to the specified text value .
* /
insertText ( text : string ) : Promise < void > ;
/ * *
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
*
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
*
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
*
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
*
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
*
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When specified with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
*
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://keycode.info' ) ;
* await page . keyboard . press ( 'A' ) ;
* await page . screenshot ( { path : 'A.png' } ) ;
* await page . keyboard . press ( 'ArrowLeft' ) ;
* await page . screenshot ( { path : 'ArrowLeft.png' } ) ;
* await page . keyboard . press ( 'Shift+O' ) ;
* await page . screenshot ( { path : 'O.png' } ) ;
* await browser . close ( ) ;
* ` ` `
*
* Shortcut for [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-down) and
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-up).
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text .
*
* To press a special key , like ` Control ` or ` ArrowDown ` , use
* [ keyboard . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboard-press).
*
* ` ` ` js
* await page . keyboard . type ( 'Hello' ) ; // Types instantly
* await page . keyboard . type ( 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
*
* > NOTE : Modifier keys DO NOT effect ` keyboard.type ` . Holding down ` Shift ` will not type the text in upper case .
* > NOTE : For characters that are not on a US keyboard , only an ` input ` event will be sent .
* @param text A text to type into a focused element .
* @param options
* /
type ( text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` keyup ` event .
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* /
up ( key : string ) : Promise < void > ;
}
/ * *
* Playwright generates a lot of logs and they are accessible via the pluggable logger sink .
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( {
* logger : {
* isEnabled : ( name , severity ) = > name === 'browser' ,
* log : ( name , severity , message , args ) = > console . log ( ` ${ name } ${ message } ` )
* }
* } ) ;
* . . .
* } ) ( ) ;
* ` ` `
*
* /
export interface Logger {
/ * *
* Determines whether sink is interested in the logger with the given name and severity .
* @param name logger name
* @param severity
* /
isEnabled ( name : string , severity : "verbose" | "info" | "warning" | "error" ) : boolean ;
/ * *
* @param name logger name
* @param severity
* @param message log message format
* @param args message arguments
* @param hints optional formatting hints
* /
log ( name : string , severity : "verbose" | "info" | "warning" | "error" , message : string | Error , args : Array < Object > , hints : {
/ * *
* Optional preferred logger color .
* /
color? : string ;
} ) : void ;
}
/ * *
* The Mouse class operates in main - frame CSS pixels relative to the top - left corner of the viewport .
*
* Every ` page ` object has its own Mouse , accessible with
* [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#page-mouse).
*
* ` ` ` js
* // Using ‘ page.mouse’ to trace a 100x100 square.
* await page . mouse . move ( 0 , 0 ) ;
* await page . mouse . down ( ) ;
* await page . mouse . move ( 0 , 100 ) ;
* await page . mouse . move ( 100 , 100 ) ;
* await page . mouse . move ( 100 , 0 ) ;
* await page . mouse . move ( 0 , 0 ) ;
* await page . mouse . up ( ) ;
* ` ` `
*
* /
export interface Mouse {
/ * *
* Shortcut for [ mouse . move ( x , y [ , options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-move),
* [ mouse . down ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-down),
* [ mouse . up ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-up).
* @param x
* @param y
* @param options
* /
click ( x : number , y : number , options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Shortcut for [ mouse . move ( x , y [ , options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-move),
* [ mouse . down ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-down),
* [ mouse . up ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-up),
* [ mouse . down ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-down) and
* [ mouse . up ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouse-up).
* @param x
* @param y
* @param options
* /
dblclick ( x : number , y : number , options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` mousedown ` event .
* @param options
* /
down ( options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` mousemove ` event .
* @param x
* @param y
* @param options
* /
move ( x : number , y : number , options ? : {
/ * *
* Defaults to 1 . Sends intermediate ` mousemove ` events .
* /
steps? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` mouseup ` event .
* @param options
* /
up ( options ? : {
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` wheel ` event .
*
* > NOTE : Wheel events may cause scrolling if they are not handled , and this method does not wait for the scrolling to
* finish before returning .
* @param deltaX Pixels to scroll horizontally .
* @param deltaY Pixels to scroll vertically .
* /
wheel ( deltaX : number , deltaY : number ) : Promise < void > ;
}
/ * *
* This object can be used to launch or connect to Chromium , returning instances of [ Browser ] .
* /
export const chromium : BrowserType ;
/ * *
* This object can be used to launch or connect to Firefox , returning instances of [ Browser ] .
* /
export const firefox : BrowserType ;
/ * *
* Exposes API that can be used for the Web API testing .
* /
export const request : APIRequest ;
/ * *
* Selectors can be used to install custom selector engines . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more
* information .
* /
export const selectors : Selectors ;
/ * *
* This object can be used to launch or connect to WebKit , returning instances of [ Browser ] .
* /
export const webkit : BrowserType ;
/ * *
* Whenever the page sends a request for a network resource the following sequence of events are emitted by [ Page ] :
* - [ page . on ( 'request' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request) emitted when the request is
* issued by the page .
* - [ page . on ( 'response' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-response) emitted when/if the response
* status and headers are received for the request .
* - [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-finished) emitted when
* the response body is downloaded and the request is complete .
*
* If request fails at some point , then instead of ` 'requestfinished' ` event ( and possibly instead of 'response' event ) ,
* the [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#page-event-request-failed) event is emitted.
*
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
* complete with ` 'requestfinished' ` event .
*
* If request gets a 'redirect' response , the request is successfully finished with the 'requestfinished' event , and a new
* request is issued to a redirected url .
* /
export interface Request {
/ * *
* An object with all the request HTTP headers associated with this request . The header names are lower - cased .
* /
allHeaders ( ) : Promise < { [ key : string ] : string ; } > ;
/ * *
* The method returns ` null ` unless this request has failed , as reported by ` requestfailed ` event .
*
* Example of logging of all the failed requests :
*
* ` ` ` js
* page . on ( 'requestfailed' , request = > {
* console . log ( request . url ( ) + ' ' + request . failure ( ) . errorText ) ;
* } ) ;
* ` ` `
*
* /
failure ( ) : null | {
/ * *
* Human - readable error message , e . g . ` 'net::ERR_FAILED' ` .
* /
errorText : string ;
} ;
/ * *
* Returns the [ Frame ] that initiated this request .
* /
frame ( ) : Frame ;
/ * *
* * * DEPRECATED * * Incomplete list of headers as seen by the rendering engine . Use
* [ request . allHeaders ( ) ] ( https : //playwright.dev/docs/api/class-request#request-all-headers) instead.
* @deprecated
* /
headers ( ) : { [ key : string ] : string ; } ;
/ * *
* An array with all the request HTTP headers associated with this request . Unlike
* [ request . allHeaders ( ) ] ( https : //playwright.dev/docs/api/class-request#request-all-headers), header names are NOT
* lower - cased . Headers with multiple entries , such as ` Set-Cookie ` , appear in the array multiple times .
* /
headersArray ( ) : Promise < Array < {
/ * *
* Name of the header .
* /
name : string ;
/ * *
* Value of the header .
* /
value : string ;
} >> ;
/ * *
* Returns the value of the header matching the name . The name is case insensitive .
* @param name Name of the header .
* /
headerValue ( name : string ) : Promise < null | string > ;
/ * *
* Whether this request is driving frame ' s navigation .
* /
isNavigationRequest ( ) : boolean ;
/ * *
* Request ' s method ( GET , POST , etc . )
* /
method ( ) : string ;
/ * *
* Request ' s post body , if any .
* /
postData ( ) : null | string ;
/ * *
* Request ' s post body in a binary form , if any .
* /
postDataBuffer ( ) : null | Buffer ;
/ * *
* Returns parsed request ' s body for ` form-urlencoded ` and JSON as a fallback if any .
*
* When the response is ` application/x-www-form-urlencoded ` then a key / value object of the values will be returned .
* Otherwise it will be parsed as JSON .
* /
postDataJSON ( ) : null | Serializable ;
/ * *
* Request that was redirected by the server to this one , if any .
*
* When the server responds with a redirect , Playwright creates a new [ Request ] object . The two requests are connected by
* ` redirectedFrom() ` and ` redirectedTo() ` methods . When multiple server redirects has happened , it is possible to
* construct the whole redirect chain by repeatedly calling ` redirectedFrom() ` .
*
* For example , if the website ` http://example.com ` redirects to ` https://example.com ` :
*
* ` ` ` js
* const response = await page . goto ( 'http://example.com' ) ;
* console . log ( response . request ( ) . redirectedFrom ( ) . url ( ) ) ; // 'http://example.com'
* ` ` `
*
* If the website ` https://google.com ` has no redirects :
*
* ` ` ` js
* const response = await page . goto ( 'https://google.com' ) ;
* console . log ( response . request ( ) . redirectedFrom ( ) ) ; // null
* ` ` `
*
* /
redirectedFrom ( ) : null | Request ;
/ * *
* New request issued by the browser if the server responded with redirect .
*
* This method is the opposite of
* [ request . redirectedFrom ( ) ] ( https : //playwright.dev/docs/api/class-request#request-redirected-from):
*
* ` ` ` js
* console . log ( request . redirectedFrom ( ) . redirectedTo ( ) === request ) ; // true
* ` ` `
*
* /
redirectedTo ( ) : null | Request ;
/ * *
* Contains the request ' s resource type as it was perceived by the rendering engine . ResourceType will be one of the
* following : ` document ` , ` stylesheet ` , ` image ` , ` media ` , ` font ` , ` script ` , ` texttrack ` , ` xhr ` , ` fetch ` , ` eventsource ` ,
* ` websocket ` , ` manifest ` , ` other ` .
* /
resourceType ( ) : string ;
/ * *
* Returns the matching [ Response ] object , or ` null ` if the response was not received due to error .
* /
response ( ) : Promise < null | Response > ;
/ * *
* Returns resource size information for given request .
* /
sizes ( ) : Promise < {
/ * *
* Size of the request body ( POST data payload ) in bytes . Set to 0 if there was no body .
* /
requestBodySize : number ;
/ * *
* Total number of bytes from the start of the HTTP request message until ( and including ) the double CRLF before the body .
* /
requestHeadersSize : number ;
/ * *
* Size of the received response body ( encoded ) in bytes .
* /
responseBodySize : number ;
/ * *
* Total number of bytes from the start of the HTTP response message until ( and including ) the double CRLF before the body .
* /
responseHeadersSize : number ;
} > ;
/ * *
* Returns resource timing information for given request . Most of the timing values become available upon the response ,
* ` responseEnd ` becomes available when request finishes . Find more information at
* [ Resource Timing API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming).
*
* ` ` ` js
* const [ request ] = await Promise . all ( [
* page . waitForEvent ( 'requestfinished' ) ,
* page . goto ( 'http://example.com' )
* ] ) ;
* console . log ( request . timing ( ) ) ;
* ` ` `
*
* /
timing ( ) : {
/ * *
* Request start time in milliseconds elapsed since January 1 , 1970 00 :00 : 00 UTC
* /
startTime : number ;
/ * *
* Time immediately before the browser starts the domain name lookup for the resource . The value is given in milliseconds
* relative to ` startTime ` , - 1 if not available .
* /
domainLookupStart : number ;
/ * *
* Time immediately after the browser starts the domain name lookup for the resource . The value is given in milliseconds
* relative to ` startTime ` , - 1 if not available .
* /
domainLookupEnd : number ;
/ * *
* Time immediately before the user agent starts establishing the connection to the server to retrieve the resource . The
* value is given in milliseconds relative to ` startTime ` , - 1 if not available .
* /
connectStart : number ;
/ * *
* Time immediately before the browser starts the handshake process to secure the current connection . The value is given in
* milliseconds relative to ` startTime ` , - 1 if not available .
* /
secureConnectionStart : number ;
/ * *
* Time immediately before the user agent starts establishing the connection to the server to retrieve the resource . The
* value is given in milliseconds relative to ` startTime ` , - 1 if not available .
* /
connectEnd : number ;
/ * *
* Time immediately before the browser starts requesting the resource from the server , cache , or local resource . The value
* is given in milliseconds relative to ` startTime ` , - 1 if not available .
* /
requestStart : number ;
/ * *
* Time immediately after the browser starts requesting the resource from the server , cache , or local resource . The value
* is given in milliseconds relative to ` startTime ` , - 1 if not available .
* /
responseStart : number ;
/ * *
* Time immediately after the browser receives the last byte of the resource or immediately before the transport connection
* is closed , whichever comes first . The value is given in milliseconds relative to ` startTime ` , - 1 if not available .
* /
responseEnd : number ;
} ;
/ * *
* URL of the request .
* /
url ( ) : string ;
}
/ * *
* [ Response ] class represents responses which are received by page .
* /
export interface Response {
/ * *
* An object with all the response HTTP headers associated with this response .
* /
allHeaders ( ) : Promise < { [ key : string ] : string ; } > ;
/ * *
* Returns the buffer with response body .
* /
body ( ) : Promise < Buffer > ;
/ * *
* Waits for this response to finish , returns always ` null ` .
* /
finished ( ) : Promise < null | Error > ;
/ * *
* Returns the [ Frame ] that initiated this response .
* /
frame ( ) : Frame ;
/ * *
* * * DEPRECATED * * Incomplete list of headers as seen by the rendering engine . Use
* [ response . allHeaders ( ) ] ( https : //playwright.dev/docs/api/class-response#response-all-headers) instead.
* @deprecated
* /
headers ( ) : { [ key : string ] : string ; } ;
/ * *
* An array with all the request HTTP headers associated with this response . Unlike
* [ response . allHeaders ( ) ] ( https : //playwright.dev/docs/api/class-response#response-all-headers), header names are NOT
* lower - cased . Headers with multiple entries , such as ` Set-Cookie ` , appear in the array multiple times .
* /
headersArray ( ) : Promise < Array < {
/ * *
* Name of the header .
* /
name : string ;
/ * *
* Value of the header .
* /
value : string ;
} >> ;
/ * *
* Returns the value of the header matching the name . The name is case insensitive . If multiple headers have the same name
* ( except ` set-cookie ` ) , they are returned as a list separated by ` , ` . For ` set-cookie ` , the ` \ n ` separator is used . If
* no headers are found , ` null ` is returned .
* @param name Name of the header .
* /
headerValue ( name : string ) : Promise < null | string > ;
/ * *
* Returns all values of the headers matching the name , for example ` set-cookie ` . The name is case insensitive .
* @param name Name of the header .
* /
headerValues ( name : string ) : Promise < Array < string > > ;
/ * *
* Returns the JSON representation of response body .
*
* This method will throw if the response body is not parsable via ` JSON.parse ` .
* /
json ( ) : Promise < Serializable > ;
/ * *
* Contains a boolean stating whether the response was successful ( status in the range 200 - 299 ) or not .
* /
ok ( ) : boolean ;
/ * *
* Returns the matching [ Request ] object .
* /
request ( ) : Request ;
/ * *
* Returns SSL and other security information .
* /
securityDetails ( ) : Promise < null | {
/ * *
* Common Name component of the Issuer field . from the certificate . This should only be used for informational purposes .
* Optional .
* /
issuer? : string ;
/ * *
* The specific TLS protocol used . ( e . g . ` TLS 1.3 ` ) . Optional .
* /
protocol? : string ;
/ * *
* Common Name component of the Subject field from the certificate . This should only be used for informational purposes .
* Optional .
* /
subjectName? : string ;
/ * *
* Unix timestamp ( in seconds ) specifying when this cert becomes valid . Optional .
* /
validFrom? : number ;
/ * *
* Unix timestamp ( in seconds ) specifying when this cert becomes invalid . Optional .
* /
validTo? : number ;
} > ;
/ * *
* Returns the IP address and port of the server .
* /
serverAddr ( ) : Promise < null | {
/ * *
* IPv4 or IPV6 address of the server .
* /
ipAddress : string ;
port : number ;
} > ;
/ * *
* Contains the status code of the response ( e . g . , 200 for a success ) .
* /
status ( ) : number ;
/ * *
* Contains the status text of the response ( e . g . usually an "OK" for a success ) .
* /
statusText ( ) : string ;
/ * *
* Returns the text representation of response body .
* /
text ( ) : Promise < string > ;
/ * *
* Contains the URL of the response .
* /
url ( ) : string ;
}
/ * *
* Whenever a network route is set up with
* [ 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),
* the ` Route ` object allows to handle the route .
2022-05-11 17:07:00 +02:00
*
* Learn more about [ networking ] ( https : //playwright.dev/docs/network).
2022-04-14 01:13:30 +02:00
* /
export interface Route {
/ * *
* Aborts the route ' s request .
* @param errorCode Optional error code . Defaults to ` failed ` , could be one of the following : - ` 'aborted' ` - An operation was aborted ( due to user action )
* - ` 'accessdenied' ` - Permission to access a resource , other than the network , was denied
* - ` 'addressunreachable' ` - The IP address is unreachable . This usually means that there is no route to the specified
* host or network .
* - ` 'blockedbyclient' ` - The client chose to block the request .
* - ` 'blockedbyresponse' ` - The request failed because the response was delivered along with requirements which are not
* met ( 'X-Frame-Options' and 'Content-Security-Policy' ancestor checks , for instance ) .
* - ` 'connectionaborted' ` - A connection timed out as a result of not receiving an ACK for data sent .
* - ` 'connectionclosed' ` - A connection was closed ( corresponding to a TCP FIN ) .
* - ` 'connectionfailed' ` - A connection attempt failed .
* - ` 'connectionrefused' ` - A connection attempt was refused .
* - ` 'connectionreset' ` - A connection was reset ( corresponding to a TCP RST ) .
* - ` 'internetdisconnected' ` - The Internet connection has been lost .
* - ` 'namenotresolved' ` - The host name could not be resolved .
* - ` 'timedout' ` - An operation timed out .
* - ` 'failed' ` - A generic failure occurred .
* /
abort ( errorCode? : string ) : Promise < void > ;
/ * *
* Continues route ' s request with optional overrides .
*
* ` ` ` js
* await page . route ( '**\/*' , ( route , request ) = > {
* // Override headers
* const headers = {
* . . . request . headers ( ) ,
* foo : 'bar' , // set "foo" header
* origin : undefined , // remove "origin" header
* } ;
* route . continue ( { headers } ) ;
* } ) ;
* ` ` `
*
* @param options
* /
continue ( options ? : {
/ * *
* If set changes the request HTTP headers . Header values will be converted to a string .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* If set changes the request method ( e . g . GET or POST )
* /
method? : string ;
/ * *
* If set changes the post data of request
* /
postData? : string | Buffer ;
/ * *
* If set changes the request URL . New URL must have same protocol as original one .
* /
url? : string ;
} ) : Promise < void > ;
/ * *
* Fulfills route ' s request with given response .
*
* An example of fulfilling all requests with 404 responses :
*
* ` ` ` js
* await page . route ( '**\/*' , route = > {
* route . fulfill ( {
* status : 404 ,
* contentType : 'text/plain' ,
* body : 'Not Found!'
* } ) ;
* } ) ;
* ` ` `
*
* An example of serving static file :
*
* ` ` ` js
* await page . route ( '**\/xhr_endpoint' , route = > route . fulfill ( { path : 'mock_data.json' } ) ) ;
* ` ` `
*
* @param options
* /
fulfill ( options ? : {
/ * *
* Response body .
* /
body? : string | Buffer ;
/ * *
* If set , equals to setting ` Content-Type ` response header .
* /
contentType? : string ;
/ * *
* Response headers . Header values will be converted to a string .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* File path to respond with . The content type will be inferred from file extension . If ` path ` is a relative path , then it
* is resolved relative to the current working directory .
* /
path? : string ;
/ * *
* [ APIResponse ] to fulfill route ' s request with . Individual fields of the response ( such as headers ) can be overridden
* using fulfill options .
* /
response? : APIResponse ;
/ * *
* Response status code , defaults to ` 200 ` .
* /
status? : number ;
} ) : Promise < void > ;
/ * *
* A request to be routed .
* /
request ( ) : Request ;
}
/ * *
* Selectors can be used to install custom selector engines . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more
* information .
* /
export interface Selectors {
/ * *
* An example of registering selector engine that queries elements based on a tag name :
*
* ` ` ` js
* const { selectors , firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* // Must be a function that evaluates to a selector engine instance.
* const createTagNameEngine = ( ) = > ( {
* // Returns the first element matching given selector in the root's subtree.
* query ( root , selector ) {
* return root . querySelector ( selector ) ;
* } ,
*
* // Returns all elements matching given selector in the root's subtree.
* queryAll ( root , selector ) {
* return Array . from ( root . querySelectorAll ( selector ) ) ;
* }
* } ) ;
*
* // Register the engine. Selectors will be prefixed with "tag=".
* await selectors . register ( 'tag' , createTagNameEngine ) ;
*
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . setContent ( ` <div><button>Click me</button></div> ` ) ;
*
* // Use the selector prefixed with its name.
* const button = page . locator ( 'tag=button' ) ;
* // Combine it with other selector engines.
* await page . click ( 'tag=div >> text="Click me"' ) ;
* // Can use it in any methods supporting selectors.
* const buttonCount = await page . locator ( 'tag=button' ) . count ( ) ;
*
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
*
* @param name Name that is used in selectors as a prefix , e . g . ` {name: 'foo'} ` enables ` foo=myselectorbody ` selectors . May only contain ` [a-zA-Z0-9_] ` characters .
* @param script Script that evaluates to a selector engine instance .
* @param options
* /
register ( name : string , script : Function | string | {
/ * *
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
* /
path? : string ;
/ * *
* Raw script content . Optional .
* /
content? : string ;
} , options ? : {
/ * *
* Whether to run this selector engine in isolated JavaScript environment . This environment has access to the same DOM , but
* not any JavaScript objects from the frame ' s scripts . Defaults to ` false ` . Note that running as a content script is not
* guaranteed when this engine is used together with other registered engines .
* /
contentScript? : boolean ;
} ) : Promise < void > ;
}
/ * *
* The Touchscreen class operates in main - frame CSS pixels relative to the top - left corner of the viewport . Methods on the
* touchscreen can only be used in browser contexts that have been initialized with ` hasTouch ` set to true .
* /
export interface Touchscreen {
/ * *
* Dispatches a ` touchstart ` and ` touchend ` event with a single touch at the position ( ` x ` , ` y ` ) .
* @param x
* @param y
* /
tap ( x : number , y : number ) : Promise < void > ;
}
/ * *
* API for collecting and saving Playwright traces . Playwright traces can be opened in [ Trace Viewer ] ( https : //playwright.dev/docs/trace-viewer)
* after Playwright script runs .
*
* Start recording a trace before performing actions . At the end , stop tracing and save it to a file .
*
* ` ` ` js
* const browser = await chromium . launch ( ) ;
* const context = await browser . newContext ( ) ;
* await context . tracing . start ( { screenshots : true , snapshots : true } ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://playwright.dev' ) ;
* await context . tracing . stop ( { path : 'trace.zip' } ) ;
* ` ` `
*
* /
export interface Tracing {
/ * *
* Start tracing .
*
* ` ` ` js
* await context . tracing . start ( { screenshots : true , snapshots : true } ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://playwright.dev' ) ;
* await context . tracing . stop ( { path : 'trace.zip' } ) ;
* ` ` `
*
* @param options
* /
start ( options ? : {
/ * *
* If specified , the trace is going to be saved into the file with the given name inside the ` tracesDir ` folder specified
* in [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-launch).
* /
name? : string ;
/ * *
* Whether to capture screenshots during tracing . Screenshots are used to build a timeline preview .
* /
screenshots? : boolean ;
/ * *
* If this option is true tracing will
* - capture DOM snapshot on every action
* - record network activity
* /
snapshots? : boolean ;
/ * *
* Whether to include source files for trace actions .
* /
sources? : boolean ;
/ * *
* Trace name to be shown in the Trace Viewer .
* /
title? : string ;
} ) : Promise < void > ;
/ * *
* Start a new trace chunk . If you ' d like to record multiple traces on the same [ BrowserContext ] , use
* [ tracing . start ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-tracing#tracing-start) once, and then create multiple
* trace chunks with [ tracing . startChunk ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-tracing#tracing-start-chunk) and
* [ tracing . stopChunk ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-tracing#tracing-stop-chunk).
*
* ` ` ` js
* await context . tracing . start ( { screenshots : true , snapshots : true } ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://playwright.dev' ) ;
*
* await context . tracing . startChunk ( ) ;
* await page . click ( 'text=Get Started' ) ;
* // Everything between startChunk and stopChunk will be recorded in the trace.
* await context . tracing . stopChunk ( { path : 'trace1.zip' } ) ;
*
* await context . tracing . startChunk ( ) ;
* await page . goto ( 'http://example.com' ) ;
* // Save a second trace file with different actions.
* await context . tracing . stopChunk ( { path : 'trace2.zip' } ) ;
* ` ` `
*
* @param options
* /
startChunk ( options ? : {
/ * *
* Trace name to be shown in the Trace Viewer .
* /
title? : string ;
} ) : Promise < void > ;
/ * *
* Stop tracing .
* @param options
* /
stop ( options ? : {
/ * *
* Export trace into the file with the given path .
* /
path? : string ;
} ) : Promise < void > ;
/ * *
* Stop the trace chunk . See
* [ tracing . startChunk ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-tracing#tracing-start-chunk) for more details
* about multiple trace chunks .
* @param options
* /
stopChunk ( options ? : {
/ * *
* Export trace collected since the last
* [ tracing . startChunk ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-tracing#tracing-start-chunk) call into the file
* with the given path .
* /
path? : string ;
} ) : Promise < void > ;
}
/ * *
* When browser context is created with the ` recordVideo ` option , each page has a video object associated with it .
*
* ` ` ` js
* console . log ( await page . video ( ) . path ( ) ) ;
* ` ` `
*
* /
export interface Video {
/ * *
* Deletes the video file . Will wait for the video to finish if necessary .
* /
delete ( ) : Promise < void > ;
/ * *
* Returns the file system path this video will be recorded to . The video is guaranteed to be written to the filesystem
* upon closing the browser context . This method throws when connected remotely .
* /
path ( ) : Promise < string > ;
/ * *
* Saves the video to a user - specified path . It is safe to call this method while the video is still in progress , or after
* the page has closed . This method waits until the page is closed and the video is fully saved .
* @param path Path where the video should be saved .
* /
saveAs ( path : string ) : Promise < void > ;
}
/ * *
* The [ WebSocket ] class represents websocket connections in the page .
* /
export interface WebSocket {
/ * *
* Fired when the websocket closes .
* /
on ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
* Fired when the websocket receives a frame .
* /
on ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
on ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
on ( event : 'socketerror' , listener : ( string : String ) = > void ) : 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 ;
/ * *
* Adds an event listener that will be automatically removed after it is triggered once . See ` addListener ` for more information about this event .
* /
once ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : 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 : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : 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 ;
/ * *
* Fired when the websocket closes .
* /
addListener ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
* Fired when the websocket receives a frame .
* /
addListener ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
addListener ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
addListener ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
removeListener ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Removes an event listener added by ` on ` or ` addListener ` .
* /
off ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Indicates that the web socket has been closed .
* /
isClosed ( ) : boolean ;
/ * *
* Contains the URL of the WebSocket .
* /
url ( ) : string ;
/ * *
* Fired when the websocket closes .
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( webSocket : WebSocket ) = > boolean | Promise < boolean > , timeout? : number } | ( ( webSocket : WebSocket ) = > boolean | Promise < boolean > ) ) : Promise < WebSocket > ;
/ * *
* Fired when the websocket receives a frame .
* /
waitForEvent ( event : 'framereceived' , optionsOrPredicate ? : { predicate ? : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean | Promise < boolean > , timeout? : number } | ( ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean | Promise < boolean > ) ) : Promise < {
/ * *
* frame payload
* /
payload : string | Buffer ;
} > ;
/ * *
* Fired when the websocket sends a frame .
* /
waitForEvent ( event : 'framesent' , optionsOrPredicate ? : { predicate ? : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean | Promise < boolean > , timeout? : number } | ( ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean | Promise < boolean > ) ) : Promise < {
/ * *
* frame payload
* /
payload : string | Buffer ;
} > ;
/ * *
* Fired when the websocket has an error .
* /
waitForEvent ( event : 'socketerror' , optionsOrPredicate ? : { predicate ? : ( string : String ) = > boolean | Promise < boolean > , timeout? : number } | ( ( string : String ) = > boolean | Promise < boolean > ) ) : Promise < String > ;
}
export interface BrowserContextOptions {
/ * *
* Whether to automatically download all the attachments . Defaults to ` true ` where all the downloads are accepted .
* /
acceptDownloads? : boolean ;
/ * *
* When using [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto),
* [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route),
* [ page . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-url),
* [ page . waitForRequest ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-request), or
* [ page . waitForResponse ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-response) it
* takes the base URL in consideration by using the [ ` URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL)
* constructor for building the corresponding URL . Examples :
* - baseURL : ` http://localhost:3000 ` and navigating to ` /bar.html ` results in ` http://localhost:3000/bar.html `
* - baseURL : ` http://localhost:3000/foo/ ` and navigating to ` ./bar.html ` results in ` http://localhost:3000/foo/bar.html `
* - baseURL : ` http://localhost:3000/foo ` ( without trailing slash ) and navigating to ` ./bar.html ` results in
* ` http://localhost:3000/bar.html `
* /
baseURL? : string ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'light' ` .
* /
colorScheme ? : "light" | "dark" | "no-preference" ;
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
/ * *
* Emulates ` 'forced-colors' ` media feature , supported values are ` 'active' ` , ` 'none' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'none' ` .
*
* > NOTE : It ' s not supported in WebKit , see [ here ] ( https : //bugs.webkit.org/show_bug.cgi?id=225281) in their issue tracker.
* /
forcedColors ? : "active" | "none" ;
geolocation? : Geolocation ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials? : HTTPCredentials ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
* A list of permissions to grant to all pages in this context . See
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
* for more details .
* /
permissions? : Array < string > ;
/ * *
* Network proxy settings to use with this context .
*
* > NOTE : For Chromium on Windows the browser needs to be launched with the global proxy for this option to work . If all
* contexts override the proxy , global proxy will be never used and can be any string , for example ` launch({ proxy: {
* server : 'http://per-context' } } ) ` .
* /
proxy ? : {
/ * *
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
* /
server : string ;
/ * *
* Optional comma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for the HAR to be
* saved .
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-close) for
* videos to be saved .
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . Actual picture of each page
* will be scaled down if necessary to fit the specified size .
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
* Emulates ` 'prefers-reduced-motion' ` media feature , supported values are ` 'reduce' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'no-preference' ` .
* /
reducedMotion ? : "reduce" | "no-preference" ;
/ * *
* Emulates consistent window screen size available inside web page via ` window.screen ` . Is only used when the ` viewport `
* is set .
* /
screen ? : {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
/ * *
* Populates context with given storage state . This option can be used to initialize context with logged - in information
* obtained via
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-storage-state).
* Either a path to the file with saved storage , or an object with the following fields :
* /
storageState? : string | {
/ * *
* cookies to set for context
* /
cookies : Array < {
name : string ;
value : string ;
/ * *
* domain and path are required
* /
domain : string ;
/ * *
* domain and path are required
* /
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
/ * *
* sameSite flag
* /
sameSite : "Strict" | "Lax" | "None" ;
} > ;
/ * *
* localStorage to set for context
* /
origins : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} ;
/ * *
* It specified , enables strict selectors mode for this context . In the strict selectors mode all operations on selectors
* that imply single target DOM element will throw when more than one element matches the selector . See [ Locator ] to learn
* more about the strict mode .
* /
strictSelectors? : boolean ;
/ * *
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
* /
timezoneId? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
* /
videosPath? : string ;
/ * *
* Emulates consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | ViewportSize ;
}
export interface ViewportSize {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
}
export interface HTTPCredentials {
username : string ;
password : string ;
}
export interface Geolocation {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
}
interface AccessibilitySnapshotOptions {
/ * *
* Prune uninteresting nodes from the tree . Defaults to ` true ` .
* /
interestingOnly? : boolean ;
/ * *
* The root DOM element for the snapshot . Defaults to the whole page .
* /
root? : ElementHandle ;
}
export interface LaunchOptions {
/ * *
* Additional arguments to pass to the browser instance . The list of Chromium flags can be found
* [ here ] ( http : //peter.sh/experiments/chromium-command-line-switches/).
* /
args? : Array < string > ;
/ * *
* Browser distribution channel . Supported values are "chrome" , "chrome-beta" , "chrome-dev" , "chrome-canary" , "msedge" ,
* "msedge-beta" , "msedge-dev" , "msedge-canary" . Read more about using
* [ Google Chrome and Microsoft Edge ] ( https : //playwright.dev/docs/browsers#google-chrome--microsoft-edge).
* /
channel? : string ;
/ * *
* Enable Chromium sandboxing . Defaults to ` false ` .
* /
chromiumSandbox? : boolean ;
/ * *
* * * Chromium - only * * Whether to auto - open a Developer Tools panel for each tab . If this option is ` true ` , the ` headless `
* option will be set ` false ` .
* /
devtools? : boolean ;
/ * *
* If specified , accepted downloads are downloaded into this directory . Otherwise , temporary directory is created and is
* deleted when browser is closed . In either case , the downloads are deleted when the browser context they were created in
* is closed .
* /
downloadsPath? : string ;
/ * *
* Specify environment variables that will be visible to the browser . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Path to a browser executable to run instead of the bundled one . If ` executablePath ` is a relative path , then it is
* resolved relative to the current working directory . Note that Playwright only works with the bundled Chromium , Firefox
* or WebKit , use at your own risk .
* /
executablePath? : string ;
/ * *
* Firefox user preferences . Learn more about the Firefox user preferences at
* [ ` about:config ` ] ( https : //support.mozilla.org/en-US/kb/about-config-editor-firefox).
* /
firefoxUserPrefs ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Close the browser process on SIGHUP . Defaults to ` true ` .
* /
handleSIGHUP? : boolean ;
/ * *
* Close the browser process on Ctrl - C . Defaults to ` true ` .
* /
handleSIGINT? : boolean ;
/ * *
* Close the browser process on SIGTERM . Defaults to ` true ` .
* /
handleSIGTERM? : boolean ;
/ * *
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
* /
headless? : boolean ;
/ * *
* If ` true ` , Playwright does not pass its own configurations args and only uses the ones from ` args ` . If an array is
* given , then filters out the given default arguments . Dangerous option ; use with care . Defaults to ` false ` .
* /
ignoreDefaultArgs? : boolean | Array < string > ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
* /
server : string ;
/ * *
* Optional comma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* /
slowMo? : number ;
/ * *
* Maximum time in milliseconds to wait for the browser instance to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
* /
timeout? : number ;
/ * *
* If specified , traces are saved into this directory .
* /
tracesDir? : string ;
}
export interface ConnectOverCDPOptions {
/ * *
* Deprecated , use the first argument instead . Optional .
* /
endpointURL? : string ;
/ * *
* Additional HTTP headers to be sent with connect request . Optional .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Logger sink for Playwright logging . Optional .
* /
logger? : Logger ;
/ * *
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* Defaults to 0 .
* /
slowMo? : number ;
/ * *
* Maximum time in milliseconds to wait for the connection to be established . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
* /
timeout? : number ;
}
export interface ConnectOptions {
/ * *
* Additional HTTP headers to be sent with web socket connect request . Optional .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Logger sink for Playwright logging . Optional .
* /
logger? : Logger ;
/ * *
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* Defaults to 0 .
* /
slowMo? : number ;
/ * *
* Maximum time in milliseconds to wait for the connection to be established . Defaults to ` 0 ` ( no timeout ) .
* /
timeout? : number ;
}
export interface LocatorScreenshotOptions {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
* Defaults to ` "allow" ` that leaves animations untouched .
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* The file path to save the image to . The screenshot type will be inferred from file extension . If ` path ` is a relative
* path , then it is resolved relative to the current working directory . If no path is provided , the image won ' t be saved to
* the disk .
* /
path? : string ;
/ * *
* The quality of the image , between 0 - 100 . Not applicable to ` png ` images .
* /
quality? : number ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "device" ` .
2022-04-14 01:13:30 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* Specify screenshot type , defaults to ` png ` .
* /
type ? : "png" | "jpeg" ;
}
interface ElementHandleWaitForSelectorOptions {
/ * *
* Defaults to ` 'visible' ` . Can be either :
* - ` 'attached' ` - wait for element to be present in DOM .
* - ` 'detached' ` - wait for element to not be present in DOM .
* - ` 'visible' ` - wait for element to have non - empty bounding box and no ` visibility:hidden ` . Note that element without
* any content or with ` display:none ` has an empty bounding box and is not considered visible .
* - ` 'hidden' ` - wait for element to be either detached from DOM , or have an empty bounding box or ` visibility:hidden ` .
* This is opposite to the ` 'visible' ` option .
* /
state ? : "attached" | "detached" | "visible" | "hidden" ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
}
export interface Cookie {
name : string ;
value : string ;
domain : string ;
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
sameSite : "Strict" | "Lax" | "None" ;
}
interface PageWaitForSelectorOptions {
/ * *
* Defaults to ` 'visible' ` . Can be either :
* - ` 'attached' ` - wait for element to be present in DOM .
* - ` 'detached' ` - wait for element to not be present in DOM .
* - ` 'visible' ` - wait for element to have non - empty bounding box and no ` visibility:hidden ` . Note that element without
* any content or with ` display:none ` has an empty bounding box and is not considered visible .
* - ` 'hidden' ` - wait for element to be either detached from DOM , or have an empty bounding box or ` visibility:hidden ` .
* This is opposite to the ` 'visible' ` option .
* /
state ? : "attached" | "detached" | "visible" | "hidden" ;
/ * *
* When true , the call requires selector to resolve to a single element . If given selector resolves to more then one
* element , the call throws an exception .
* /
strict? : boolean ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
}
interface PageWaitForFunctionOptions {
/ * *
* If ` polling ` is ` 'raf' ` , then ` pageFunction ` is constantly executed in ` requestAnimationFrame ` callback . If ` polling ` is
* a number , then it is treated as an interval in milliseconds at which the function would be executed . Defaults to ` raf ` .
* /
polling? : number | "raf" ;
/ * *
* maximum time to wait for in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout . The default
* value can be changed by using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout).
* /
timeout? : number ;
}
export interface PageScreenshotOptions {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
* Defaults to ` "allow" ` that leaves animations untouched .
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* An object which specifies clipping of the resulting image . Should have the following fields :
* /
clip ? : {
/ * *
* x - coordinate of top - left corner of clip area
* /
x : number ;
/ * *
* y - coordinate of top - left corner of clip area
* /
y : number ;
/ * *
* width of clipping area
* /
width : number ;
/ * *
* height of clipping area
* /
height : number ;
} ;
/ * *
* When true , takes a screenshot of the full scrollable page , instead of the currently visible viewport . Defaults to
* ` false ` .
* /
fullPage? : boolean ;
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* The file path to save the image to . The screenshot type will be inferred from file extension . If ` path ` is a relative
* path , then it is resolved relative to the current working directory . If no path is provided , the image won ' t be saved to
* the disk .
* /
path? : string ;
/ * *
* The quality of the image , between 0 - 100 . Not applicable to ` png ` images .
* /
quality? : number ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "device" ` .
2022-04-14 01:13:30 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
* /
timeout? : number ;
/ * *
* Specify screenshot type , defaults to ` png ` .
* /
type ? : "png" | "jpeg" ;
}
type Devices = {
"Blackberry PlayBook" : DeviceDescriptor ;
"Blackberry PlayBook landscape" : DeviceDescriptor ;
"BlackBerry Z30" : DeviceDescriptor ;
"BlackBerry Z30 landscape" : DeviceDescriptor ;
"Galaxy Note 3" : DeviceDescriptor ;
"Galaxy Note 3 landscape" : DeviceDescriptor ;
"Galaxy Note II" : DeviceDescriptor ;
"Galaxy Note II landscape" : DeviceDescriptor ;
"Galaxy S III" : DeviceDescriptor ;
"Galaxy S III landscape" : DeviceDescriptor ;
"Galaxy S5" : DeviceDescriptor ;
"Galaxy S5 landscape" : DeviceDescriptor ;
"Galaxy S8" : DeviceDescriptor ;
"Galaxy S8 landscape" : DeviceDescriptor ;
"Galaxy S9+" : DeviceDescriptor ;
"Galaxy S9+ landscape" : DeviceDescriptor ;
"Galaxy Tab S4" : DeviceDescriptor ;
"Galaxy Tab S4 landscape" : DeviceDescriptor ;
"iPad (gen 6)" : DeviceDescriptor ;
"iPad (gen 6) landscape" : DeviceDescriptor ;
"iPad (gen 7)" : DeviceDescriptor ;
"iPad (gen 7) landscape" : DeviceDescriptor ;
"iPad Mini" : DeviceDescriptor ;
"iPad Mini landscape" : DeviceDescriptor ;
"iPad Pro 11" : DeviceDescriptor ;
"iPad Pro 11 landscape" : DeviceDescriptor ;
"iPhone 6" : DeviceDescriptor ;
"iPhone 6 landscape" : DeviceDescriptor ;
"iPhone 6 Plus" : DeviceDescriptor ;
"iPhone 6 Plus landscape" : DeviceDescriptor ;
"iPhone 7" : DeviceDescriptor ;
"iPhone 7 landscape" : DeviceDescriptor ;
"iPhone 7 Plus" : DeviceDescriptor ;
"iPhone 7 Plus landscape" : DeviceDescriptor ;
"iPhone 8" : DeviceDescriptor ;
"iPhone 8 landscape" : DeviceDescriptor ;
"iPhone 8 Plus" : DeviceDescriptor ;
"iPhone 8 Plus landscape" : DeviceDescriptor ;
"iPhone SE" : DeviceDescriptor ;
"iPhone SE landscape" : DeviceDescriptor ;
"iPhone X" : DeviceDescriptor ;
"iPhone X landscape" : DeviceDescriptor ;
"iPhone XR" : DeviceDescriptor ;
"iPhone XR landscape" : DeviceDescriptor ;
"iPhone 11" : DeviceDescriptor ;
"iPhone 11 landscape" : DeviceDescriptor ;
"iPhone 11 Pro" : DeviceDescriptor ;
"iPhone 11 Pro landscape" : DeviceDescriptor ;
"iPhone 11 Pro Max" : DeviceDescriptor ;
"iPhone 11 Pro Max landscape" : DeviceDescriptor ;
"iPhone 12" : DeviceDescriptor ;
"iPhone 12 landscape" : DeviceDescriptor ;
"iPhone 12 Pro" : DeviceDescriptor ;
"iPhone 12 Pro landscape" : DeviceDescriptor ;
"iPhone 12 Pro Max" : DeviceDescriptor ;
"iPhone 12 Pro Max landscape" : DeviceDescriptor ;
"iPhone 12 Mini" : DeviceDescriptor ;
"iPhone 12 Mini landscape" : DeviceDescriptor ;
"iPhone 13" : DeviceDescriptor ;
"iPhone 13 landscape" : DeviceDescriptor ;
"iPhone 13 Pro" : DeviceDescriptor ;
"iPhone 13 Pro landscape" : DeviceDescriptor ;
"iPhone 13 Pro Max" : DeviceDescriptor ;
"iPhone 13 Pro Max landscape" : DeviceDescriptor ;
"iPhone 13 Mini" : DeviceDescriptor ;
"iPhone 13 Mini landscape" : DeviceDescriptor ;
"JioPhone 2" : DeviceDescriptor ;
"JioPhone 2 landscape" : DeviceDescriptor ;
"Kindle Fire HDX" : DeviceDescriptor ;
"Kindle Fire HDX landscape" : DeviceDescriptor ;
"LG Optimus L70" : DeviceDescriptor ;
"LG Optimus L70 landscape" : DeviceDescriptor ;
"Microsoft Lumia 550" : DeviceDescriptor ;
"Microsoft Lumia 550 landscape" : DeviceDescriptor ;
"Microsoft Lumia 950" : DeviceDescriptor ;
"Microsoft Lumia 950 landscape" : DeviceDescriptor ;
"Nexus 10" : DeviceDescriptor ;
"Nexus 10 landscape" : DeviceDescriptor ;
"Nexus 4" : DeviceDescriptor ;
"Nexus 4 landscape" : DeviceDescriptor ;
"Nexus 5" : DeviceDescriptor ;
"Nexus 5 landscape" : DeviceDescriptor ;
"Nexus 5X" : DeviceDescriptor ;
"Nexus 5X landscape" : DeviceDescriptor ;
"Nexus 6" : DeviceDescriptor ;
"Nexus 6 landscape" : DeviceDescriptor ;
"Nexus 6P" : DeviceDescriptor ;
"Nexus 6P landscape" : DeviceDescriptor ;
"Nexus 7" : DeviceDescriptor ;
"Nexus 7 landscape" : DeviceDescriptor ;
"Nokia Lumia 520" : DeviceDescriptor ;
"Nokia Lumia 520 landscape" : DeviceDescriptor ;
"Nokia N9" : DeviceDescriptor ;
"Nokia N9 landscape" : DeviceDescriptor ;
"Pixel 2" : DeviceDescriptor ;
"Pixel 2 landscape" : DeviceDescriptor ;
"Pixel 2 XL" : DeviceDescriptor ;
"Pixel 2 XL landscape" : DeviceDescriptor ;
"Pixel 3" : DeviceDescriptor ;
"Pixel 3 landscape" : DeviceDescriptor ;
"Pixel 4" : DeviceDescriptor ;
"Pixel 4 landscape" : DeviceDescriptor ;
"Pixel 4a (5G)" : DeviceDescriptor ;
"Pixel 4a (5G) landscape" : DeviceDescriptor ;
"Pixel 5" : DeviceDescriptor ;
"Pixel 5 landscape" : DeviceDescriptor ;
"Moto G4" : DeviceDescriptor ;
"Moto G4 landscape" : DeviceDescriptor ;
"Desktop Chrome HiDPI" : DeviceDescriptor ;
"Desktop Edge HiDPI" : DeviceDescriptor ;
"Desktop Firefox HiDPI" : DeviceDescriptor ;
"Desktop Safari" : DeviceDescriptor ;
"Desktop Chrome" : DeviceDescriptor ;
"Desktop Edge" : DeviceDescriptor ;
"Desktop Firefox" : DeviceDescriptor ;
[ key : string ] : DeviceDescriptor ;
}
export interface ChromiumBrowserContext extends BrowserContext { }
export interface ChromiumBrowser extends Browser { }
export interface FirefoxBrowser extends Browser { }
export interface WebKitBrowser extends Browser { }
export interface ChromiumCoverage extends Coverage { }
}
declare module '@playwright/test' {
// This file is generated by /utils/generate_types/index.js
/ * *
* Copyright ( c ) Microsoft Corporation .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
import type { APIRequestContext , Browser , BrowserContext , BrowserContextOptions , Page , LaunchOptions , ViewportSize , Geolocation , HTTPCredentials , Locator , APIResponse } from 'playwright-core' ;
export * from 'playwright-core' ;
export type ReporterDescription =
[ 'dot' ] |
[ 'line' ] |
[ 'list' ] |
[ 'github' ] |
[ 'junit' ] | [ 'junit' , { outputFile? : string , stripANSIControlSequences? : boolean } ] |
[ 'json' ] | [ 'json' , { outputFile? : string } ] |
[ 'html' ] | [ 'html' , { outputFolder? : string , open ? : 'always' | 'never' | 'on-failure' } ] |
[ 'null' ] |
[ string ] | [ string , any ] ;
type UseOptions < TestArgs , WorkerArgs > = { [ K in keyof WorkerArgs ] ? : WorkerArgs [ K ] } & { [ K in keyof TestArgs ] ? : TestArgs [ K ] } ;
/ * *
* Playwright Test supports running multiple test projects at the same time . This is useful for running tests in multiple
* configurations . For example , consider running tests against multiple browsers .
*
* ` TestProject ` encapsulates configuration specific to a single project . Projects are configured in
* [ testConfig . projects ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-projects) specified in the
* [ configuration file ] ( https : //playwright.dev/docs/test-configuration). Note that all properties of [TestProject] are available in the top-level
* [ TestConfig ] , in which case they are shared between all projects .
*
* Here is an example configuration that runs every test in Chromium , Firefox and WebKit , both Desktop and Mobile versions .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* // Options shared for all projects.
* timeout : 30000 ,
* use : {
* ignoreHTTPSErrors : true ,
* } ,
*
* // Options specific to each project.
* projects : [
* {
* name : 'Desktop Chromium' ,
* use : {
* browserName : 'chromium' ,
* viewport : { width : 1280 , height : 720 } ,
* } ,
* } ,
* {
* name : 'Desktop Safari' ,
* use : {
* browserName : 'webkit' ,
* viewport : { width : 1280 , height : 720 } ,
* }
* } ,
* {
* name : 'Desktop Firefox' ,
* use : {
* browserName : 'firefox' ,
* viewport : { width : 1280 , height : 720 } ,
* }
* } ,
* {
* name : 'Mobile Chrome' ,
* use : devices [ 'Pixel 5' ] ,
* } ,
* {
* name : 'Mobile Safari' ,
* use : devices [ 'iPhone 12' ] ,
* } ,
* ] ,
* } ;
* export default config ;
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
export interface Project < TestArgs = {} , WorkerArgs = { } > extends TestProject {
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Options for all tests in this project , for example
* [ testOptions . browserName ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-browser-name). Learn more about
* [ configuration ] ( https : //playwright.dev/docs/test-configuration) and see [available options][TestOptions].
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* projects : [
* {
* name : 'Chromium' ,
* use : {
* browserName : 'chromium' ,
* } ,
* } ,
* ] ,
* } ;
* export default config ;
* ` ` `
*
* Use [ testConfig . use ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-use) to change this option for all
* projects .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
use? : UseOptions < TestArgs , WorkerArgs > ;
}
/ * *
* Playwright Test supports running multiple test projects at the same time . This is useful for running tests in multiple
* configurations . For example , consider running tests against multiple browsers .
*
* ` TestProject ` encapsulates configuration specific to a single project . Projects are configured in
* [ testConfig . projects ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-projects) specified in the
* [ configuration file ] ( https : //playwright.dev/docs/test-configuration). Note that all properties of [TestProject] are available in the top-level
* [ TestConfig ] , in which case they are shared between all projects .
*
* Here is an example configuration that runs every test in Chromium , Firefox and WebKit , both Desktop and Mobile versions .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* // Options shared for all projects.
* timeout : 30000 ,
* use : {
* ignoreHTTPSErrors : true ,
* } ,
*
* // Options specific to each project.
* projects : [
* {
* name : 'Desktop Chromium' ,
* use : {
* browserName : 'chromium' ,
* viewport : { width : 1280 , height : 720 } ,
* } ,
* } ,
* {
* name : 'Desktop Safari' ,
* use : {
* browserName : 'webkit' ,
* viewport : { width : 1280 , height : 720 } ,
* }
* } ,
* {
* name : 'Desktop Firefox' ,
* use : {
* browserName : 'firefox' ,
* viewport : { width : 1280 , height : 720 } ,
* }
* } ,
* {
* name : 'Mobile Chrome' ,
* use : devices [ 'Pixel 5' ] ,
* } ,
* {
* name : 'Mobile Safari' ,
* use : devices [ 'iPhone 12' ] ,
* } ,
* ] ,
* } ;
* export default config ;
* ` ` `
*
* /
export interface FullProject < TestArgs = {} , WorkerArgs = { } > {
2022-04-14 01:13:30 +02:00
/ * *
* Filter to only run tests with a title matching one of the patterns . For example , passing ` grep: /cart/ ` should only run
* tests with "cart" in the title . Also available globally and in the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `-g` option.
*
* ` grep ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
2022-04-15 19:27:38 +02:00
grep : RegExp | RegExp [ ] ;
2022-04-14 01:13:30 +02:00
/ * *
* Filter to only run tests with a title * * not * * matching one of the patterns . This is the opposite of
* [ testProject . grep ] ( https : //playwright.dev/docs/api/class-testproject#test-project-grep). Also available globally and in
* the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `--grep-invert` option.
*
* ` grepInvert ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
2022-04-15 19:27:38 +02:00
grepInvert : RegExp | RegExp [ ] | null ;
2022-04-14 01:13:30 +02:00
/ * *
2022-05-04 22:16:11 +02:00
* Metadata that will be put directly to the test report serialized as JSON .
2022-04-14 01:13:30 +02:00
* /
2022-05-04 22:16:11 +02:00
metadata : Metadata ;
2022-04-14 01:13:30 +02:00
/ * *
* Project name is visible in the report and during test execution .
* /
2022-04-15 19:27:38 +02:00
name : string ;
2022-04-14 01:13:30 +02:00
/ * *
* The base directory , relative to the config file , for snapshot files created with ` toMatchSnapshot ` . Defaults to
* [ testProject . testDir ] ( https : //playwright.dev/docs/api/class-testproject#test-project-test-dir).
*
* The directory for each test can be accessed by
* [ testInfo . snapshotDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-dir) and
* [ testInfo . snapshotPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-path).
*
* This path will serve as the base directory for each test file snapshot directory . Setting ` snapshotDir ` to
* ` 'snapshots' ` , the [ testInfo . snapshotDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-dir) would
* resolve to ` snapshots/a.spec.js-snapshots ` .
* /
2022-04-15 19:27:38 +02:00
snapshotDir : string ;
2022-04-14 01:13:30 +02:00
/ * *
* The output directory for files created during test execution . Defaults to ` <package.json-directory>/test-results ` .
*
* This directory is cleaned at the start . When running a test , a unique subdirectory inside the
* [ testProject . outputDir ] ( https : //playwright.dev/docs/api/class-testproject#test-project-output-dir) is created,
* guaranteeing that test running in parallel do not conflict . This directory can be accessed by
* [ testInfo . outputDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-dir) and
* [ testInfo . outputPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-path).
*
* Here is an example that uses
* [ testInfo . outputPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-path) to create a
* temporary file .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
* import fs from 'fs' ;
*
* test ( 'example test' , async ( { } , testInfo ) = > {
* const file = testInfo . outputPath ( 'temporary-file.txt' ) ;
* await fs . promises . writeFile ( file , 'Put some data to the file' , 'utf8' ) ;
* } ) ;
* ` ` `
*
* Use [ testConfig . outputDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-output-dir) to change this
* option for all projects .
* /
2022-04-15 19:27:38 +02:00
outputDir : string ;
2022-04-14 01:13:30 +02:00
/ * *
* The number of times to repeat each test , useful for debugging flaky tests .
*
* Use [ testConfig . repeatEach ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-repeat-each) to change this
* option for all projects .
* /
2022-04-15 19:27:38 +02:00
repeatEach : number ;
2022-04-14 01:13:30 +02:00
/ * *
* The maximum number of retry attempts given to failed tests . Learn more about [ test retries ] ( https : //playwright.dev/docs/test-retries#retries).
*
* Use [ testConfig . retries ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-retries) to change this option for
* all projects .
* /
2022-04-15 19:27:38 +02:00
retries : number ;
2022-04-14 01:13:30 +02:00
/ * *
* Directory that will be recursively scanned for test files . Defaults to the directory of the configuration file .
*
* Each project can use a different directory . Here is an example that runs smoke tests in three browsers and all other
* tests in stable Chrome browser .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* projects : [
* {
* name : 'Smoke Chromium' ,
* testDir : './smoke-tests' ,
* use : {
* browserName : 'chromium' ,
* }
* } ,
* {
* name : 'Smoke WebKit' ,
* testDir : './smoke-tests' ,
* use : {
* browserName : 'webkit' ,
* }
* } ,
* {
* name : 'Smoke Firefox' ,
* testDir : './smoke-tests' ,
* use : {
* browserName : 'firefox' ,
* }
* } ,
* {
* name : 'Chrome Stable' ,
* testDir : './' ,
* use : {
* browserName : 'chromium' ,
* channel : 'chrome' ,
* }
* } ,
* ] ,
* } ;
* export default config ;
* ` ` `
*
* Use [ testConfig . testDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-dir) to change this option
* for all projects .
* /
2022-04-15 19:27:38 +02:00
testDir : string ;
2022-04-14 01:13:30 +02:00
/ * *
* Files matching one of these patterns are not executed as test files . Matching is performed against the absolute file
* path . Strings are treated as glob patterns .
*
* For example , ` '** \ /test-assets/**' ` will ignore any files in the ` test-assets ` directory .
*
* Use [ testConfig . testIgnore ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-ignore) to change this
* option for all projects .
* /
2022-04-15 19:27:38 +02:00
testIgnore : string | RegExp | ( string | RegExp ) [ ] ;
2022-04-14 01:13:30 +02:00
/ * *
* Only the files matching one of these patterns are executed as test files . Matching is performed against the absolute
* file path . Strings are treated as glob patterns .
*
* By default , Playwright Test looks for files matching ` .*(test|spec) \ .(js|ts|mjs) ` .
*
* Use [ testConfig . testMatch ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-match) to change this
* option for all projects .
* /
2022-04-15 19:27:38 +02:00
testMatch : string | RegExp | ( string | RegExp ) [ ] ;
2022-04-14 01:13:30 +02:00
/ * *
* Timeout for each test in milliseconds . Defaults to 30 seconds .
*
* This is a base timeout for all tests . In addition , each test can configure its own timeout with
* [ test . setTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-test#test-set-timeout).
*
* Use [ testConfig . timeout ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-timeout) to change this option for
* all projects .
* /
2022-04-15 19:27:38 +02:00
timeout : number ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Options for all tests in this project , for example
* [ testOptions . browserName ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-browser-name). Learn more about
* [ configuration ] ( https : //playwright.dev/docs/test-configuration) and see [available options][TestOptions].
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* projects : [
* {
* name : 'Chromium' ,
* use : {
* browserName : 'chromium' ,
* } ,
* } ,
* ] ,
* } ;
* export default config ;
* ` ` `
*
* Use [ testConfig . use ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-use) to change this option for all
* projects .
* /
use : UseOptions < PlaywrightTestOptions & TestArgs , PlaywrightWorkerOptions & WorkerArgs > ;
}
type LiteralUnion < T extends U , U = string > = T | ( U & { zz_IGNORE_ME? : never } ) ;
/ * *
* Playwright Test provides many options to configure how your tests are collected and executed , for example ` timeout ` or
* ` testDir ` . These options are described in the [ TestConfig ] object in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
*
* Playwright Test supports running multiple test projects at the same time . Project - specific options should be put to
* [ testConfig . projects ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-projects), but top-level [TestConfig]
* can also define base options shared between all projects .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* timeout : 30000 ,
* globalTimeout : 600000 ,
* reporter : 'list' ,
* testDir : './tests' ,
* } ;
* export default config ;
* ` ` `
*
* /
interface TestConfig {
/ * *
* The list of reporters to use . Each reporter can be :
* - A builtin reporter name like ` 'list' ` or ` 'json' ` .
* - A module name like ` 'my-awesome-reporter' ` .
* - A relative path to the reporter like ` './reporters/my-awesome-reporter.js' ` .
*
* You can pass options to the reporter in a tuple like ` ['json', { outputFile: './report.json' }] ` .
*
* Learn more in the [ reporters guide ] ( https : //playwright.dev/docs/test-reporters).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* reporter : 'line' ,
* } ;
* export default config ;
* ` ` `
*
* /
reporter? : LiteralUnion < 'list' | 'dot' | 'line' | 'github' | 'json' | 'junit' | 'null' | 'html' , string > | ReporterDescription [ ] ;
2022-04-27 17:14:37 +02:00
/ * *
* Launch a development web server during the tests .
*
* If the port is specified , the server will wait for it to be available on ` 127.0.0.1 ` or ` ::1 ` , before running the tests .
* If the url is specified , the server will wait for the URL to return a 2 xx status code before running the tests .
*
* For continuous integration , you may want to use the ` reuseExistingServer: !process.env.CI ` option which does not use an
* existing server on the CI . To see the stdout , you can set the ` DEBUG=pw:webserver ` environment variable .
*
* The ` port ` ( but not the ` url ` ) gets passed over to Playwright as a
* [ testOptions . baseURL ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-base-url). For example port `8080`
* produces ` baseURL ` equal ` http://localhost:8080 ` .
*
* > NOTE : It is also recommended to specify
* [ testOptions . baseURL ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-base-url) in the config, so that
* tests could use relative urls .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-27 17:14:37 +02:00
* const config : PlaywrightTestConfig = {
* webServer : {
* command : 'npm run start' ,
* port : 3000 ,
* timeout : 120 * 1000 ,
* reuseExistingServer : ! process . env . CI ,
* } ,
* use : {
* baseURL : 'http://localhost:3000/' ,
* } ,
* } ;
* export default config ;
* ` ` `
*
* Now you can use a relative path when navigating the page :
*
* ` ` ` ts
* // test.spec.ts
* import { test } from '@playwright/test' ;
*
* test ( 'test' , async ( { page } ) = > {
* // This will result in http://localhost:3000/foo
* await page . goto ( '/foo' ) ;
* } ) ;
* ` ` `
*
* /
webServer? : TestConfigWebServer ;
2022-04-15 19:27:38 +02:00
/ * *
* Configuration for the ` expect ` assertion library . Learn more about [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* expect : {
* timeout : 10000 ,
* toMatchSnapshot : {
* maxDiffPixels : 10 ,
* } ,
* } ,
* } ;
* export default config ;
* ` ` `
2022-04-14 22:22:42 +02:00
*
* /
expect ? : {
/ * *
* Default timeout for async expect matchers in milliseconds , defaults to 5000 ms .
* /
timeout? : number ;
/ * *
* Configuration for the
2022-05-16 16:53:46 +02:00
* [ pageAssertions . toHaveScreenshot ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1)
2022-04-14 22:22:42 +02:00
* method .
* /
toHaveScreenshot ? : {
/ * *
* an acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) . Defaults to ` 0.2 ` .
* /
threshold? : number ;
/ * *
* an acceptable amount of pixels that could be different , unset by default .
* /
maxDiffPixels? : number ;
/ * *
* an acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` , unset by default .
* /
maxDiffPixelRatio? : number ;
/ * *
* See ` animations ` in [ page . screenshot ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-screenshot). Defaults
2022-05-24 20:34:29 +02:00
* to ` "disabled" ` .
2022-04-14 22:22:42 +02:00
* /
2022-05-24 20:34:29 +02:00
animations ? : "allow" | "disabled" ;
2022-04-14 22:22:42 +02:00
/ * *
* See ` caret ` in [ page . screenshot ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-screenshot). Defaults to
* ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* See ` scale ` in [ page . screenshot ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-screenshot). Defaults to
* ` "css" ` .
* /
scale ? : "css" | "device" ;
} ;
/ * *
* Configuration for the
* [ screenshotAssertions . toMatchSnapshot ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-screenshotassertions#screenshot-assertions-to-match-snapshot-1)
* method .
* /
toMatchSnapshot ? : {
/ * *
* an acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) . Defaults to ` 0.2 ` .
* /
threshold? : number ;
/ * *
* an acceptable amount of pixels that could be different , unset by default .
* /
maxDiffPixels? : number ;
/ * *
* an acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` , unset by default .
* /
maxDiffPixelRatio? : number ;
} ;
} ;
/ * *
2022-04-15 19:27:38 +02:00
* Whether to exit with an error if any tests or groups are marked as
* [ test . only ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-only) or
* [ test . describe . only ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-only). Useful on CI.
2022-04-14 22:22:42 +02:00
*
2022-04-15 19:27:38 +02:00
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* forbidOnly : ! ! process . env . CI ,
* } ;
* export default config ;
* ` ` `
*
* /
forbidOnly? : boolean ;
2022-04-15 19:27:38 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* Playwright Test runs tests in parallel . In order to achieve that , it runs several worker processes that run at the same
* time . By default , * * test files * * are run in parallel . Tests in a single file are run in order , in the same worker
* process .
*
* You can configure entire test run to concurrently execute all tests in all files using this option .
* /
fullyParallel? : boolean ;
2022-04-15 19:27:38 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* Path to the global setup file . This file will be required and run before all the tests . It must export a single function
* that takes a [ ` TestConfig ` ] argument .
*
* Learn more about [ global setup and teardown ] ( https : //playwright.dev/docs/test-advanced#global-setup-and-teardown).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* globalSetup : './global-setup' ,
* } ;
* export default config ;
* ` ` `
*
* /
globalSetup? : string ;
2022-04-15 19:27:38 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* Path to the global teardown file . This file will be required and run after all the tests . It must export a single
* function . See also [ testConfig . globalSetup ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-global-setup).
*
2022-04-15 19:27:38 +02:00
* Learn more about [ global setup and teardown ] ( https : //playwright.dev/docs/test-advanced#global-setup-and-teardown).
*
2022-04-14 01:13:30 +02:00
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
2022-04-14 01:13:30 +02:00
* const config : PlaywrightTestConfig = {
2022-04-15 19:27:38 +02:00
* globalTeardown : './global-teardown' ,
2022-04-14 01:13:30 +02:00
* } ;
* export default config ;
* ` ` `
*
2022-04-15 19:27:38 +02:00
* /
globalTeardown? : string ;
/ * *
* Maximum time in milliseconds the whole test suite can run . Zero timeout ( default ) disables this behavior . Useful on CI
* to prevent broken setup from running too long and wasting resources . Learn more about
* [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
2022-04-14 01:13:30 +02:00
*
* ` ` ` ts
2022-04-15 19:27:38 +02:00
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* const config : PlaywrightTestConfig = {
* globalTimeout : process.env.CI ? 60 * 60 * 1000 : undefined ,
* } ;
* export default config ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
globalTimeout? : number ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Filter to only run tests with a title matching one of the patterns . For example , passing ` grep: /cart/ ` should only run
* tests with "cart" in the title . Also available in the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `-g` option.
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` grep ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
grep? : RegExp | Array < RegExp > ;
/ * *
* Filter to only run tests with a title * * not * * matching one of the patterns . This is the opposite of
* [ testConfig . grep ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-grep). Also available in the
* [ command line ] ( https : //playwright.dev/docs/test-cli) with the `--grep-invert` option.
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` grepInvert ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
grepInvert? : RegExp | Array < RegExp > ;
/ * *
* The maximum number of test failures for the whole test suite run . After reaching this number , testing will stop and exit
* with an error . Setting to zero ( default ) disables this behavior .
*
* Also available in the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `--max-failures` and `-x` options.
2022-04-14 01:13:30 +02:00
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
2022-04-15 19:27:38 +02:00
* maxFailures : process.env.CI ? 1 : 0 ,
2022-04-14 01:13:30 +02:00
* } ;
* export default config ;
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
maxFailures? : number ;
2022-04-14 01:13:30 +02:00
/ * *
2022-05-03 01:28:14 +02:00
* Metadata that will be put directly to the test report serialized as JSON .
2022-04-14 01:13:30 +02:00
* /
2022-05-03 01:28:14 +02:00
metadata? : Metadata ;
2022-04-15 19:27:38 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* Config name is visible in the report and during test execution , unless overridden by
* [ testProject . name ] ( https : //playwright.dev/docs/api/class-testproject#test-project-name).
* /
name? : string ;
2022-04-15 19:27:38 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* The output directory for files created during test execution . Defaults to ` <package.json-directory>/test-results ` .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* outputDir : './test-results' ,
* } ;
* export default config ;
* ` ` `
*
* This directory is cleaned at the start . When running a test , a unique subdirectory inside the
* [ testConfig . outputDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-output-dir) is created, guaranteeing
* that test running in parallel do not conflict . This directory can be accessed by
* [ testInfo . outputDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-dir) and
* [ testInfo . outputPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-path).
*
* Here is an example that uses
* [ testInfo . outputPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-path) to create a
* temporary file .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
* import fs from 'fs' ;
*
* test ( 'example test' , async ( { } , testInfo ) = > {
* const file = testInfo . outputPath ( 'temporary-file.txt' ) ;
* await fs . promises . writeFile ( file , 'Put some data to the file' , 'utf8' ) ;
* } ) ;
* ` ` `
*
* /
outputDir? : string ;
2022-04-15 19:27:38 +02:00
/ * *
* The base directory , relative to the config file , for snapshot files created with ` toMatchSnapshot ` . Defaults to
* [ testConfig . testDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-dir).
*
* The directory for each test can be accessed by
* [ testInfo . snapshotDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-dir) and
* [ testInfo . snapshotPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-path).
*
* This path will serve as the base directory for each test file snapshot directory . Setting ` snapshotDir ` to
* ` 'snapshots' ` , the [ testInfo . snapshotDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-dir) would
* resolve to ` snapshots/a.spec.js-snapshots ` .
* /
snapshotDir? : string ;
/ * *
* Whether to preserve test output in the
* [ testConfig . outputDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-output-dir). Defaults to `'always'`.
* - ` 'always' ` - preserve output for all tests ;
* - ` 'never' ` - do not preserve output for any tests ;
* - ` 'failures-only' ` - only preserve output for failed tests .
* /
preserveOutput ? : "always" | "never" | "failures-only" ;
/ * *
* Playwright Test supports running multiple test projects at the same time . See [ TestProject ] for more information .
* /
projects? : Array < TestProject > ;
/ * *
* Whether to suppress stdio and stderr output from the tests .
* /
quiet? : boolean ;
2022-04-14 01:13:30 +02:00
/ * *
* The number of times to repeat each test , useful for debugging flaky tests .
* /
repeatEach? : number ;
2022-04-15 19:27:38 +02:00
/ * *
* Whether to report slow test files . Pass ` null ` to disable this feature .
*
* Test files that took more than ` threshold ` milliseconds are considered slow , and the slowest ones are reported , no more
* than ` max ` number of them . Passing zero as ` max ` reports all test files that exceed the threshold .
* /
reportSlowTests? : null | {
/ * *
* The maximum number of slow test files to report . Defaults to ` 5 ` .
* /
max : number ;
/ * *
* Test duration in milliseconds that is considered slow . Defaults to 15 seconds .
* /
threshold : number ;
} ;
2022-04-14 01:13:30 +02:00
/ * *
* The maximum number of retry attempts given to failed tests . By default failing tests are not retried . Learn more about
* [ test retries ] ( https : //playwright.dev/docs/test-retries#retries).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* retries : 2 ,
* } ;
* export default config ;
* ` ` `
*
* /
retries? : number ;
2022-04-15 19:27:38 +02:00
/ * *
* The base directory , relative to the config file , for screenshot files created with
2022-05-16 16:53:46 +02:00
* [ pageAssertions . toHaveScreenshot ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1).
2022-04-15 19:27:38 +02:00
* Defaults to
*
* ` ` `
* < directory - of - configuration - file > / __screenshots__ / < platform name > / < project name >
* ` ` `
*
* This path will serve as the base directory for each test file screenshot directory . For example , the following test
* structure :
*
* ` ` `
* smoke - tests /
* └ ─ ─ basic . spec . ts
* ` ` `
*
* will result in the following screenshots folder structure :
*
* ` ` `
* __screenshots__ /
* └ ─ ─ darwin /
* ├ ─ ─ Mobile Safari /
* │ └ ─ ─ smoke - tests /
* │ └ ─ ─ basic . spec . ts /
* │ └ ─ ─ screenshot - expectation . png
* └ ─ ─ Desktop Chrome /
* └ ─ ─ smoke - tests /
* └ ─ ─ basic . spec . ts /
* └ ─ ─ screenshot - expectation . png
* ` ` `
*
* where :
* - ` darwin/ ` - a platform name folder
* - ` Mobile Safari ` and ` Desktop Chrome ` - project names
* /
screenshotsDir? : string ;
/ * *
* Shard tests and execute only the selected shard . Specify in the one - based form like ` { total: 5, current: 2 } ` .
*
* Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with Playwright Test.
* /
shard? : null | {
/ * *
* The total number of shards .
* /
total : number ;
/ * *
* The index of the shard to execute , one - based .
* /
current : number ;
} ;
2022-04-14 01:13:30 +02:00
/ * *
* Directory that will be recursively scanned for test files . Defaults to the directory of the configuration file .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* testDir : './tests/playwright' ,
* } ;
* export default config ;
* ` ` `
*
* /
testDir? : string ;
2022-04-15 19:27:38 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* Files matching one of these patterns are not executed as test files . Matching is performed against the absolute file
* path . Strings are treated as glob patterns .
*
* For example , ` '** \ /test-assets/**' ` will ignore any files in the ` test-assets ` directory .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* testIgnore : '**\/test-assets/**' ,
* } ;
* export default config ;
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
testIgnore? : string | RegExp | Array < string | RegExp > ;
2022-04-14 01:13:30 +02:00
/ * *
* Only the files matching one of these patterns are executed as test files . Matching is performed against the absolute
* file path . Strings are treated as glob patterns .
*
* By default , Playwright Test looks for files matching ` .*(test|spec) \ .(js|ts|mjs) ` .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* testMatch : /.*\.e2e\.js/ ,
* } ;
* export default config ;
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
testMatch? : string | RegExp | Array < string | RegExp > ;
2022-04-14 01:13:30 +02:00
/ * *
* Timeout for each test in milliseconds . Defaults to 30 seconds .
*
* This is a base timeout for all tests . In addition , each test can configure its own timeout with
* [ test . setTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-test#test-set-timeout). Learn more about
* [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* timeout : 5 * 60 * 1000 ,
* } ;
* export default config ;
* ` ` `
*
* /
timeout? : number ;
2022-04-15 19:27:38 +02:00
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Whether to update expected snapshots with the actual results produced by the test run . Defaults to ` 'missing' ` .
* - ` 'all' ` - All tests that are executed will update snapshots .
* - ` 'none' ` - No snapshots are updated .
* - ` 'missing' ` - Missing snapshots are created , for example when authoring a new test and running it for the first
* time . This is the default .
*
* Learn more about [ snapshots ] ( https : //playwright.dev/docs/test-snapshots).
* /
updateSnapshots ? : "all" | "none" | "missing" ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* The maximum number of concurrent worker processes to use for parallelizing tests .
2022-04-14 22:22:42 +02:00
*
2022-04-15 19:27:38 +02:00
* Playwright Test uses worker processes to run tests . There is always at least one worker process , but more can be used to
* speed up test execution .
2022-04-14 22:22:42 +02:00
*
2022-04-15 19:27:38 +02:00
* Defaults to one half of the number of CPU cores . Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with
* Playwright Test .
2022-04-14 22:22:42 +02:00
*
2022-04-15 19:27:38 +02:00
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 22:22:42 +02:00
*
2022-04-15 19:27:38 +02:00
* const config : PlaywrightTestConfig = {
* workers : 3 ,
* } ;
* export default config ;
2022-04-14 22:22:42 +02:00
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
workers? : number ; }
2022-04-14 01:13:30 +02:00
/ * *
* Playwright Test provides many options to configure how your tests are collected and executed , for example ` timeout ` or
* ` testDir ` . These options are described in the [ TestConfig ] object in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
*
* Playwright Test supports running multiple test projects at the same time . Project - specific options should be put to
* [ testConfig . projects ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-projects), but top-level [TestConfig]
* can also define base options shared between all projects .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* timeout : 30000 ,
* globalTimeout : 600000 ,
* reporter : 'list' ,
* testDir : './tests' ,
* } ;
* export default config ;
* ` ` `
*
* /
export interface Config < TestArgs = {} , WorkerArgs = { } > extends TestConfig {
/ * *
* Playwright Test supports running multiple test projects at the same time . See [ TestProject ] for more information .
* /
projects? : Project < TestArgs , WorkerArgs > [ ] ;
/ * *
* Global options for all tests , for example
* [ testOptions . browserName ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-browser-name). Learn more about
* [ configuration ] ( https : //playwright.dev/docs/test-configuration) and see [available options][TestOptions].
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* use : {
* browserName : 'chromium' ,
* } ,
* } ;
* export default config ;
* ` ` `
*
* /
use? : UseOptions < TestArgs , WorkerArgs > ;
}
2022-05-04 22:16:11 +02:00
export type Metadata = { [ key : string ] : any } ;
2022-05-03 01:28:14 +02:00
2022-04-14 01:13:30 +02:00
/ * *
* Playwright Test provides many options to configure how your tests are collected and executed , for example ` timeout ` or
* ` testDir ` . These options are described in the [ TestConfig ] object in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
*
* Playwright Test supports running multiple test projects at the same time . Project - specific options should be put to
* [ testConfig . projects ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-projects), but top-level [TestConfig]
* can also define base options shared between all projects .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* timeout : 30000 ,
* globalTimeout : 600000 ,
* reporter : 'list' ,
* testDir : './tests' ,
* } ;
* export default config ;
* ` ` `
*
* /
export interface FullConfig < TestArgs = {} , WorkerArgs = { } > {
/ * *
* Whether to exit with an error if any tests or groups are marked as
* [ test . only ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-only) or
* [ test . describe . only ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-only). Useful on CI.
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* forbidOnly : ! ! process . env . CI ,
* } ;
* export default config ;
* ` ` `
*
* /
forbidOnly : boolean ;
/ * *
* Playwright Test runs tests in parallel . In order to achieve that , it runs several worker processes that run at the same
* time . By default , * * test files * * are run in parallel . Tests in a single file are run in order , in the same worker
* process .
*
* You can configure entire test run to concurrently execute all tests in all files using this option .
* /
fullyParallel : boolean ;
/ * *
* Path to the global setup file . This file will be required and run before all the tests . It must export a single function
* that takes a [ ` TestConfig ` ] argument .
*
* Learn more about [ global setup and teardown ] ( https : //playwright.dev/docs/test-advanced#global-setup-and-teardown).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* globalSetup : './global-setup' ,
* } ;
* export default config ;
* ` ` `
*
* /
globalSetup : string | null ;
/ * *
* Path to the global teardown file . This file will be required and run after all the tests . It must export a single
* function . See also [ testConfig . globalSetup ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-global-setup).
*
* Learn more about [ global setup and teardown ] ( https : //playwright.dev/docs/test-advanced#global-setup-and-teardown).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* globalTeardown : './global-teardown' ,
* } ;
* export default config ;
* ` ` `
*
* /
globalTeardown : string | null ;
/ * *
* Maximum time in milliseconds the whole test suite can run . Zero timeout ( default ) disables this behavior . Useful on CI
* to prevent broken setup from running too long and wasting resources . Learn more about
* [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* globalTimeout : process.env.CI ? 60 * 60 * 1000 : undefined ,
* } ;
* export default config ;
* ` ` `
*
* /
globalTimeout : number ;
/ * *
* Filter to only run tests with a title matching one of the patterns . For example , passing ` grep: /cart/ ` should only run
* tests with "cart" in the title . Also available in the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `-g` option.
*
* ` grep ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
grep : RegExp | RegExp [ ] ;
/ * *
* Filter to only run tests with a title * * not * * matching one of the patterns . This is the opposite of
* [ testConfig . grep ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-grep). Also available in the
* [ command line ] ( https : //playwright.dev/docs/test-cli) with the `--grep-invert` option.
*
* ` grepInvert ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
grepInvert : RegExp | RegExp [ ] | null ;
/ * *
* The maximum number of test failures for the whole test suite run . After reaching this number , testing will stop and exit
* with an error . Setting to zero ( default ) disables this behavior .
*
* Also available in the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `--max-failures` and `-x` options.
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* maxFailures : process.env.CI ? 1 : 0 ,
* } ;
* export default config ;
* ` ` `
*
* /
maxFailures : number ;
2022-05-03 01:28:14 +02:00
/ * *
* Metadata that will be put directly to the test report serialized as JSON .
* /
metadata : Metadata ;
2022-04-14 01:13:30 +02:00
version : string ;
/ * *
* Whether to preserve test output in the
* [ testConfig . outputDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-output-dir). Defaults to `'always'`.
* - ` 'always' ` - preserve output for all tests ;
* - ` 'never' ` - do not preserve output for any tests ;
* - ` 'failures-only' ` - only preserve output for failed tests .
* /
2022-04-27 17:14:37 +02:00
preserveOutput : 'always' | 'never' | 'failures-only' ;
2022-04-14 01:13:30 +02:00
/ * *
* Playwright Test supports running multiple test projects at the same time . See [ TestProject ] for more information .
* /
projects : FullProject < TestArgs , WorkerArgs > [ ] ;
/ * *
* The list of reporters to use . Each reporter can be :
* - A builtin reporter name like ` 'list' ` or ` 'json' ` .
* - A module name like ` 'my-awesome-reporter' ` .
* - A relative path to the reporter like ` './reporters/my-awesome-reporter.js' ` .
*
* You can pass options to the reporter in a tuple like ` ['json', { outputFile: './report.json' }] ` .
*
* Learn more in the [ reporters guide ] ( https : //playwright.dev/docs/test-reporters).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* reporter : 'line' ,
* } ;
* export default config ;
* ` ` `
*
* /
reporter : ReporterDescription [ ] ;
/ * *
* Whether to report slow test files . Pass ` null ` to disable this feature .
*
* Test files that took more than ` threshold ` milliseconds are considered slow , and the slowest ones are reported , no more
* than ` max ` number of them . Passing zero as ` max ` reports all test files that exceed the threshold .
* /
2022-04-27 17:14:37 +02:00
reportSlowTests : { max : number , threshold : number } | null ;
2022-04-14 01:13:30 +02:00
rootDir : string ;
/ * *
* Whether to suppress stdio and stderr output from the tests .
* /
quiet : boolean ;
/ * *
* Shard tests and execute only the selected shard . Specify in the one - based form like ` { total: 5, current: 2 } ` .
*
* Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with Playwright Test.
* /
2022-04-27 17:14:37 +02:00
shard : { total : number , current : number } | null ;
2022-04-14 01:13:30 +02:00
/ * *
* Whether to update expected snapshots with the actual results produced by the test run . Defaults to ` 'missing' ` .
* - ` 'all' ` - All tests that are executed will update snapshots .
* - ` 'none' ` - No snapshots are updated .
* - ` 'missing' ` - Missing snapshots are created , for example when authoring a new test and running it for the first
* time . This is the default .
*
* Learn more about [ snapshots ] ( https : //playwright.dev/docs/test-snapshots).
* /
2022-04-27 17:14:37 +02:00
updateSnapshots : 'all' | 'none' | 'missing' ;
2022-04-14 01:13:30 +02:00
/ * *
* The maximum number of concurrent worker processes to use for parallelizing tests .
*
* Playwright Test uses worker processes to run tests . There is always at least one worker process , but more can be used to
* speed up test execution .
*
* Defaults to one half of the number of CPU cores . Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with
* Playwright Test .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* workers : 3 ,
* } ;
* export default config ;
* ` ` `
*
* /
workers : number ;
/ * *
* Launch a development web server during the tests .
*
* If the port is specified , the server will wait for it to be available on ` 127.0.0.1 ` or ` ::1 ` , before running the tests .
* If the url is specified , the server will wait for the URL to return a 2 xx status code before running the tests .
*
* For continuous integration , you may want to use the ` reuseExistingServer: !process.env.CI ` option which does not use an
* existing server on the CI . To see the stdout , you can set the ` DEBUG=pw:webserver ` environment variable .
*
* The ` port ` ( but not the ` url ` ) gets passed over to Playwright as a
* [ testOptions . baseURL ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-base-url). For example port `8080`
* produces ` baseURL ` equal ` http://localhost:8080 ` .
*
* > NOTE : It is also recommended to specify
* [ testOptions . baseURL ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-base-url) in the config, so that
* tests could use relative urls .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
* const config : PlaywrightTestConfig = {
* webServer : {
* command : 'npm run start' ,
* port : 3000 ,
* timeout : 120 * 1000 ,
* reuseExistingServer : ! process . env . CI ,
* } ,
* use : {
* baseURL : 'http://localhost:3000/' ,
* } ,
* } ;
* export default config ;
* ` ` `
*
* Now you can use a relative path when navigating the page :
*
* ` ` ` ts
* // test.spec.ts
* import { test } from '@playwright/test' ;
*
* test ( 'test' , async ( { page } ) = > {
* // This will result in http://localhost:3000/foo
* await page . goto ( '/foo' ) ;
* } ) ;
* ` ` `
*
* /
2022-04-27 17:14:37 +02:00
webServer : TestConfigWebServer | null ;
2022-04-14 01:13:30 +02:00
}
export type TestStatus = 'passed' | 'failed' | 'timedOut' | 'skipped' ;
/ * *
* ` WorkerInfo ` contains information about the worker that is running tests . It is available to
* [ test . beforeAll ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-before-all) and
* [ test . afterAll ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-after-all) hooks and worker-scoped
* fixtures .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeAll ( async ( { browserName } , workerInfo ) = > {
* console . log ( ` Running ${ browserName } in worker # ${ workerInfo . workerIndex } ` ) ;
* } ) ;
* ` ` `
*
* /
export interface WorkerInfo {
/ * *
* Processed configuration from the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
* /
config : FullConfig ;
/ * *
* Processed project configuration from the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
* /
project : FullProject ;
/ * *
* The index of the worker between ` 0 ` and ` workers - 1 ` . It is guaranteed that workers running at the same time have a
* different ` parallelIndex ` . When a worker is restarted , for example after a failure , the new worker process has the same
* ` parallelIndex ` .
*
* Also available as ` process.env.TEST_PARALLEL_INDEX ` . Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel)
* with Playwright Test .
* /
parallelIndex : number ;
/ * *
* The unique index of the worker process that is running the test . When a worker is restarted , for example after a
* failure , the new worker process gets a new unique ` workerIndex ` .
*
* Also available as ` process.env.TEST_WORKER_INDEX ` . Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with
* Playwright Test .
* /
workerIndex : number ; }
/ * *
* ` TestInfo ` contains information about currently running test . It is available to any test function ,
* [ test . beforeEach ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-before-each) and
* [ test . afterEach ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-after-each) hooks and test-scoped
* fixtures . ` TestInfo ` provides utilities to control test execution : attach files , update test timeout , determine which
* test is currently running and whether it was retried , etc .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { page } , testInfo ) = > {
* expect ( testInfo . title ) . toBe ( 'basic test' ) ;
* await page . screenshot ( testInfo . outputPath ( 'screenshot.png' ) ) ;
* } ) ;
* ` ` `
*
* /
export interface TestInfo {
/ * *
* Processed configuration from the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
* /
config : FullConfig ;
/ * *
* Processed project configuration from the [ configuration file ] ( https : //playwright.dev/docs/test-configuration).
* /
project : FullProject ;
/ * *
* The list of annotations applicable to the current test . Includes annotations from the test , annotations from all
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) groups the test belongs to
* and file - level annotations for the test file .
*
* Learn more about [ test annotations ] ( https : //playwright.dev/docs/test-annotations).
* /
annotations : Array < {
/ * *
* Annotation type , for example ` 'skip' ` or ` 'fail' ` .
* /
type : string ;
/ * *
* Optional description .
* /
description? : string ;
} > ;
/ * *
* The list of files or buffers attached to the current test . Some reporters show test attachments .
*
* To add an attachment , use
* [ testInfo . attach ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-attach) instead of directly
* pushing onto this array .
* /
attachments : Array < {
/ * *
* Attachment name .
* /
name : string ;
/ * *
* Content type of this attachment to properly present in the report , for example ` 'application/json' ` or ` 'image/png' ` .
* /
contentType : string ;
/ * *
* Optional path on the filesystem to the attached file .
* /
path? : string ;
/ * *
* Optional attachment body used instead of a file .
* /
body? : Buffer ;
} > ;
/ * *
* Attach a value or a file from disk to the current test . Some reporters show test attachments . Either ` path ` or ` body `
* must be specified , but not both .
*
* For example , you can attach a screenshot to the test :
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { page } , testInfo ) = > {
* await page . goto ( 'https://playwright.dev' ) ;
* const screenshot = await page . screenshot ( ) ;
* await testInfo . attach ( 'screenshot' , { body : screenshot , contentType : 'image/png' } ) ;
* } ) ;
* ` ` `
*
* Or you can attach files returned by your APIs :
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { } , testInfo ) = > {
* const { download } = require ( './my-custom-helpers' ) ;
* const tmpPath = await download ( 'a' ) ;
* await testInfo . attach ( 'downloaded' , { path : tmpPath } ) ;
* } ) ;
* ` ` `
*
* > NOTE : [ testInfo . attach ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-attach)
* automatically takes care of copying attached files to a location that is accessible to reporters . You can safely remove
* the attachment after awaiting the attach call .
2022-04-25 14:56:37 +02:00
* @param name Attachment name .
2022-04-14 01:13:30 +02:00
* @param options
* /
attach ( name : string , options ? : {
2022-04-25 14:56:37 +02:00
/ * *
* Attachment body . Mutually exclusive with ` path ` .
* /
2022-04-14 01:13:30 +02:00
body? : string | Buffer ;
2022-04-25 14:56:37 +02:00
/ * *
* Content type of this attachment to properly present in the report , for example ` 'application/json' ` or ` 'image/png' ` . If
* omitted , content type is inferred based on the ` path ` , or defaults to ` text/plain ` for [ string ] attachments and
* ` application/octet-stream ` for [ Buffer ] attachments .
* /
2022-04-14 01:13:30 +02:00
contentType? : string ;
2022-04-25 14:56:37 +02:00
/ * *
* Path on the filesystem to the attached file . Mutually exclusive with ` body ` .
* /
2022-04-14 01:13:30 +02:00
path? : string ;
2022-04-22 18:27:02 +02:00
} ) : Promise < void > ;
2022-04-14 01:13:30 +02:00
/ * *
* Column number where the currently running test is declared .
* /
column : number ;
/ * *
* The number of milliseconds the test took to finish . Always zero before the test finishes , either successfully or not .
* Can be used in [ test . afterEach ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-after-each) hook.
* /
duration : number ;
/ * *
* First error thrown during test execution , if any . This is equal to the first element in
* [ testInfo . errors ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-errors).
* /
error? : TestError ;
/ * *
* Errors thrown during test execution , if any .
* /
errors : Array < TestError > ;
2022-04-27 17:14:37 +02:00
/ * *
* Expected status for the currently running test . This is usually ` 'passed' ` , except for a few cases :
* - ` 'skipped' ` for skipped tests , e . g . with [ test . skip ( ) ] ( https : //playwright.dev/docs/api/class-test#test-skip-2);
* - ` 'failed' ` for tests marked as failed with [ test . fail ( ) ] ( https : //playwright.dev/docs/api/class-test#test-fail-1).
*
* Expected status is usually compared with the actual
* [ testInfo . status ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-status):
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . afterEach ( async ( { } , testInfo ) = > {
* if ( testInfo . status !== testInfo . expectedStatus )
* console . log ( ` ${ testInfo . title } did not run as expected! ` ) ;
* } ) ;
* ` ` `
*
* /
expectedStatus : "passed" | "failed" | "timedOut" | "skipped" ;
2022-04-14 01:13:30 +02:00
/ * *
* Marks the currently running test as "should fail" . Playwright Test runs this test and ensures that it is actually
* failing . This is useful for documentation purposes to acknowledge that some functionality is broken until it is fixed .
* This is similar to [ test . fail ( ) ] ( https : //playwright.dev/docs/api/class-test#test-fail-1).
* /
fail ( ) : void ;
/ * *
* Conditionally mark the currently running test as "should fail" with an optional description . This is similar to
* [ test . fail ( condition [ , description ] ) ] ( https : //playwright.dev/docs/api/class-test#test-fail-2).
* @param condition Test is marked as "should fail" when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
fail ( condition : boolean , description? : string ) : void ;
/ * *
* Absolute path to a file where the currently running test is declared .
* /
file : string ;
/ * *
* Mark a test as "fixme" , with the intention to fix it . Test is immediately aborted . This is similar to
* [ test . fixme ( ) ] ( https : //playwright.dev/docs/api/class-test#test-fixme-2).
* /
fixme ( ) : void ;
/ * *
* Conditionally mark the currently running test as "fixme" with an optional description . This is similar to
* [ test . fixme ( condition [ , description ] ) ] ( https : //playwright.dev/docs/api/class-test#test-fixme-3).
* @param condition Test is marked as "fixme" when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
fixme ( condition : boolean , description? : string ) : void ;
/ * *
* Test function as passed to ` test(title, testFunction) ` .
* /
fn : Function ;
/ * *
* Line number where the currently running test is declared .
* /
line : number ;
/ * *
* Absolute path to the snapshot output directory for this specific test . Each test suite gets its own directory so they
* cannot conflict .
* /
snapshotDir : string ;
/ * *
* Absolute path to the output directory for this specific test run . Each test run gets its own directory so they cannot
* conflict .
* /
outputDir : string ;
/ * *
* Returns a path inside the [ testInfo . outputDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-dir)
* where the test can safely put a temporary file . Guarantees that tests running in parallel will not interfere with each
* other .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
* import fs from 'fs' ;
*
* test ( 'example test' , async ( { } , testInfo ) = > {
* const file = testInfo . outputPath ( 'dir' , 'temporary-file.txt' ) ;
* await fs . promises . writeFile ( file , 'Put some data to the dir/temporary-file.txt' , 'utf8' ) ;
* } ) ;
* ` ` `
*
* > Note that ` pathSegments ` accepts path segments to the test output directory such as ` testInfo.outputPath('relative',
* 'path' , 'to' , 'output' ) ` .
* > However , this path must stay within the
* [ testInfo . outputDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-dir) directory for each test (i.e.
* ` test-results/a-test-title ` ) , otherwise it will throw .
* @param pathSegments Path segments to append at the end of the resulting path .
* /
outputPath ( . . . pathSegments : Array < string > ) : string ;
/ * *
* The index of the worker between ` 0 ` and ` workers - 1 ` . It is guaranteed that workers running at the same time have a
* different ` parallelIndex ` . When a worker is restarted , for example after a failure , the new worker process has the same
* ` parallelIndex ` .
*
* Also available as ` process.env.TEST_PARALLEL_INDEX ` . Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel)
* with Playwright Test .
* /
parallelIndex : number ;
/ * *
* Specifies a unique repeat index when running in "repeat each" mode . This mode is enabled by passing ` --repeat-each ` to
* the [ command line ] ( https : //playwright.dev/docs/test-cli).
* /
repeatEachIndex : number ;
/ * *
* Specifies the retry number when the test is retried after a failure . The first test run has
* [ testInfo . retry ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-retry) equal to zero, the first retry has it
* equal to one , and so on . Learn more about [ retries ] ( https : //playwright.dev/docs/test-retries#retries).
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeEach ( async ( { } , testInfo ) = > {
* // You can access testInfo.retry in any hook or fixture.
* if ( testInfo . retry > 0 )
* console . log ( ` Retrying! ` ) ;
* } ) ;
*
* test ( 'my test' , async ( { page } , testInfo ) = > {
* // Here we clear some server-side state when retrying.
* if ( testInfo . retry )
* await cleanSomeCachesOnTheServer ( ) ;
* // ...
* } ) ;
* ` ` `
*
* /
retry : number ;
/ * *
* Changes the timeout for the currently running test . Zero means no timeout . Learn more about
* [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
*
* Timeout is usually specified in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration), but it could be useful to change the
* timeout in certain scenarios :
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeEach ( async ( { page } , testInfo ) = > {
* // Extend timeout for all tests running this hook by 30 seconds.
* testInfo . setTimeout ( testInfo . timeout + 30000 ) ;
* } ) ;
* ` ` `
*
* @param timeout Timeout in milliseconds .
* /
setTimeout ( timeout : number ) : void ;
/ * *
* Unconditionally skip the currently running test . Test is immediately aborted . This is similar to
* [ test . skip ( ) ] ( https : //playwright.dev/docs/api/class-test#test-skip-2).
* /
skip ( ) : void ;
/ * *
* Conditionally skips the currently running test with an optional description . This is similar to
* [ test . skip ( condition [ , description ] ) ] ( https : //playwright.dev/docs/api/class-test#test-skip-3).
* @param condition A skip condition . Test is skipped when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
skip ( condition : boolean , description? : string ) : void ;
/ * *
* Marks the currently running test as "slow" , giving it triple the default timeout . This is similar to
* [ test . slow ( ) ] ( https : //playwright.dev/docs/api/class-test#test-slow-1).
* /
slow ( ) : void ;
/ * *
* Conditionally mark the currently running test as "slow" with an optional description , giving it triple the default
* timeout . This is similar to
* [ test . slow ( condition [ , description ] ) ] ( https : //playwright.dev/docs/api/class-test#test-slow-2).
* @param condition Test is marked as "slow" when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
slow ( condition : boolean , description? : string ) : void ;
/ * *
* Returns a path to a snapshot file with the given ` pathSegments ` . Learn more about [ snapshots ] ( https : //playwright.dev/docs/test-snapshots).
*
* > Note that ` pathSegments ` accepts path segments to the snapshot file such as ` testInfo.snapshotPath('relative', 'path',
* 'to' , 'snapshot.png' ) ` .
* > However , this path must stay within the snapshots directory for each test file ( i . e . ` a.spec.js-snapshots ` ) , otherwise
* it will throw .
* @param pathSegments The name of the snapshot or the path segments to define the snapshot file path . Snapshots with the same name in the same test file are expected to be the same .
* /
snapshotPath ( . . . pathSegments : Array < string > ) : string ;
/ * *
* Suffix used to differentiate snapshots between multiple test configurations . For example , if snapshots depend on the
* platform , you can set ` testInfo.snapshotSuffix ` equal to ` process.platform ` . In this case
* ` expect(value).toMatchSnapshot(snapshotName) ` will use different snapshots depending on the platform . Learn more about
* [ snapshots ] ( https : //playwright.dev/docs/test-snapshots).
* /
snapshotSuffix : string ;
2022-04-27 17:14:37 +02:00
/ * *
* Actual status for the currently running test . Available after the test has finished in
* [ test . afterEach ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-after-each) hook and fixtures.
*
* Status is usually compared with the
* [ testInfo . expectedStatus ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-expected-status):
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . afterEach ( async ( { } , testInfo ) = > {
* if ( testInfo . status !== testInfo . expectedStatus )
* console . log ( ` ${ testInfo . title } did not run as expected! ` ) ;
* } ) ;
* ` ` `
*
* /
status ? : "passed" | "failed" | "timedOut" | "skipped" ;
2022-04-14 01:13:30 +02:00
/ * *
* Output written to ` process.stderr ` or ` console.error ` during the test execution .
* /
stderr : Array < string | Buffer > ;
/ * *
* Output written to ` process.stdout ` or ` console.log ` during the test execution .
* /
stdout : Array < string | Buffer > ;
/ * *
* Timeout in milliseconds for the currently running test . Zero means no timeout . Learn more about
* [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
*
* Timeout is usually specified in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration)
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeEach ( async ( { page } , testInfo ) = > {
* // Extend timeout for all tests running this hook by 30 seconds.
* testInfo . setTimeout ( testInfo . timeout + 30000 ) ;
* } ) ;
* ` ` `
*
* /
timeout : number ;
/ * *
* The title of the currently running test as passed to ` test(title, testFunction) ` .
* /
title : string ;
/ * *
* The full title path starting with the project .
* /
titlePath : Array < string > ;
/ * *
* The unique index of the worker process that is running the test . When a worker is restarted , for example after a
* failure , the new worker process gets a new unique ` workerIndex ` .
*
* Also available as ` process.env.TEST_WORKER_INDEX ` . Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with
* Playwright Test .
* /
workerIndex : number ; }
interface SuiteFunction {
( title : string , callback : ( ) = > void ) : void ;
}
interface TestFunction < TestArgs > {
( title : string , testFunction : ( args : TestArgs , testInfo : TestInfo ) = > Promise < void > | void ) : void ;
}
/ * *
* Playwright Test provides a ` test ` function to declare tests and [ ` expect ` function ] ( https : //jestjs.io/docs/expect) to
* write assertions .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { page } ) = > {
* await page . goto ( 'https://playwright.dev/' ) ;
* const name = await page . innerText ( '.navbar__title' ) ;
* expect ( name ) . toBe ( 'Playwright' ) ;
* } ) ;
* ` ` `
*
* /
export interface TestType < TestArgs extends KeyValue , WorkerArgs extends KeyValue > extends TestFunction < TestArgs & WorkerArgs > {
/ * *
* Declares a focused test . If there are some focused tests or suites , all of them will be run but nothing else .
*
* ` ` ` ts
* test . only ( 'focus this test' , async ( { page } ) = > {
* // Run only focused tests in the entire project.
* } ) ;
* ` ` `
*
* @param title Test title .
* @param testFunction Test function that takes one or two arguments : an object with fixtures and optional [ TestInfo ] .
* /
only : TestFunction < TestArgs & WorkerArgs > ;
/ * *
* Declares a group of tests .
*
* ` ` ` ts
* test . describe ( 'two tests' , ( ) = > {
* test ( 'one' , async ( { page } ) = > {
* // ...
* } ) ;
*
* test ( 'two' , async ( { page } ) = > {
* // ...
* } ) ;
* } ) ;
* ` ` `
*
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe). Any tests added in this
* callback will belong to the group .
* /
describe : SuiteFunction & {
/ * *
* Declares a focused group of tests . If there are some focused tests or suites , all of them will be run but nothing else .
*
* ` ` ` ts
* test . describe . only ( 'focused group' , ( ) = > {
* test ( 'in the focused group' , async ( { page } ) = > {
* // This test will run
* } ) ;
* } ) ;
* test ( 'not in the focused group' , async ( { page } ) = > {
* // This test will not run
* } ) ;
* ` ` `
*
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe . only ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-only). Any tests added in
* this callback will belong to the group .
* /
only : SuiteFunction ;
/ * *
* Declares a skipped test group , similarly to
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe). Tests in the skipped group
* are never run .
*
* ` ` ` ts
* test . describe . skip ( 'skipped group' , ( ) = > {
* test ( 'example' , async ( { page } ) = > {
* // This test will not run
* } ) ;
* } ) ;
* ` ` `
*
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe . skip ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-skip). Any tests added in
* this callback will belong to the group , and will not be run .
* /
skip : SuiteFunction ;
/ * *
* Declares a group of tests that should always be run serially . If one of the tests fails , all subsequent tests are
* skipped . All tests in a group are retried together .
*
* > NOTE : See [ test . describe . configure ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-configure) for
* the preferred way of configuring the execution mode .
* > NOTE : Using serial is not recommended . It is usually better to make your tests isolated , so they can be run
* independently .
*
* ` ` ` ts
* test . describe . serial ( 'group' , ( ) = > {
* test ( 'runs first' , async ( { page } ) = > { } ) ;
* test ( 'runs second' , async ( { page } ) = > { } ) ;
* } ) ;
* ` ` `
*
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe . serial ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-serial). Any tests
* added in this callback will belong to the group .
* /
serial : SuiteFunction & {
/ * *
* Declares a focused group of tests that should always be run serially . If one of the tests fails , all subsequent tests
* are skipped . All tests in a group are retried together . If there are some focused tests or suites , all of them will be
* run but nothing else .
*
* > NOTE : Using serial is not recommended . It is usually better to make your tests isolated , so they can be run
* independently .
*
* ` ` ` ts
* test . describe . serial . only ( 'group' , ( ) = > {
* test ( 'runs first' , async ( { page } ) = > {
* } ) ;
* test ( 'runs second' , async ( { page } ) = > {
* } ) ;
* } ) ;
* ` ` `
*
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe . serial . only ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-serial-only). Any
* tests added in this callback will belong to the group .
* /
only : SuiteFunction ;
} ;
/ * *
* Declares a group of tests that could be run in parallel . By default , tests in a single test file run one after another ,
* but using [ test . describe . parallel ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-parallel)
* allows them to run in parallel .
*
* > NOTE : See [ test . describe . configure ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-configure) for
* the preferred way of configuring the execution mode .
*
* ` ` ` ts
* test . describe . parallel ( 'group' , ( ) = > {
* test ( 'runs in parallel 1' , async ( { page } ) = > { } ) ;
* test ( 'runs in parallel 2' , async ( { page } ) = > { } ) ;
* } ) ;
* ` ` `
*
* Note that parallel tests are executed in separate processes and cannot share any state or global variables . Each of the
* parallel tests executes all relevant hooks .
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe . parallel ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-parallel). Any tests
* added in this callback will belong to the group .
* /
parallel : SuiteFunction & {
/ * *
* Declares a focused group of tests that could be run in parallel . This is similar to
* [ test . describe . parallel ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-parallel), but
* focuses the group . If there are some focused tests or suites , all of them will be run but nothing else .
* @param title Group title .
* @param callback A callback that is run immediately when calling [ test . describe . parallel . only ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe-parallel-only).
* Any tests added in this callback will belong to the group .
* /
only : SuiteFunction ;
} ;
/ * *
* Set execution mode of execution for the enclosing scope . Can be executed either on the top level or inside a describe .
* Configuration applies to the entire scope , regardless of whether it run before or after the test declaration .
*
* Learn more about the execution modes [ here ] ( https : //playwright.dev/docs/test-parallel).
*
* Running tests in parallel :
*
* ` ` ` ts
* // Run all the tests in the file concurrently using parallel workers.
* test . describe . configure ( { mode : 'parallel' } ) ;
* test ( 'runs in parallel 1' , async ( { page } ) = > { } ) ;
* test ( 'runs in parallel 2' , async ( { page } ) = > { } ) ;
* ` ` `
*
* Running tests sequentially :
*
* ` ` ` ts
* // Annotate tests as inter-dependent.
* test . describe . configure ( { mode : 'serial' } ) ;
* test ( 'runs first' , async ( { page } ) = > { } ) ;
* test ( 'runs second' , async ( { page } ) = > { } ) ;
* ` ` `
*
* @param options
* /
configure : ( options : { mode ? : 'parallel' | 'serial' } ) = > void ;
} ;
/ * *
* Declares a skipped test , similarly to
* [ test . ( call ) ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-call). Skipped test is never run.
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . skip ( 'broken test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param title Test title .
* @param testFunction Test function that takes one or two arguments : an object with fixtures and optional [ TestInfo ] .
* /
skip ( title : string , testFunction : ( args : TestArgs & WorkerArgs , testInfo : TestInfo ) = > Promise < void > | void ) : void ;
/ * *
* Unconditionally skip a test . Test is immediately aborted when you call
* [ test . skip ( ) ] ( https : //playwright.dev/docs/api/class-test#test-skip-2).
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'skipped test' , async ( { page } ) = > {
* test . skip ( ) ;
* // ...
* } ) ;
* ` ` `
*
* Unconditionally skip all tests in a file or
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group:
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . skip ( ) ;
*
* test ( 'skipped test 1' , async ( { page } ) = > {
* // ...
* } ) ;
* test ( 'skipped test 2' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* /
skip ( ) : void ;
/ * *
* Conditionally skip a test with an optional description .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'skip in WebKit' , async ( { page , browserName } ) = > {
* test . skip ( browserName === 'webkit' , 'This feature is not implemented for Mac' ) ;
* // ...
* } ) ;
* ` ` `
*
* Skip from [ test . beforeEach ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-before-each) hook:
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeEach ( async ( { page } ) = > {
* test . skip ( process . env . APP_VERSION === 'v1' , 'There are no settings in v1' ) ;
* await page . goto ( '/settings' ) ;
* } ) ;
* ` ` `
*
* @param condition A skip condition . Test is skipped when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
skip ( condition : boolean , description? : string ) : void ;
/ * *
* Conditionally skips all tests in a file or
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group.
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . skip ( ( { browserName } ) = > browserName === 'webkit' ) ;
*
* test ( 'skip in WebKit 1' , async ( { page } ) = > {
* // ...
* } ) ;
* test ( 'skip in WebKit 2' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param callback A function that returns whether to skip , based on test fixtures . Test or tests are skipped when the return value is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
skip ( callback : ( args : TestArgs & WorkerArgs ) = > boolean , description? : string ) : void ;
/ * *
* Declares a test to be fixed , similarly to
* [ test . ( call ) ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-call). This test will not be run.
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . fixme ( 'test to be fixed' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param title Test title .
* @param testFunction Test function that takes one or two arguments : an object with fixtures and optional [ TestInfo ] .
* /
fixme ( title : string , testFunction : ( args : TestArgs & WorkerArgs , testInfo : TestInfo ) = > Promise < void > | void ) : void ;
/ * *
* Mark a test as "fixme" , with the intention to fix it . Test is immediately aborted when you call
* [ test . fixme ( ) ] ( https : //playwright.dev/docs/api/class-test#test-fixme-2).
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'test to be fixed' , async ( { page } ) = > {
* test . fixme ( ) ;
* // ...
* } ) ;
* ` ` `
*
* Mark all tests in a file or [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe)
* group as "fixme" .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . fixme ( ) ;
*
* test ( 'test to be fixed 1' , async ( { page } ) = > {
* // ...
* } ) ;
* test ( 'test to be fixed 2' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* /
fixme ( ) : void ;
/ * *
* Conditionally mark a test as "fixme" with an optional description .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'broken in WebKit' , async ( { page , browserName } ) = > {
* test . fixme ( browserName === 'webkit' , 'This feature is not implemented on Mac yet' ) ;
* // ...
* } ) ;
* ` ` `
*
* @param condition Test is marked as "fixme" when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
fixme ( condition : boolean , description? : string ) : void ;
/ * *
* Conditionally mark all tests in a file or
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group as "fixme".
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . fixme ( ( { browserName } ) = > browserName === 'webkit' ) ;
*
* test ( 'broken in WebKit 1' , async ( { page } ) = > {
* // ...
* } ) ;
* test ( 'broken in WebKit 2' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param callback A function that returns whether to mark as "fixme" , based on test fixtures . Test or tests are marked as "fixme" when the return value is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
fixme ( callback : ( args : TestArgs & WorkerArgs ) = > boolean , description? : string ) : void ;
/ * *
* Unconditonally marks a test as "should fail" . Playwright Test runs this test and ensures that it is actually failing .
* This is useful for documentation purposes to acknowledge that some functionality is broken until it is fixed .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'not yet ready' , async ( { page } ) = > {
* test . fail ( ) ;
* // ...
* } ) ;
* ` ` `
*
* /
fail ( ) : void ;
/ * *
* Conditionally mark a test as "should fail" with an optional description .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'fail in WebKit' , async ( { page , browserName } ) = > {
* test . fail ( browserName === 'webkit' , 'This feature is not implemented for Mac yet' ) ;
* // ...
* } ) ;
* ` ` `
*
* @param condition Test is marked as "should fail" when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
fail ( condition : boolean , description? : string ) : void ;
/ * *
* Conditionally mark all tests in a file or
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group as "should fail".
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . fail ( ( { browserName } ) = > browserName === 'webkit' ) ;
*
* test ( 'fail in WebKit 1' , async ( { page } ) = > {
* // ...
* } ) ;
* test ( 'fail in WebKit 2' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param callback A function that returns whether to mark as "should fail" , based on test fixtures . Test or tests are marked as "should fail" when the return value is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
fail ( callback : ( args : TestArgs & WorkerArgs ) = > boolean , description? : string ) : void ;
/ * *
* Unconditionally marks a test as "slow" . Slow test will be given triple the default timeout .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'slow test' , async ( { page } ) = > {
* test . slow ( ) ;
* // ...
* } ) ;
* ` ` `
*
* /
slow ( ) : void ;
/ * *
* Conditionally mark a test as "slow" with an optional description . Slow test will be given triple the default timeout .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'slow in WebKit' , async ( { page , browserName } ) = > {
* test . slow ( browserName === 'webkit' , 'This feature is slow on Mac' ) ;
* // ...
* } ) ;
* ` ` `
*
* @param condition Test is marked as "slow" when the condition is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
slow ( condition : boolean , description? : string ) : void ;
/ * *
* Conditionally mark all tests in a file or
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group as "slow". Slow tests
* will be given triple the default timeout .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . slow ( ( { browserName } ) = > browserName === 'webkit' ) ;
*
* test ( 'slow in WebKit 1' , async ( { page } ) = > {
* // ...
* } ) ;
* test ( 'fail in WebKit 2' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param callback A function that returns whether to mark as "slow" , based on test fixtures . Test or tests are marked as "slow" when the return value is ` true ` .
* @param description Optional description that will be reflected in a test report .
* /
slow ( callback : ( args : TestArgs & WorkerArgs ) = > boolean , description? : string ) : void ;
/ * *
* Changes the timeout for the test . Zero means no timeout . Learn more about [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'very slow test' , async ( { page } ) = > {
* test . setTimeout ( 120000 ) ;
* // ...
* } ) ;
* ` ` `
*
* Changing timeout from a slow hook :
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeEach ( async ( { page } , testInfo ) = > {
* // Extend timeout for all tests running this hook by 30 seconds.
* test . setTimeout ( testInfo . timeout + 30000 ) ;
* } ) ;
* ` ` `
*
* Timeout for the currently running test is available through
* [ testInfo . timeout ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-timeout).
* @param timeout Timeout in milliseconds .
* /
setTimeout ( timeout : number ) : void ;
/ * *
* Declares a ` beforeEach ` hook that is executed before each test . When called in the scope of a test file , runs before
* each test in the file . When called inside a
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group, runs before each test
* in the group . If multiple ` beforeEach ` hooks are added , they will run in the order of their registration .
*
* You can access all the same [ Fixtures ] as the test function itself , and also the [ TestInfo ] object that gives a lot of
* useful information . For example , you can navigate the page before starting the test .
*
* ` ` ` ts
* // example.spec.ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeEach ( async ( { page } , testInfo ) = > {
* console . log ( ` Running ${ testInfo . title } ` ) ;
* await page . goto ( 'https://my.start.url/' ) ;
* } ) ;
*
* test ( 'my test' , async ( { page } ) = > {
* expect ( page . url ( ) ) . toBe ( 'https://my.start.url/' ) ;
* } ) ;
* ` ` `
*
* You can use [ test . afterEach ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-after-each) to teardown any
* resources set up in ` beforeEach ` .
* @param hookFunction Hook function that takes one or two arguments : an object with fixtures and optional [ TestInfo ] .
* /
beforeEach ( inner : ( args : TestArgs & WorkerArgs , testInfo : TestInfo ) = > Promise < any > | any ) : void ;
/ * *
* Declares an ` afterEach ` hook that is executed after each test . When called in the scope of a test file , runs after each
* test in the file . When called inside a
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group, runs after each test
* in the group . If multiple ` afterEach ` hooks are added , they will run in the order of their registration .
*
* You can access all the same [ Fixtures ] as the test function itself , and also the [ TestInfo ] object that gives a lot of
* useful information . For example , you can check whether the test succeeded or failed .
*
* ` ` ` ts
* // example.spec.ts
* import { test , expect } from '@playwright/test' ;
*
* test . afterEach ( async ( { page } , testInfo ) = > {
* console . log ( ` Finished ${ testInfo . title } with status ${ testInfo . status } ` ) ;
*
* if ( testInfo . status !== testInfo . expectedStatus )
* console . log ( ` Did not run as expected, ended up at ${ page . url ( ) } ` ) ;
* } ) ;
*
* test ( 'my test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* @param hookFunction Hook function that takes one or two arguments : an object with fixtures and optional [ TestInfo ] .
* /
afterEach ( inner : ( args : TestArgs & WorkerArgs , testInfo : TestInfo ) = > Promise < any > | any ) : void ;
/ * *
* Declares a ` beforeAll ` hook that is executed once per worker process before all tests . When called in the scope of a
* test file , runs before all tests in the file . When called inside a
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group, runs before all tests
* in the group . If multiple ` beforeAll ` hooks are added , they will run in the order of their registration .
*
* ` ` ` ts
* // example.spec.ts
* import { test , expect } from '@playwright/test' ;
*
* test . beforeAll ( async ( ) = > {
* console . log ( 'Before tests' ) ;
* } ) ;
*
* test . afterAll ( async ( ) = > {
* console . log ( 'After tests' ) ;
* } ) ;
*
* test ( 'my test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* Note that worker process is restarted on test failures , and ` beforeAll ` hook runs again in the new worker . Learn more
* about [ workers and failures ] ( https : //playwright.dev/docs/test-retries).
*
* You can use [ test . afterAll ( hookFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-after-all) to teardown any
* resources set up in ` beforeAll ` .
* @param hookFunction Hook function that takes one or two arguments : an object with worker fixtures and optional [ TestInfo ] .
* /
beforeAll ( inner : ( args : TestArgs & WorkerArgs , testInfo : TestInfo ) = > Promise < any > | any ) : void ;
/ * *
* Declares an ` afterAll ` hook that is executed once per worker after all tests . When called in the scope of a test file ,
* runs after all tests in the file . When called inside a
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group, runs after all tests
* in the group . If multiple ` afterAll ` hooks are added , they will run in the order of their registration .
*
* Note that worker process is restarted on test failures , and ` afterAll ` hook runs again in the new worker . Learn more
* about [ workers and failures ] ( https : //playwright.dev/docs/test-retries).
* @param hookFunction Hook function that takes one or two arguments : an object with worker fixtures and optional [ TestInfo ] .
* /
afterAll ( inner : ( args : TestArgs & WorkerArgs , testInfo : TestInfo ) = > Promise < any > | any ) : void ;
/ * *
* Specifies options or fixtures to use in a single test file or a
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group. Most useful to set an
* option , for example set ` locale ` to configure ` context ` fixture . ` test.use ` can be called either in the global scope or
* inside ` test.describe ` , it ' s is an error to call it within ` beforeEach ` or ` beforeAll ` .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . use ( { locale : 'en-US' } ) ;
*
* test ( 'test with locale' , async ( { page } ) = > {
* // Default context and page have locale as specified
* } ) ;
* ` ` `
*
* It is also possible to override a fixture by providing a function .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test . use ( {
* locale : async ( { } , use ) = > {
* // Read locale from some configuration file.
* const locale = await fs . promises . readFile ( 'test-locale' , 'utf-8' ) ;
* await use ( locale ) ;
* } ,
* } ) ;
*
* test ( 'test with locale' , async ( { page } ) = > {
* // Default context and page have locale as specified
* } ) ;
* ` ` `
*
* @param options An object with local options .
* /
use ( fixtures : Fixtures < { } , { } , TestArgs , WorkerArgs > ) : void ;
/ * *
* Declares a test step .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'test' , async ( { page } ) = > {
* await test . step ( 'Log in' , async ( ) = > {
* // ...
* } ) ;
* } ) ;
* ` ` `
*
* @param title Step name .
* @param body Step body .
* /
step ( title : string , body : ( ) = > Promise < any > ) : Promise < any > ;
/ * *
* ` expect ` function can be used to create test assertions . Read
* [ expect library documentation ] ( https : //jestjs.io/docs/expect) for more details.
* /
expect : Expect ;
/ * *
* Extends the ` test ` object by defining fixtures and / or options that can be used in the tests .
*
* First define a fixture and / or an option .
*
* ` ` ` ts
* import { test as base } from '@playwright/test' ;
* import { TodoPage } from './todo-page' ;
*
* export type Options = { defaultItem : string } ;
*
* // Extend basic test by providing a "defaultItem" option and a "todoPage" fixture.
* export const test = base . extend < Options & { todoPage : TodoPage } > ( {
* // Define an option and provide a default value.
* // We can later override it in the config.
* defaultItem : [ 'Do stuff' , { option : true } ] ,
*
* // Define a fixture. Note that it can use built-in fixture "page"
* // and a new option "defaultItem".
* todoPage : async ( { page , defaultItem } , use ) = > {
* const todoPage = new TodoPage ( page ) ;
* await todoPage . goto ( ) ;
* await todoPage . addToDo ( defaultItem ) ;
* await use ( todoPage ) ;
* await todoPage . removeAll ( ) ;
* } ,
* } ) ;
* ` ` `
*
* Then use the fixture in the test .
*
* ` ` ` ts
* // example.spec.ts
* import { test } from './my-test' ;
*
* test ( 'test 1' , async ( { todoPage } ) = > {
* await todoPage . addToDo ( 'my todo' ) ;
* // ...
* } ) ;
* ` ` `
*
* Configure the option in config file .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
* import { Options } from './my-test' ;
*
* const config : PlaywrightTestConfig < Options > = {
* projects : [
* {
* name : 'shopping' ,
* use : { defaultItem : 'Buy milk' } ,
* } ,
* {
* name : 'wellbeing' ,
* use : { defaultItem : 'Exercise!' } ,
* } ,
* ]
* } ;
* export default config ;
* ` ` `
*
* Learn more about [ fixtures ] ( https : //playwright.dev/docs/test-fixtures) and [parametrizing tests](https://playwright.dev/docs/test-parameterize).
* @param fixtures An object containing fixtures and / or options . Learn more about [ fixtures format ] ( https : //playwright.dev/docs/test-fixtures).
* /
extend < T extends KeyValue , W extends KeyValue = { } > ( fixtures : Fixtures < T , W , TestArgs , WorkerArgs > ) : TestType < TestArgs & T , WorkerArgs & W > ;
/ * *
* Returns information about the currently running test . This method can only be called during the test execution ,
* otherwise it throws .
* /
info ( ) : TestInfo ;
}
type KeyValue = { [ key : string ] : any } ;
export type TestFixture < R , Args extends KeyValue > = ( args : Args , use : ( r : R ) = > Promise < void > , testInfo : TestInfo ) = > any ;
export type WorkerFixture < R , Args extends KeyValue > = ( args : Args , use : ( r : R ) = > Promise < void > , workerInfo : WorkerInfo ) = > any ;
type TestFixtureValue < R , Args extends KeyValue > = Exclude < R , Function > | TestFixture < R , Args > ;
type WorkerFixtureValue < R , Args extends KeyValue > = Exclude < R , Function > | WorkerFixture < R , Args > ;
export type Fixtures < T extends KeyValue = { } , W extends KeyValue = { } , PT extends KeyValue = { } , PW extends KeyValue = { } > = {
[ K in keyof PW ] ? : WorkerFixtureValue < PW [ K ] , W & PW > | [ WorkerFixtureValue < PW [ K ] , W & PW > , { scope : 'worker' , timeout? : number | undefined } ] ;
} & {
[ K in keyof PT ] ? : TestFixtureValue < PT [ K ] , T & W & PT & PW > | [ TestFixtureValue < PT [ K ] , T & W & PT & PW > , { scope : 'test' , timeout? : number | undefined } ] ;
} & {
[ K in keyof W ] ? : [ WorkerFixtureValue < W [ K ] , W & PW > , { scope : 'worker' , auto? : boolean , option? : boolean , timeout? : number | undefined } ] ;
} & {
[ K in keyof T ] ? : TestFixtureValue < T [ K ] , T & W & PT & PW > | [ TestFixtureValue < T [ K ] , T & W & PT & PW > , { scope ? : 'test' , auto? : boolean , option? : boolean , timeout? : number | undefined } ] ;
} ;
type BrowserName = 'chromium' | 'firefox' | 'webkit' ;
type BrowserChannel = Exclude < LaunchOptions [ ' channel ' ] , undefined > ;
type ColorScheme = Exclude < BrowserContextOptions [ ' colorScheme ' ] , undefined > ;
type ExtraHTTPHeaders = Exclude < BrowserContextOptions [ ' extraHTTPHeaders ' ] , undefined > ;
type Proxy = Exclude < BrowserContextOptions [ ' proxy ' ] , undefined > ;
type StorageState = Exclude < BrowserContextOptions [ ' storageState ' ] , undefined > ;
type ConnectOptions = {
/ * *
* A browser websocket endpoint to connect to .
* /
wsEndpoint : string ;
/ * *
* Additional HTTP headers to be sent with web socket connect request .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* Timeout in milliseconds for the connection to be established . Optional , defaults to no timeout .
* /
timeout? : number ;
} ;
/ * *
* Playwright Test provides many options to configure test environment , [ Browser ] , [ BrowserContext ] and more .
*
* These options are usually provided in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration) through
* [ testConfig . use ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-use) and
* [ testProject . use ] ( https : //playwright.dev/docs/api/class-testproject#test-project-use).
*
* ` ` ` ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
* const config : PlaywrightTestConfig = {
* use : {
* headless : false ,
* viewport : { width : 1280 , height : 720 } ,
* ignoreHTTPSErrors : true ,
* video : 'on-first-retry' ,
* } ,
* } ;
* export default config ;
* ` ` `
*
* Alternatively , with [ test . use ( options ) ] ( https : //playwright.dev/docs/api/class-test#test-use) you can override some
* options for a file .
*
* ` ` ` ts
* // example.spec.ts
* import { test , expect } from '@playwright/test' ;
*
* // Run tests in this file with portrait-like viewport.
* test . use ( { viewport : { width : 600 , height : 900 } } ) ;
*
* test ( 'my portrait test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* /
export interface PlaywrightWorkerOptions {
/ * *
* Name of the browser that runs tests . Defaults to ` 'chromium' ` . Most of the time you should set ` browserName ` in your
* [ TestConfig ] :
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* use : {
* browserName : 'firefox' ,
* } ,
* } ;
* export default config ;
* ` ` `
*
* /
browserName : BrowserName ;
defaultBrowserType : BrowserName ;
/ * *
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
* /
headless : boolean | undefined ;
/ * *
* Browser distribution channel . Supported values are "chrome" , "chrome-beta" , "chrome-dev" , "chrome-canary" , "msedge" ,
* "msedge-beta" , "msedge-dev" , "msedge-canary" . Read more about using
* [ Google Chrome and Microsoft Edge ] ( https : //playwright.dev/docs/browsers#google-chrome--microsoft-edge).
* /
channel : BrowserChannel | undefined ;
/ * *
* Options used to launch the browser , as passed to
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browser-type-launch). Specific options
* [ testOptions . headless ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-headless) and
* [ testOptions . channel ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-channel) take priority over this.
* /
launchOptions : LaunchOptions ;
/ * *
* When connect options are specified , default
* [ fixtures . browser ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-browser),
* [ fixtures . context ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-context) and
* [ fixtures . page ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-page) use the remote browser instead of
* launching a browser locally , and any launch options like
* [ testOptions . headless ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-headless) or
* [ testOptions . channel ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-channel) are ignored.
* /
connectOptions : ConnectOptions | undefined ;
/ * *
* Whether to automatically capture a screenshot after each test . Defaults to ` 'off' ` .
* - ` 'off' ` : Do not capture screenshots .
* - ` 'on' ` : Capture screenshot after each test .
* - ` 'only-on-failure' ` : Capture screenshot after each test failure .
*
* Learn more about [ automatic screenshots ] ( https : //playwright.dev/docs/test-configuration#automatic-screenshots).
* /
screenshot : 'off' | 'on' | 'only-on-failure' ;
/ * *
* Whether to record trace for each test . Defaults to ` 'off' ` .
* - ` 'off' ` : Do not record trace .
* - ` 'on' ` : Record trace for each test .
* - ` 'retain-on-failure' ` : Record trace for each test , but remove all traces from successful test runs .
* - ` 'on-first-retry' ` : Record trace only when retrying a test for the first time .
*
* For more control , pass an object that specifies ` mode ` and trace features to enable .
*
* Learn more about [ recording trace ] ( https : //playwright.dev/docs/test-configuration#record-test-trace).
* /
trace : TraceMode | /** deprecated */ 'retry-with-trace' | { mode : TraceMode , snapshots? : boolean , screenshots? : boolean , sources? : boolean } ;
/ * *
* Whether to record video for each test . Defaults to ` 'off' ` .
* - ` 'off' ` : Do not record video .
* - ` 'on' ` : Record video for each test .
* - ` 'retain-on-failure' ` : Record video for each test , but remove all videos from successful test runs .
* - ` 'on-first-retry' ` : Record video only when retrying a test for the first time .
*
* To control video size , pass an object with ` mode ` and ` size ` properties . If video size is not specified , it will be
* equal to [ testOptions . viewport ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-viewport) scaled down to
* fit into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . Actual picture of each
* page will be scaled down if necessary to fit the specified size .
*
* Learn more about [ recording video ] ( https : //playwright.dev/docs/test-configuration#record-video).
* /
video : VideoMode | /** deprecated */ 'retry-with-video' | { mode : VideoMode , size? : ViewportSize } ;
}
export type TraceMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' ;
export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' ;
/ * *
* Playwright Test provides many options to configure test environment , [ Browser ] , [ BrowserContext ] and more .
*
* These options are usually provided in the [ configuration file ] ( https : //playwright.dev/docs/test-configuration) through
* [ testConfig . use ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-use) and
* [ testProject . use ] ( https : //playwright.dev/docs/api/class-testproject#test-project-use).
*
* ` ` ` ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
* const config : PlaywrightTestConfig = {
* use : {
* headless : false ,
* viewport : { width : 1280 , height : 720 } ,
* ignoreHTTPSErrors : true ,
* video : 'on-first-retry' ,
* } ,
* } ;
* export default config ;
* ` ` `
*
* Alternatively , with [ test . use ( options ) ] ( https : //playwright.dev/docs/api/class-test#test-use) you can override some
* options for a file .
*
* ` ` ` ts
* // example.spec.ts
* import { test , expect } from '@playwright/test' ;
*
* // Run tests in this file with portrait-like viewport.
* test . use ( { viewport : { width : 600 , height : 900 } } ) ;
*
* test ( 'my portrait test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* /
2022-05-06 21:02:07 +02:00
export interface PlaywrightTestOptions {
2022-04-14 01:13:30 +02:00
/ * *
* Whether to automatically download all the attachments . Defaults to ` true ` where all the downloads are accepted .
* /
acceptDownloads : boolean | undefined ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP : boolean | undefined ;
/ * *
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults
* to ` 'light' ` .
* /
colorScheme : ColorScheme | undefined ;
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor : number | undefined ;
/ * *
* An object containing additional HTTP headers to be sent with every request .
* /
extraHTTPHeaders : ExtraHTTPHeaders | undefined ;
geolocation : Geolocation | undefined ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch : boolean | undefined ;
/ * *
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
* /
httpCredentials : HTTPCredentials | undefined ;
/ * *
* Whether to ignore HTTPS errors when sending network requests . Defaults to ` false ` .
* /
ignoreHTTPSErrors : boolean | undefined ;
/ * *
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
* /
isMobile : boolean | undefined ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled : boolean | undefined ;
/ * *
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
* /
locale : string | undefined ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline : boolean | undefined ;
/ * *
* A list of permissions to grant to all pages in this context . See
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
* for more details .
* /
permissions : string [ ] | undefined ;
/ * *
* Network proxy settings .
* /
proxy : Proxy | undefined ;
/ * *
* Populates context with given storage state . This option can be used to initialize context with logged - in information
* obtained via
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browser-context-storage-state).
* Either a path to the file with saved storage , or an object with the following fields :
* /
storageState : StorageState | undefined ;
/ * *
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
* /
timezoneId : string | undefined ;
/ * *
* Specific user agent to use in this context .
* /
userAgent : string | undefined ;
/ * *
* Emulates consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport : ViewportSize | null | undefined ;
/ * *
* When using [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-goto),
* [ page . route ( url , handler [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-route),
* [ page . waitForURL ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-url),
* [ page . waitForRequest ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-request), or
* [ page . waitForResponse ( urlOrPredicate [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-wait-for-response) it
* takes the base URL in consideration by using the [ ` URL() ` ] ( https : //developer.mozilla.org/en-US/docs/Web/API/URL/URL)
* constructor for building the corresponding URL . Examples :
* - baseURL : ` http://localhost:3000 ` and navigating to ` /bar.html ` results in ` http://localhost:3000/bar.html `
* - baseURL : ` http://localhost:3000/foo/ ` and navigating to ` ./bar.html ` results in ` http://localhost:3000/foo/bar.html `
* - baseURL : ` http://localhost:3000/foo ` ( without trailing slash ) and navigating to ` ./bar.html ` results in
* ` http://localhost:3000/bar.html `
* /
baseURL : string | undefined ;
/ * *
* Options used to create the context , as passed to
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browser-new-context). Specific options
* like [ testOptions . viewport ] ( https : //playwright.dev/docs/api/class-testoptions#test-options-viewport) take priority over
* this .
* /
contextOptions : BrowserContextOptions ;
/ * *
* Default timeout for each Playwright action in milliseconds , defaults to 0 ( no timeout ) .
*
* This is a default timeout for all Playwright actions , same as configured via
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-timeout).
*
* Learn more about [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
* /
actionTimeout : number | undefined ;
/ * *
* Timeout for each navigation action in milliseconds . Defaults to 0 ( no timeout ) .
*
* This is a default navigation timeout , same as configured via
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#page-set-default-navigation-timeout).
*
* Learn more about [ various timeouts ] ( https : //playwright.dev/docs/test-timeouts).
* /
navigationTimeout : number | undefined ;
}
/ * *
* Playwright Test is based on the concept of the [ test fixtures ] ( https : //playwright.dev/docs/test-fixtures). Test fixtures are used to establish
* environment for each test , giving the test everything it needs and nothing else .
*
* Playwright Test looks at each test declaration , analyses the set of fixtures the test needs and prepares those fixtures
* specifically for the test . Values prepared by the fixtures are merged into a single object that is available to the
* ` test ` , hooks , annotations and other fixtures as a first parameter .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* Given the test above , Playwright Test will set up the ` page ` fixture before running the test , and tear it down after the
* test has finished . ` page ` fixture provides a [ Page ] object that is available to the test .
*
* Playwright Test comes with builtin fixtures listed below , and you can add your own fixtures as well . Playwright Test
* also [ provides options ] [ TestOptions ] to configure
* [ fixtures . browser ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-browser),
* [ fixtures . context ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-context) and
* [ fixtures . page ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-page).
* /
export interface PlaywrightWorkerArgs {
playwright : typeof import ( 'playwright-core' ) ;
/ * *
* [ Browser ] instance is shared between all tests in the [ same worker ] ( https : //playwright.dev/docs/test-parallel) - this makes testing efficient.
* However , each test runs in an isolated [ BrowserContext ] and gets a fresh environment .
*
* Learn how to [ configure browser ] ( https : //playwright.dev/docs/test-configuration) and see [available options][TestOptions].
* /
browser : Browser ;
}
/ * *
* Playwright Test is based on the concept of the [ test fixtures ] ( https : //playwright.dev/docs/test-fixtures). Test fixtures are used to establish
* environment for each test , giving the test everything it needs and nothing else .
*
* Playwright Test looks at each test declaration , analyses the set of fixtures the test needs and prepares those fixtures
* specifically for the test . Values prepared by the fixtures are merged into a single object that is available to the
* ` test ` , hooks , annotations and other fixtures as a first parameter .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { page } ) = > {
* // ...
* } ) ;
* ` ` `
*
* Given the test above , Playwright Test will set up the ` page ` fixture before running the test , and tear it down after the
* test has finished . ` page ` fixture provides a [ Page ] object that is available to the test .
*
* Playwright Test comes with builtin fixtures listed below , and you can add your own fixtures as well . Playwright Test
* also [ provides options ] [ TestOptions ] to configure
* [ fixtures . browser ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-browser),
* [ fixtures . context ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-context) and
* [ fixtures . page ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-page).
* /
2022-05-06 21:02:07 +02:00
export interface PlaywrightTestArgs {
2022-04-14 01:13:30 +02:00
/ * *
* Isolated [ BrowserContext ] instance , created for each test . Since contexts are isolated between each other , every test
* gets a fresh environment , even when multiple tests run in a single [ Browser ] for maximum efficiency .
*
* Learn how to [ configure context ] ( https : //playwright.dev/docs/test-configuration) and see [available options][TestOptions].
*
* Default [ fixtures . page ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-page) belongs to this context.
* /
context : BrowserContext ;
/ * *
* Isolated [ Page ] instance , created for each test . Pages are isolated between tests due to
* [ fixtures . context ] ( https : //playwright.dev/docs/api/class-fixtures#fixtures-context) isolation.
*
* This is the most common fixture used in a test .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { page } ) = > {
* await page . goto ( '/signin' ) ;
* await page . fill ( '#username' , 'User' ) ;
* await page . fill ( '#password' , 'pwd' ) ;
* await page . click ( 'text=Sign in' ) ;
* // ...
* } ) ;
* ` ` `
*
* /
page : Page ;
/ * *
* Isolated [ APIRequestContext ] instance for each test .
*
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
*
* test ( 'basic test' , async ( { request } ) = > {
* await request . post ( '/signin' , {
* data : {
* username : 'user' ,
* password : 'password'
* }
* } ) ;
* // ...
* } ) ;
* ` ` `
*
* /
request : APIRequestContext ;
}
export type PlaywrightTestProject < TestArgs = {} , WorkerArgs = { } > = Project < PlaywrightTestOptions & TestArgs , PlaywrightWorkerOptions & WorkerArgs > ;
export type PlaywrightTestConfig < TestArgs = {} , WorkerArgs = { } > = Config < PlaywrightTestOptions & TestArgs , PlaywrightWorkerOptions & WorkerArgs > ;
2022-04-18 19:54:40 +02:00
import type * as expectType from '@playwright/test/types/expect-types' ;
2022-04-28 17:16:17 +02:00
import type { Suite } from '@playwright/test/types/testReporter' ;
2022-04-14 01:13:30 +02:00
type AsymmetricMatcher = Record < string , any > ;
type IfAny < T , Y , N > = 0 extends ( 1 & T ) ? Y : N ;
type ExtraMatchers < T , Type , Matchers > = T extends Type ? Matchers : IfAny < T , Matchers , {} > ;
2022-04-18 19:54:40 +02:00
type BaseMatchers < R , T > = expectType . Matchers < R > & PlaywrightTest . Matchers < R , T > ;
2022-04-14 01:13:30 +02:00
type MakeMatchers < R , T > = BaseMatchers < R , T > & {
/ * *
* If you know how to test something , ` .not ` lets you test its opposite .
* /
not : MakeMatchers < R , T > ;
/ * *
* Use resolves to unwrap the value of a fulfilled promise so any other
* matcher can be chained . If the promise is rejected the assertion fails .
* /
resolves : MakeMatchers < Promise < R > , Awaited < T > > ;
/ * *
* Unwraps the reason of a rejected promise so any other matcher can be chained .
* If the promise is fulfilled the assertion fails .
* /
rejects : MakeMatchers < Promise < R > , Awaited < T > > ;
} & ScreenshotAssertions &
ExtraMatchers < T , Page , PageAssertions > &
ExtraMatchers < T , Locator , LocatorAssertions > &
ExtraMatchers < T , APIResponse , APIResponseAssertions > ;
export type Expect = {
< T = unknown > ( actual : T , messageOrOptions? : string | { message? : string } ) : MakeMatchers < void , T > ;
soft : < T = unknown > ( actual : T , messageOrOptions? : string | { message? : string } ) = > MakeMatchers < void , T > ;
2022-04-27 06:32:38 +02:00
poll : < T = unknown > ( actual : ( ) = > T | Promise < T > , messageOrOptions? : string | { message? : string , timeout? : number , intervals? : number [ ] } ) = > BaseMatchers < Promise < void > , T > & {
2022-04-14 01:13:30 +02:00
/ * *
* If you know how to test something , ` .not ` lets you test its opposite .
* /
not : BaseMatchers < Promise < void > , T > ;
} ;
extend ( arg0 : any ) : void ;
getState ( ) : expectType . MatcherState ;
setState ( state : Partial < expectType.MatcherState > ) : void ;
any ( expectedObject : any ) : AsymmetricMatcher ;
anything ( ) : AsymmetricMatcher ;
arrayContaining ( sample : Array < unknown > ) : AsymmetricMatcher ;
objectContaining ( sample : Record < string , unknown > ) : AsymmetricMatcher ;
stringContaining ( expected : string ) : AsymmetricMatcher ;
stringMatching ( expected : string | RegExp ) : AsymmetricMatcher ;
/ * *
* Removed following methods because they rely on a test - runner integration from Jest which we don ' t support :
* - assertions ( )
* - extractExpectedAssertionsErrors ( )
* – hasAssertions ( )
* /
} ;
type Awaited < T > = T extends PromiseLike < infer U > ? U : T ;
/ * *
* These tests are executed in Playwright environment that launches the browser
* and provides a fresh page to each test .
* /
export const test : TestType < PlaywrightTestArgs & PlaywrightTestOptions , PlaywrightWorkerArgs & PlaywrightWorkerOptions > ;
export default test ;
export const _baseTest : TestType < { } , { } > ;
export const expect : Expect ;
// This is required to not export everything by default. See https://github.com/Microsoft/TypeScript/issues/19545#issuecomment-340490459
export { } ;
/ * *
* The [ APIResponseAssertions ] class provides assertion methods that can be used to make assertions about the [ APIResponse ]
* in the tests . A new instance of [ APIResponseAssertions ] is created by calling
* [ expect ( response ) ] ( https : //playwright.dev/docs/api/class-playwrightassertions#playwright-assertions-expect-api-response):
*
* ` ` ` js
* import { test , expect } from '@playwright/test' ;
*
* test ( 'navigates to login' , async ( { page } ) = > {
* // ...
* const response = await page . request . get ( 'https://playwright.dev' ) ;
* await expect ( response ) . toBeOK ( ) ;
* } ) ;
* ` ` `
*
* /
interface APIResponseAssertions {
/ * *
* Makes the assertion check for the opposite condition . For example , this code tests that the response status is not
* successful :
*
* ` ` ` js
* await expect ( response ) . not . toBeOK ( ) ;
* ` ` `
*
* /
not : APIResponseAssertions ;
/ * *
* Ensures the response status code is within [ 200 . . 299 ] range .
*
* ` ` ` js
* await expect ( response ) . toBeOK ( ) ;
* ` ` `
*
* /
toBeOK ( ) : Promise < void > ;
}
/ * *
* The [ LocatorAssertions ] class provides assertion methods that can be used to make assertions about the [ Locator ] state
* in the tests . A new instance of [ LocatorAssertions ] is created by calling
* [ expect ( locator ) ] ( https : //playwright.dev/docs/api/class-playwrightassertions#playwright-assertions-expect-locator):
*
* ` ` ` js
* import { test , expect } from '@playwright/test' ;
*
* test ( 'status becomes submitted' , async ( { page } ) = > {
* // ...
* await page . click ( '#submit-button' ) ;
* await expect ( page . locator ( '.status' ) ) . toHaveText ( 'Submitted' ) ;
* } ) ;
* ` ` `
*
* /
interface LocatorAssertions {
/ * *
* Makes the assertion check for the opposite condition . For example , this code tests that the Locator doesn ' t contain text
* ` "error" ` :
*
* ` ` ` js
* await expect ( locator ) . not . toContainText ( 'error' ) ;
* ` ` `
*
* /
not : LocatorAssertions ;
/ * *
* Ensures the [ Locator ] points to a checked input .
*
* ` ` ` js
* const locator = page . locator ( '.subscribe' ) ;
* await expect ( locator ) . toBeChecked ( ) ;
* ` ` `
*
* @param options
* /
toBeChecked ( options ? : {
checked? : boolean ;
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2022-04-19 02:06:01 +02:00
* Ensures the [ Locator ] points to a disabled element . Element is disabled if it has "disabled" attribute or is disabled
* via [ 'aria-disabled' ] ( https : //developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-disabled). Note
* that only native control elements such as HTML ` button ` , ` input ` , ` select ` , ` textarea ` , ` option ` , ` optgroup ` can be
* disabled by setting "disabled" attribute . "disabled" attribute on other elements is ignored by the browser .
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
* const locator = page . locator ( 'button.submit' ) ;
* await expect ( locator ) . toBeDisabled ( ) ;
* ` ` `
*
* @param options
* /
toBeDisabled ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an editable element .
*
* ` ` ` js
* const locator = page . locator ( 'input' ) ;
* await expect ( locator ) . toBeEditable ( ) ;
* ` ` `
*
* @param options
* /
toBeEditable ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an empty editable element or to a DOM node that has no text .
*
* ` ` ` js
* const locator = page . locator ( 'div.warning' ) ;
* await expect ( locator ) . toBeEmpty ( ) ;
* ` ` `
*
* @param options
* /
toBeEmpty ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an enabled element .
*
* ` ` ` js
* const locator = page . locator ( 'button.submit' ) ;
* await expect ( locator ) . toBeEnabled ( ) ;
* ` ` `
*
* @param options
* /
toBeEnabled ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to a focused DOM node .
*
* ` ` ` js
* const locator = page . locator ( 'input' ) ;
* await expect ( locator ) . toBeFocused ( ) ;
* ` ` `
*
* @param options
* /
toBeFocused ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to a hidden DOM node , which is the opposite of [ visible ] ( https : //playwright.dev/docs/api/actionability#visible).
*
* ` ` ` js
* const locator = page . locator ( '.my-element' ) ;
* await expect ( locator ) . toBeHidden ( ) ;
* ` ` `
*
* @param options
* /
toBeHidden ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to a [ visible ] ( https : //playwright.dev/docs/api/actionability#visible) DOM node.
*
* ` ` ` js
* const locator = page . locator ( '.my-element' ) ;
* await expect ( locator ) . toBeVisible ( ) ;
* ` ` `
*
* @param options
* /
toBeVisible ( options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an element that contains the given text . You can use regular expressions for the value
* as well .
*
* ` ` ` js
* const locator = page . locator ( '.title' ) ;
* await expect ( locator ) . toContainText ( 'substring' ) ;
* await expect ( locator ) . toContainText ( /\d messages/ ) ;
* ` ` `
*
* Note that if array is passed as an expected value , entire lists of elements can be asserted :
*
* ` ` ` js
* const locator = page . locator ( 'list > .list-item' ) ;
* await expect ( locator ) . toContainText ( [ 'Text 1' , 'Text 4' , 'Text 5' ] ) ;
* ` ` `
*
* @param expected Expected substring or RegExp or a list of those .
* @param options
* /
toContainText ( expected : string | RegExp | Array < string | RegExp > , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
/ * *
* Whether to use ` element.innerText ` instead of ` element.textContent ` when retrieving DOM node text .
* /
useInnerText? : boolean ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an element with given attribute .
*
* ` ` ` js
* const locator = page . locator ( 'input' ) ;
* await expect ( locator ) . toHaveAttribute ( 'type' , 'text' ) ;
* ` ` `
*
* @param name Attribute name .
* @param value Expected attribute value .
* @param options
* /
toHaveAttribute ( name : string , value : string | RegExp , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an element with given CSS class .
*
* ` ` ` js
* const locator = page . locator ( '#component' ) ;
* await expect ( locator ) . toHaveClass ( /selected/ ) ;
* ` ` `
*
* Note that if array is passed as an expected value , entire lists of elements can be asserted :
*
* ` ` ` js
* const locator = page . locator ( 'list > .component' ) ;
* await expect ( locator ) . toHaveClass ( [ 'component' , 'component selected' , 'component' ] ) ;
* ` ` `
*
* @param expected Expected class or RegExp or a list of those .
* @param options
* /
toHaveClass ( expected : string | RegExp | Array < string | RegExp > , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2022-04-15 19:27:38 +02:00
* Ensures the [ Locator ] resolves to an exact number of DOM nodes .
*
* ` ` ` js
* const list = page . locator ( 'list > .component' ) ;
* await expect ( list ) . toHaveCount ( 3 ) ;
* ` ` `
*
* @param count Expected count .
* @param options
* /
toHaveCount ( count : number , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] resolves to an element with the given computed CSS style .
*
* ` ` ` js
* const locator = page . locator ( 'button' ) ;
* await expect ( locator ) . toHaveCSS ( 'display' , 'flex' ) ;
* ` ` `
*
* @param name CSS property name .
* @param value CSS property value .
* @param options
* /
toHaveCSS ( name : string , value : string | RegExp , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an element with the given DOM Node ID .
*
* ` ` ` js
* const locator = page . locator ( 'input' ) ;
* await expect ( locator ) . toHaveId ( 'lastname' ) ;
* ` ` `
*
* @param id Element id .
* @param options
* /
toHaveId ( id : string | RegExp , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an element with given JavaScript property . Note that this property can be of a primitive
* type as well as a plain serializable JavaScript object .
*
* ` ` ` js
* const locator = page . locator ( '.component' ) ;
* await expect ( locator ) . toHaveJSProperty ( 'loaded' , true ) ;
* ` ` `
*
* @param name Property name .
* @param value Property value .
* @param options
* /
toHaveJSProperty ( name : string , value : any , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
2022-05-16 16:53:46 +02:00
/ * *
2022-05-24 19:54:32 +02:00
* This function will wait until two consecutive locator screenshots yield the same result , and then compare the last
* screenshot with the expectation .
2022-05-16 16:53:46 +02:00
*
* ` ` ` js
* const locator = page . locator ( 'button' ) ;
* await expect ( locator ) . toHaveScreenshot ( 'image.png' ) ;
* ` ` `
*
* @param name Snapshot name .
* @param options
* /
toHaveScreenshot ( name : string | Array < string > , options ? : {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
2022-05-16 21:26:23 +02:00
* Defaults to ` "disabled" ` that disables animations .
2022-05-16 16:53:46 +02:00
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* An acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` . Default is
* configurable with ` TestConfig.expect ` . Unset by default .
* /
maxDiffPixelRatio? : number ;
/ * *
2022-05-29 18:46:06 +02:00
* An acceptable amount of pixels that could be different . Default is configurable with ` TestConfig.expect ` . Unset by
* default .
2022-05-16 16:53:46 +02:00
* /
maxDiffPixels? : number ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "css" ` .
2022-05-16 16:53:46 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* An acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) , default is configurable with ` TestConfig.expect ` .
* Defaults to ` 0.2 ` .
* /
threshold? : number ;
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
2022-04-15 19:27:38 +02:00
/ * *
2022-05-24 19:54:32 +02:00
* This function will wait until two consecutive locator screenshots yield the same result , and then compare the last
* screenshot with the expectation .
2022-04-15 19:27:38 +02:00
*
* ` ` ` js
* const locator = page . locator ( 'button' ) ;
* await expect ( locator ) . toHaveScreenshot ( ) ;
* ` ` `
*
* @param options
* /
toHaveScreenshot ( options ? : {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
2022-05-16 21:26:23 +02:00
* Defaults to ` "disabled" ` that disables animations .
2022-04-15 19:27:38 +02:00
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* An acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` . Default is
* configurable with ` TestConfig.expect ` . Unset by default .
* /
maxDiffPixelRatio? : number ;
/ * *
2022-05-29 18:46:06 +02:00
* An acceptable amount of pixels that could be different . Default is configurable with ` TestConfig.expect ` . Unset by
* default .
2022-04-15 19:27:38 +02:00
* /
maxDiffPixels? : number ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "css" ` .
2022-04-15 19:27:38 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* An acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) , default is configurable with ` TestConfig.expect ` .
* Defaults to ` 0.2 ` .
* /
threshold? : number ;
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the [ Locator ] points to an element with the given text . You can use regular expressions for the value as well .
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* const locator = page . locator ( '.title' ) ;
* await expect ( locator ) . toHaveText ( /Welcome, Test User/ ) ;
* await expect ( locator ) . toHaveText ( / W e l c o m e , . * \ / ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* Note that if array is passed as an expected value , entire lists of elements can be asserted :
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* const locator = page . locator ( 'list > .component' ) ;
* await expect ( locator ) . toHaveText ( [ 'Text 1' , 'Text 2' , 'Text 3' ] ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* @param expected Expected substring or RegExp or a list of those .
2022-04-14 01:13:30 +02:00
* @param options
* /
2022-04-15 19:27:38 +02:00
toHaveText ( expected : string | RegExp | Array < string | RegExp > , options ? : {
2022-04-14 01:13:30 +02:00
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
2022-04-15 19:27:38 +02:00
/ * *
* Whether to use ` element.innerText ` instead of ` element.textContent ` when retrieving DOM node text .
* /
useInnerText? : boolean ;
2022-04-14 01:13:30 +02:00
} ) : Promise < void > ;
/ * *
2022-04-15 19:27:38 +02:00
* Ensures the [ Locator ] points to an element with the given input value . You can use regular expressions for the value as
* well .
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* const locator = page . locator ( 'input[type=number]' ) ;
* await expect ( locator ) . toHaveValue ( /[0-9]/ ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* @param value Expected value .
2022-04-14 01:13:30 +02:00
* @param options
* /
2022-04-15 19:27:38 +02:00
toHaveValue ( value : string | RegExp , options ? : {
2022-04-14 01:13:30 +02:00
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
2022-04-15 19:27:38 +02:00
}
2022-04-14 01:13:30 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* The [ PageAssertions ] class provides assertion methods that can be used to make assertions about the [ Page ] state in the
* tests . A new instance of [ PageAssertions ] is created by calling
* [ expect ( page ) ] ( https : //playwright.dev/docs/api/class-playwrightassertions#playwright-assertions-expect-page):
*
* ` ` ` js
* import { test , expect } from '@playwright/test' ;
*
* test ( 'navigates to login' , async ( { page } ) = > {
* // ...
* await page . click ( '#login' ) ;
* await expect ( page ) . toHaveURL ( /.*\/login/ ) ;
* } ) ;
* ` ` `
*
* /
interface PageAssertions {
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Makes the assertion check for the opposite condition . For example , this code tests that the page URL doesn ' t contain
* ` "error" ` :
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* await expect ( page ) . not . toHaveURL ( 'error' ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
not : PageAssertions ;
2022-04-14 01:13:30 +02:00
2022-05-16 16:53:46 +02:00
/ * *
2022-05-24 19:54:32 +02:00
* This function will wait until two consecutive page screenshots yield the same result , and then compare the last
* screenshot with the expectation .
2022-05-16 16:53:46 +02:00
*
* ` ` ` js
* await expect ( page ) . toHaveScreenshot ( 'image.png' ) ;
* ` ` `
*
* @param name Snapshot name .
* @param options
* /
toHaveScreenshot ( name : string | Array < string > , options ? : {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
2022-05-16 21:26:23 +02:00
* Defaults to ` "disabled" ` that disables animations .
2022-05-16 16:53:46 +02:00
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
/ * *
* An object which specifies clipping of the resulting image . Should have the following fields :
* /
clip ? : {
/ * *
* x - coordinate of top - left corner of clip area
* /
x : number ;
/ * *
* y - coordinate of top - left corner of clip area
* /
y : number ;
/ * *
* width of clipping area
* /
width : number ;
/ * *
* height of clipping area
* /
height : number ;
} ;
/ * *
* When true , takes a screenshot of the full scrollable page , instead of the currently visible viewport . Defaults to
* ` false ` .
* /
fullPage? : boolean ;
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* An acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` . Default is
* configurable with ` TestConfig.expect ` . Unset by default .
* /
maxDiffPixelRatio? : number ;
/ * *
2022-05-29 18:46:06 +02:00
* An acceptable amount of pixels that could be different . Default is configurable with ` TestConfig.expect ` . Unset by
* default .
2022-05-16 16:53:46 +02:00
* /
maxDiffPixels? : number ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "css" ` .
2022-05-16 16:53:46 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* An acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) , default is configurable with ` TestConfig.expect ` .
* Defaults to ` 0.2 ` .
* /
threshold? : number ;
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
2022-04-14 22:22:42 +02:00
/ * *
2022-05-24 19:54:32 +02:00
* This function will wait until two consecutive page screenshots yield the same result , and then compare the last
* screenshot with the expectation .
2022-04-14 22:22:42 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* await expect ( page ) . toHaveScreenshot ( ) ;
2022-04-14 22:22:42 +02:00
* ` ` `
*
* @param options
* /
toHaveScreenshot ( options ? : {
/ * *
* When set to ` "disabled" ` , stops CSS animations , CSS transitions and Web Animations . Animations get different treatment
* depending on their duration :
* - finite animations are fast - forwarded to completion , so they ' ll fire ` transitionend ` event .
* - infinite animations are canceled to initial state , and then played over after the screenshot .
*
2022-05-16 21:26:23 +02:00
* Defaults to ` "disabled" ` that disables animations .
2022-04-14 22:22:42 +02:00
* /
animations ? : "disabled" | "allow" ;
/ * *
* When set to ` "hide" ` , screenshot will hide text caret . When set to ` "initial" ` , text caret behavior will not be changed .
* Defaults to ` "hide" ` .
* /
caret ? : "hide" | "initial" ;
2022-04-15 19:27:38 +02:00
/ * *
* An object which specifies clipping of the resulting image . Should have the following fields :
* /
clip ? : {
/ * *
* x - coordinate of top - left corner of clip area
* /
x : number ;
/ * *
* y - coordinate of top - left corner of clip area
* /
y : number ;
/ * *
* width of clipping area
* /
width : number ;
/ * *
* height of clipping area
* /
height : number ;
} ;
/ * *
* When true , takes a screenshot of the full scrollable page , instead of the currently visible viewport . Defaults to
* ` false ` .
* /
fullPage? : boolean ;
2022-04-14 22:22:42 +02:00
/ * *
* Specify locators that should be masked when the screenshot is taken . Masked elements will be overlayed with a pink box
* ` #FF00FF ` that completely covers its bounding box .
* /
mask? : Array < Locator > ;
/ * *
* An acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` . Default is
* configurable with ` TestConfig.expect ` . Unset by default .
* /
maxDiffPixelRatio? : number ;
/ * *
2022-05-29 18:46:06 +02:00
* An acceptable amount of pixels that could be different . Default is configurable with ` TestConfig.expect ` . Unset by
* default .
2022-04-14 22:22:42 +02:00
* /
maxDiffPixels? : number ;
/ * *
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
* /
omitBackground? : boolean ;
/ * *
* When set to ` "css" ` , screenshot will have a single pixel per each css pixel on the page . For high - dpi devices , this will
* keep screenshots small . Using ` "device" ` option will produce a single pixel per each device pixel , so screenhots of
2022-05-16 21:26:23 +02:00
* high - dpi devices will be twice as large or even larger .
*
* Defaults to ` "css" ` .
2022-04-14 22:22:42 +02:00
* /
scale ? : "css" | "device" ;
/ * *
* An acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) , default is configurable with ` TestConfig.expect ` .
* Defaults to ` 0.2 ` .
* /
threshold? : number ;
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Ensures the page has the given title .
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* await expect ( page ) . toHaveTitle ( /.*checkout/ ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* @param titleOrRegExp Expected title or RegExp .
* @param options
* /
toHaveTitle ( titleOrRegExp : string | RegExp , options ? : {
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Ensures the page is navigated to the given URL .
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* await expect ( page ) . toHaveURL ( /.*checkout/ ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* @param urlOrRegExp Expected substring or RegExp .
2022-04-14 01:13:30 +02:00
* @param options
* /
2022-04-15 19:27:38 +02:00
toHaveURL ( urlOrRegExp : string | RegExp , options ? : {
2022-04-14 01:13:30 +02:00
/ * *
* Time to retry the assertion for . Defaults to ` timeout ` in ` TestConfig.expect ` .
* /
timeout? : number ;
2022-04-15 19:27:38 +02:00
} ) : Promise < void > ;
}
/ * *
* Playwright provides methods for comparing page and element screenshots with expected values stored in files .
*
* ` ` ` js
* expect ( screenshot ) . toMatchSnapshot ( 'landing-page.png' ) ;
* ` ` `
*
* /
interface ScreenshotAssertions {
/ * *
* Ensures that passed value , either a [ string ] or a [ Buffer ] , matches the expected snapshot stored in the test snapshots
* directory .
*
* ` ` ` js
* // Basic usage.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( 'landing-page.png' ) ;
*
* // Pass options to customize the snapshot comparison and have a generated name.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( 'landing-page.png' , {
* maxDiffPixels : 27 , // allow no more than 27 different pixels.
* } ) ;
*
* // Configure image matching threshold.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( 'landing-page.png' , { threshold : 0.3 } ) ;
*
* // Bring some structure to your snapshot files by passing file path segments.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( [ 'landing' , 'step2.png' ] ) ;
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( [ 'landing' , 'step3.png' ] ) ;
* ` ` `
*
* Learn more about [ visual comparisons ] ( https : //playwright.dev/docs/api/test-snapshots).
* @param name Snapshot name .
* @param options
* /
toMatchSnapshot ( name : string | Array < string > , options ? : {
/ * *
* An acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` . Default is
* configurable with ` TestConfig.expect ` . Unset by default .
* /
maxDiffPixelRatio? : number ;
2022-04-14 01:13:30 +02:00
/ * *
2022-05-29 18:46:06 +02:00
* An acceptable amount of pixels that could be different . Default is configurable with ` TestConfig.expect ` . Unset by
* default .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
maxDiffPixels? : number ;
/ * *
* An acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) , default is configurable with ` TestConfig.expect ` .
* Defaults to ` 0.2 ` .
* /
threshold? : number ;
} ) : void ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Ensures that passed value , either a [ string ] or a [ Buffer ] , matches the expected snapshot stored in the test snapshots
* directory .
2022-04-14 01:13:30 +02:00
*
* ` ` ` js
2022-04-15 19:27:38 +02:00
* // Basic usage and the file name is derived from the test name.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( ) ;
*
* // Pass options to customize the snapshot comparison and have a generated name.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( {
* maxDiffPixels : 27 , // allow no more than 27 different pixels.
* } ) ;
*
* // Configure image matching threshold and snapshot name.
* expect ( await page . screenshot ( ) ) . toMatchSnapshot ( {
* name : 'landing-page.png' ,
* threshold : 0.3 ,
* } ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* Learn more about [ visual comparisons ] ( https : //playwright.dev/docs/api/test-snapshots).
2022-04-14 01:13:30 +02:00
* @param options
* /
2022-04-15 19:27:38 +02:00
toMatchSnapshot ( options ? : {
/ * *
* An acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` . Default is
* configurable with ` TestConfig.expect ` . Unset by default .
* /
maxDiffPixelRatio? : number ;
/ * *
2022-05-29 18:46:06 +02:00
* An acceptable amount of pixels that could be different . Default is configurable with ` TestConfig.expect ` . Unset by
* default .
2022-04-15 19:27:38 +02:00
* /
maxDiffPixels? : number ;
/ * *
* Snapshot name . If not passed , the test name and ordinals are used when called multiple times .
* /
name? : string | Array < string > ;
/ * *
* An acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) , default is configurable with ` TestConfig.expect ` .
* Defaults to ` 0.2 ` .
* /
threshold? : number ;
} ) : void ;
}
/ * *
* Information about an error thrown during test execution .
* /
export interface TestError {
/ * *
* Error message . Set when [ Error ] ( or its subclass ) has been thrown .
* /
message? : string ;
/ * *
* Error stack . Set when [ Error ] ( or its subclass ) has been thrown .
* /
stack? : string ;
/ * *
* The value that was thrown . Set when anything except the [ Error ] ( or its subclass ) has been thrown .
* /
value? : string ;
2022-04-14 01:13:30 +02:00
}
/ * *
2022-04-15 19:27:38 +02:00
* Playwright Test supports running multiple test projects at the same time . This is useful for running tests in multiple
* configurations . For example , consider running tests against multiple browsers .
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` TestProject ` encapsulates configuration specific to a single project . Projects are configured in
* [ testConfig . projects ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-projects) specified in the
* [ configuration file ] ( https : //playwright.dev/docs/test-configuration). Note that all properties of [TestProject] are available in the top-level
* [ TestConfig ] , in which case they are shared between all projects .
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* Here is an example configuration that runs every test in Chromium , Firefox and WebKit , both Desktop and Mobile versions .
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import { type PlaywrightTestConfig , devices } from '@playwright/test' ;
2022-04-15 19:27:38 +02:00
*
* const config : PlaywrightTestConfig = {
* // Options shared for all projects.
* timeout : 30000 ,
* use : {
* ignoreHTTPSErrors : true ,
* } ,
*
* // Options specific to each project.
* projects : [
* {
* name : 'Desktop Chromium' ,
* use : {
* browserName : 'chromium' ,
* viewport : { width : 1280 , height : 720 } ,
* } ,
* } ,
* {
* name : 'Desktop Safari' ,
* use : {
* browserName : 'webkit' ,
* viewport : { width : 1280 , height : 720 } ,
* }
* } ,
* {
* name : 'Desktop Firefox' ,
* use : {
* browserName : 'firefox' ,
* viewport : { width : 1280 , height : 720 } ,
* }
* } ,
* {
* name : 'Mobile Chrome' ,
* use : devices [ 'Pixel 5' ] ,
* } ,
* {
* name : 'Mobile Safari' ,
* use : devices [ 'iPhone 12' ] ,
* } ,
* ] ,
* } ;
* export default config ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
* /
2022-04-15 19:27:38 +02:00
interface TestProject {
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Configuration for the ` expect ` assertion library .
2022-04-14 22:22:42 +02:00
*
2022-04-15 19:27:38 +02:00
* Use [ testConfig . expect ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-expect) to change this option for
* all projects .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
expect ? : {
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Default timeout for async expect matchers in milliseconds , defaults to 5000 ms .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
timeout? : number ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Configuration for the
2022-05-16 16:53:46 +02:00
* [ pageAssertions . toHaveScreenshot ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1)
2022-04-15 19:27:38 +02:00
* method .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
toHaveScreenshot ? : {
/ * *
* an acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) . Defaults to ` 0.2 ` .
* /
threshold? : number ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* an acceptable amount of pixels that could be different , unset by default .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
maxDiffPixels? : number ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* an acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` , unset by default .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
maxDiffPixelRatio? : number ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* See ` animations ` in [ page . screenshot ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-screenshot). Defaults
2022-05-24 20:34:29 +02:00
* to ` "disabled" ` .
2022-04-14 22:22:42 +02:00
* /
2022-05-24 20:34:29 +02:00
animations ? : "allow" | "disabled" ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* See ` caret ` in [ page . screenshot ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-screenshot). Defaults to
* ` "hide" ` .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
caret ? : "hide" | "initial" ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* See ` scale ` in [ page . screenshot ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#page-screenshot). Defaults to
* ` "css" ` .
* /
scale ? : "css" | "device" ;
} ;
2022-04-14 22:22:42 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Configuration for the
* [ screenshotAssertions . toMatchSnapshot ( name [ , options ] ) ] ( https : //playwright.dev/docs/api/class-screenshotassertions#screenshot-assertions-to-match-snapshot-1)
* method .
2022-04-14 22:22:42 +02:00
* /
2022-04-15 19:27:38 +02:00
toMatchSnapshot ? : {
/ * *
* an acceptable perceived color difference in the [ YIQ color space ] ( https : //en.wikipedia.org/wiki/YIQ) between the same
* pixel in compared images , between zero ( strict ) and one ( lax ) . Defaults to ` 0.2 ` .
* /
threshold? : number ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* an acceptable amount of pixels that could be different , unset by default .
* /
maxDiffPixels? : number ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* an acceptable ratio of pixels that are different to the total amount of pixels , between ` 0 ` and ` 1 ` , unset by default .
* /
maxDiffPixelRatio? : number ;
} ;
} ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* Playwright Test runs tests in parallel . In order to achieve that , it runs several worker processes that run at the same
* time . By default , * * test files * * are run in parallel . Tests in a single file are run in order , in the same worker
* process .
*
* You can configure entire test project to concurrently run all tests in all files using this option .
* /
fullyParallel? : boolean ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* Filter to only run tests with a title matching one of the patterns . For example , passing ` grep: /cart/ ` should only run
* tests with "cart" in the title . Also available globally and in the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `-g` option.
*
* ` grep ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
grep? : RegExp | Array < RegExp > ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* Filter to only run tests with a title * * not * * matching one of the patterns . This is the opposite of
* [ testProject . grep ] ( https : //playwright.dev/docs/api/class-testproject#test-project-grep). Also available globally and in
* the [ command line ] ( https : //playwright.dev/docs/test-cli) with the `--grep-invert` option.
*
* ` grepInvert ` option is also useful for [ tagging tests ] ( https : //playwright.dev/docs/test-annotations#tag-tests).
* /
grepInvert? : RegExp | Array < RegExp > ;
2022-04-14 22:22:42 +02:00
2022-04-15 19:27:38 +02:00
/ * *
2022-05-04 22:16:11 +02:00
* Metadata that will be put directly to the test report serialized as JSON .
2022-04-15 19:27:38 +02:00
* /
2022-05-04 22:16:11 +02:00
metadata? : Metadata ;
2022-04-15 19:27:38 +02:00
/ * *
* Project name is visible in the report and during test execution .
* /
name? : string ;
2022-04-14 22:22:42 +02:00
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* The base directory , relative to the config file , for screenshot files created with ` toHaveScreenshot ` . Defaults to
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` ` `
* < directory - of - configuration - file > / __screenshots__ / < platform name > / < project name >
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* This path will serve as the base directory for each test file screenshot directory . For example , the following test
* structure :
*
* ` ` `
* smoke - tests /
* └ ─ ─ basic . spec . ts
* ` ` `
*
* will result in the following screenshots folder structure :
*
* ` ` `
* __screenshots__ /
* └ ─ ─ darwin /
* ├ ─ ─ Mobile Safari /
* │ └ ─ ─ smoke - tests /
* │ └ ─ ─ basic . spec . ts /
* │ └ ─ ─ screenshot - expectation . png
* └ ─ ─ Desktop Chrome /
* └ ─ ─ smoke - tests /
* └ ─ ─ basic . spec . ts /
* └ ─ ─ screenshot - expectation . png
* ` ` `
*
* where :
* - ` darwin/ ` - a platform name folder
* - ` Mobile Safari ` and ` Desktop Chrome ` - project names
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
screenshotsDir? : string ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* The base directory , relative to the config file , for snapshot files created with ` toMatchSnapshot ` . Defaults to
* [ testProject . testDir ] ( https : //playwright.dev/docs/api/class-testproject#test-project-test-dir).
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* The directory for each test can be accessed by
* [ testInfo . snapshotDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-dir) and
* [ testInfo . snapshotPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-path).
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* This path will serve as the base directory for each test file snapshot directory . Setting ` snapshotDir ` to
* ` 'snapshots' ` , the [ testInfo . snapshotDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-snapshot-dir) would
* resolve to ` snapshots/a.spec.js-snapshots ` .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
snapshotDir? : string ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* The output directory for files created during test execution . Defaults to ` <package.json-directory>/test-results ` .
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* This directory is cleaned at the start . When running a test , a unique subdirectory inside the
* [ testProject . outputDir ] ( https : //playwright.dev/docs/api/class-testproject#test-project-output-dir) is created,
* guaranteeing that test running in parallel do not conflict . This directory can be accessed by
* [ testInfo . outputDir ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-dir) and
* [ testInfo . outputPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-path).
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* Here is an example that uses
* [ testInfo . outputPath ( . . . pathSegments ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-output-path) to create a
* temporary file .
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` ` ` ts
* import { test , expect } from '@playwright/test' ;
* import fs from 'fs' ;
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* test ( 'example test' , async ( { } , testInfo ) = > {
* const file = testInfo . outputPath ( 'temporary-file.txt' ) ;
* await fs . promises . writeFile ( file , 'Put some data to the file' , 'utf8' ) ;
* } ) ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* Use [ testConfig . outputDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-output-dir) to change this
* option for all projects .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
outputDir? : string ;
2022-04-14 01:13:30 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* The number of times to repeat each test , useful for debugging flaky tests .
*
* Use [ testConfig . repeatEach ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-repeat-each) to change this
* option for all projects .
* /
repeatEach? : number ;
2022-04-14 01:13:30 +02:00
2022-04-15 19:27:38 +02:00
/ * *
* The maximum number of retry attempts given to failed tests . Learn more about [ test retries ] ( https : //playwright.dev/docs/test-retries#retries).
*
* Use [ testConfig . retries ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-retries) to change this option for
* all projects .
* /
retries? : number ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Directory that will be recursively scanned for test files . Defaults to the directory of the configuration file .
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* Each project can use a different directory . Here is an example that runs smoke tests in three browsers and all other
* tests in stable Chrome browser .
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
2022-04-15 19:27:38 +02:00
* const config : PlaywrightTestConfig = {
* projects : [
* {
* name : 'Smoke Chromium' ,
* testDir : './smoke-tests' ,
* use : {
* browserName : 'chromium' ,
* }
* } ,
* {
* name : 'Smoke WebKit' ,
* testDir : './smoke-tests' ,
* use : {
* browserName : 'webkit' ,
* }
* } ,
* {
* name : 'Smoke Firefox' ,
* testDir : './smoke-tests' ,
* use : {
* browserName : 'firefox' ,
* }
* } ,
* {
* name : 'Chrome Stable' ,
* testDir : './' ,
* use : {
* browserName : 'chromium' ,
* channel : 'chrome' ,
* }
* } ,
* ] ,
* } ;
* export default config ;
2022-04-14 01:13:30 +02:00
* ` ` `
*
2022-04-15 19:27:38 +02:00
* Use [ testConfig . testDir ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-dir) to change this option
* for all projects .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
testDir? : string ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Files matching one of these patterns are not executed as test files . Matching is performed against the absolute file
* path . Strings are treated as glob patterns .
*
* For example , ` '** \ /test-assets/**' ` will ignore any files in the ` test-assets ` directory .
*
* Use [ testConfig . testIgnore ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-ignore) to change this
* option for all projects .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
testIgnore? : string | RegExp | Array < string | RegExp > ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Only the files matching one of these patterns are executed as test files . Matching is performed against the absolute
* file path . Strings are treated as glob patterns .
*
* By default , Playwright Test looks for files matching ` .*(test|spec) \ .(js|ts|mjs) ` .
*
* Use [ testConfig . testMatch ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-test-match) to change this
* option for all projects .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
testMatch? : string | RegExp | Array < string | RegExp > ;
2022-04-14 01:13:30 +02:00
/ * *
2022-04-15 19:27:38 +02:00
* Timeout for each test in milliseconds . Defaults to 30 seconds .
*
* This is a base timeout for all tests . In addition , each test can configure its own timeout with
* [ test . setTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-test#test-set-timeout).
*
* Use [ testConfig . timeout ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-timeout) to change this option for
* all projects .
2022-04-14 01:13:30 +02:00
* /
2022-04-15 19:27:38 +02:00
timeout? : number ;
2022-04-14 01:13:30 +02:00
}
2022-04-27 17:14:37 +02:00
interface TestConfigWebServer {
/ * *
* Shell command to start . For example ` npm run start ` . .
* /
command : string ;
/ * *
* The port that your http server is expected to appear on . It does wait until it accepts connections . Exactly one of
* ` port ` or ` url ` is required .
* /
port? : number ;
/ * *
* The url on your http server that is expected to return a 2 xx status code when the server is ready to accept connections .
* Exactly one of ` port ` or ` url ` is required .
* /
url? : string ;
/ * *
* Whether to ignore HTTPS errors when fetching the ` url ` . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
* How long to wait for the process to start up and be available in milliseconds . Defaults to 60000 .
* /
timeout? : number ;
/ * *
* If true , it will re - use an existing server on the ` port ` or ` url ` when available . If no server is running on that ` port `
* or ` url ` , it will run the command to start a new server . If ` false ` , it will throw if an existing process is listening
* on the ` port ` or ` url ` . This should be commonly set to ` !process.env.CI ` to allow the local dev server when running
* tests locally .
* /
reuseExistingServer? : boolean ;
/ * *
* Current working directory of the spawned process , defaults to the directory of the configuration file .
* /
cwd? : string ;
/ * *
* Environment variables to set for the command , ` process.env ` by default .
* /
env ? : { [ key : string ] : string ; } ;
}
2022-04-14 01:13:30 +02:00
}
declare module '@playwright/test/reporter' {
// This file is generated by /utils/generate_types/index.js
/ * *
* Copyright ( c ) Microsoft Corporation .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
2022-05-04 22:16:11 +02:00
import type { FullConfig , FullProject , TestStatus , TestError , Metadata } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
export type { FullConfig , TestStatus , TestError } from '@playwright/test' ;
/ * *
* ` Suite ` is a group of tests . All tests in Playwright Test form the following hierarchy :
* - Root suite has a child suite for each [ TestProject ] .
* - Project suite # 1 . Has a child suite for each test file in the project .
* - File suite # 1
* - [ TestCase ] # 1
* - [ TestCase ] # 2
* - Suite corresponding to a
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) group
* - [ TestCase ] # 1 in a group
* - [ TestCase ] # 2 in a group
* - < more test cases . . . >
* - File suite # 2
* - < more file suites . . . >
* - Project suite # 2
* - < more project suites . . . >
*
* Reporter is given a root suite in the
* [ reporter . onBegin ( config , suite ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-begin) method.
* /
export interface Suite {
/ * *
* Configuration of the project this suite belongs to , or [ void ] for the root suite .
* /
project ( ) : FullProject | undefined ;
/ * *
* Returns the list of all test cases in this suite and its descendants , as opposite to
* [ suite . tests ] ( https : //playwright.dev/docs/api/class-suite#suite-tests).
* /
allTests ( ) : Array < TestCase > ;
/ * *
* Location in the source where the suite is defined . Missing for root and project suites .
* /
location? : Location ;
/ * *
* Parent suite , missing for the root suite .
* /
parent? : Suite ;
/ * *
* Child suites . See [ Suite ] for the hierarchy of suites .
* /
suites : Array < Suite > ;
/ * *
* Test cases in the suite . Note that only test cases defined directly in this suite are in the list . Any test cases
* defined in nested [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) groups are
* listed in the child [ suite . suites ] ( https : //playwright.dev/docs/api/class-suite#suite-suites).
* /
tests : Array < TestCase > ;
/ * *
* Suite title .
* - Empty for root suite .
* - Project name for project suite .
* - File path for file suite .
* - Title passed to [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) for a
* group suite .
* /
title : string ;
/ * *
* Returns a list of titles from the root down to this suite .
* /
2022-05-03 01:28:14 +02:00
titlePath ( ) : Array < string > ; }
2022-04-14 01:13:30 +02:00
/ * *
* ` TestCase ` corresponds to every [ test . ( call ) ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-call)
* call in a test file . When a single
* [ test . ( call ) ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-call) is running in multiple projects
* or repeated multiple times , it will have multiple ` TestCase ` objects in corresponding projects ' suites .
* /
export interface TestCase {
/ * *
* Expected test status .
* - Tests marked as [ test . skip ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-skip-1) or
* [ test . fixme ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-fixme-1) are expected to be
* ` 'skipped' ` .
* - Tests marked as [ test . fail ( ) ] ( https : //playwright.dev/docs/api/class-test#test-fail-1) are expected to be `'failed'`.
* - Other tests are expected to be ` 'passed' ` .
*
* See also [ testResult . status ] ( https : //playwright.dev/docs/api/class-testresult#test-result-status) for the actual status.
* /
expectedStatus : TestStatus ;
/ * *
* The list of annotations applicable to the current test . Includes annotations from the test , annotations from all
* [ test . describe ( title , callback ) ] ( https : //playwright.dev/docs/api/class-test#test-describe) groups the test belongs to
* and file - level annotations for the test file .
*
* Annotations are available during test execution through
* [ testInfo . annotations ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-annotations).
*
* Learn more about [ test annotations ] ( https : //playwright.dev/docs/test-annotations).
* /
annotations : Array < {
/ * *
* Annotation type , for example ` 'skip' ` or ` 'fail' ` .
* /
type : string ;
/ * *
* Optional description .
* /
description? : string ;
} > ;
/ * *
* Location in the source where the test is defined .
* /
location : Location ;
/ * *
* Whether the test is considered running fine . Non - ok tests fail the test run with non - zero exit code .
* /
ok ( ) : boolean ;
/ * *
* Testing outcome for this test . Note that outcome is not the same as
* [ testResult . status ] ( https : //playwright.dev/docs/api/class-testresult#test-result-status):
* - Test that is expected to fail and actually fails is ` 'expected' ` .
* - Test that passes on a second retry is ` 'flaky' ` .
* /
outcome ( ) : "skipped" | "expected" | "unexpected" | "flaky" ;
/ * *
* Suite this test case belongs to .
* /
parent : Suite ;
/ * *
* Contains the repeat index when running in "repeat each" mode . This mode is enabled by passing ` --repeat-each ` to the
* [ command line ] ( https : //playwright.dev/docs/test-cli).
* /
repeatEachIndex : number ;
/ * *
* Results for each run of this test .
* /
results : Array < TestResult > ;
/ * *
* The maximum number of retries given to this test in the configuration .
*
* Learn more about [ test retries ] ( https : //playwright.dev/docs/test-retries#retries).
* /
retries : number ;
/ * *
* The timeout given to the test . Affected by
* [ testConfig . timeout ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-timeout),
* [ testProject . timeout ] ( https : //playwright.dev/docs/api/class-testproject#test-project-timeout),
* [ test . setTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-test#test-set-timeout),
* [ test . slow ( ) ] ( https : //playwright.dev/docs/api/class-test#test-slow-1) and
* [ testInfo . setTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-set-timeout).
* /
timeout : number ;
/ * *
* Test title as passed to the [ test . ( call ) ( title , testFunction ) ] ( https : //playwright.dev/docs/api/class-test#test-call)
* call .
* /
title : string ;
/ * *
* Returns a list of titles from the root down to this test .
* /
titlePath ( ) : Array < string > ; }
/ * *
* A result of a single [ TestCase ] run .
* /
export interface TestResult {
/ * *
* The status of this test result . See also
* [ testCase . expectedStatus ] ( https : //playwright.dev/docs/api/class-testcase#test-case-expected-status).
* /
status : TestStatus ;
/ * *
* The list of files or buffers attached during the test execution through
* [ testInfo . attachments ] ( https : //playwright.dev/docs/api/class-testinfo#test-info-attachments).
* /
attachments : Array < {
/ * *
* Attachment name .
* /
name : string ;
/ * *
* Content type of this attachment to properly present in the report , for example ` 'application/json' ` or ` 'image/png' ` .
* /
contentType : string ;
/ * *
* Optional path on the filesystem to the attached file .
* /
path? : string ;
/ * *
* Optional attachment body used instead of a file .
* /
body? : Buffer ;
} > ;
/ * *
* Running time in milliseconds .
* /
duration : number ;
/ * *
* First error thrown during test execution , if any . This is equal to the first element in
* [ testResult . errors ] ( https : //playwright.dev/docs/api/class-testresult#test-result-errors).
* /
error? : TestError ;
/ * *
* Errors thrown during the test execution .
* /
errors : Array < TestError > ;
/ * *
* When test is retries multiple times , each retry attempt is given a sequential number .
*
* Learn more about [ test retries ] ( https : //playwright.dev/docs/test-retries#retries).
* /
retry : number ;
/ * *
* Start time of this particular test run .
* /
startTime : Date ;
/ * *
* Anything written to the standard error during the test run .
* /
stderr : Array < string | Buffer > ;
/ * *
* Anything written to the standard output during the test run .
* /
stdout : Array < string | Buffer > ;
/ * *
* List of steps inside this test run .
* /
steps : Array < TestStep > ;
/ * *
* Index of the worker where the test was run . If the test was not run a single time , for example when the user interrupted
* testing , the only result will have a ` workerIndex ` equal to ` -1 ` .
*
* Learn more about [ parallelism and sharding ] ( https : //playwright.dev/docs/test-parallel) with Playwright Test.
* /
workerIndex : number ; }
/ * *
* Result of the full test run .
* /
export interface FullResult {
/ * *
* Status :
* - 'passed' - everything went as expected .
* - 'failed' - any test has failed .
* - 'timedout' - the global time has been reached .
* - 'interrupted' - interrupted by the user .
* /
status : 'passed' | 'failed' | 'timedout' | 'interrupted' ;
}
/ * *
* Test runner notifies the reporter about various events during test execution . All methods of the reporter are optional .
*
* You can create a custom reporter by implementing a class with some of the reporter methods . Make sure to export this
* class as default .
*
* ` ` ` ts
* // my-awesome-reporter.ts
* import { Reporter } from '@playwright/test/reporter' ;
*
* class MyReporter implements Reporter {
* onBegin ( config , suite ) {
* console . log ( ` Starting the run with ${ suite . allTests ( ) . length } tests ` ) ;
* }
*
* onTestBegin ( test ) {
* console . log ( ` Starting test ${ test . title } ` ) ;
* }
*
* onTestEnd ( test , result ) {
* console . log ( ` Finished test ${ test . title } : ${ result . status } ` ) ;
* }
*
* onEnd ( result ) {
* console . log ( ` Finished the run: ${ result . status } ` ) ;
* }
* }
* export default MyReporter ;
* ` ` `
*
* Now use this reporter with [ testConfig . reporter ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-reporter).
* Learn more about [ using reporters ] ( https : //playwright.dev/docs/test-reporters).
*
* ` ` ` ts
* // playwright.config.ts
2022-05-27 21:36:59 +02:00
* import type { PlaywrightTestConfig } from '@playwright/test' ;
2022-04-14 01:13:30 +02:00
*
* const config : PlaywrightTestConfig = {
* reporter : './my-awesome-reporter.ts' ,
* } ;
* export default config ;
* ` ` `
*
* Here is a typical order of reporter calls :
* - [ reporter . onBegin ( config , suite ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-begin) is called once
* with a root suite that contains all other suites and tests . Learn more about [ suites hierarchy ] [ Suite ] .
* - [ reporter . onTestBegin ( test , result ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-test-begin) is
* called for each test run . It is given a [ TestCase ] that is executed , and a [ TestResult ] that is almost empty . Test
* result will be populated while the test runs ( for example , with steps and stdio ) and will get final ` status ` once
* the test finishes .
* - [ reporter . onStepBegin ( test , result , step ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-step-begin)
* and [ reporter . onStepEnd ( test , result , step ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-step-end)
* are called for each executed step inside the test . When steps are executed , test run has not finished yet .
* - [ reporter . onTestEnd ( test , result ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-test-end) is called
* when test run has finished . By this time , [ TestResult ] is complete and you can use
* [ testResult . status ] ( https : //playwright.dev/docs/api/class-testresult#test-result-status),
* [ testResult . error ] ( https : //playwright.dev/docs/api/class-testresult#test-result-error) and more.
* - [ reporter . onEnd ( result ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-end) is called once after all
* tests that should run had finished .
*
* Additionally ,
* [ reporter . onStdOut ( chunk , test , result ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-std-out) and
* [ reporter . onStdErr ( chunk , test , result ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-std-err) are called
* when standard output is produced in the worker process , possibly during a test execution , and
* [ reporter . onError ( error ) ] ( https : //playwright.dev/docs/api/class-reporter#reporter-on-error) is called when something
* went wrong outside of the test execution .
* /
export interface Reporter {
/ * *
* Called once before running tests . All tests have been already discovered and put into a hierarchy of [ Suite ] s .
* @param config Resolved configuration .
* @param suite The root suite that contains all projects , files and test cases .
* /
onBegin ? ( config : FullConfig , suite : Suite ) : void ;
/ * *
* Called after all tests has been run , or testing has been interrupted . Note that this method may return a [ Promise ] and
* Playwright Test will await it .
* @param result Result of the full test run . - ` 'passed' ` - Everything went as expected .
* - ` 'failed' ` - Any test has failed .
* - ` 'timedout' ` - The
* [ testConfig . globalTimeout ] ( https : //playwright.dev/docs/api/class-testconfig#test-config-global-timeout) has been
* reached .
* - ` 'interrupted' ` - Interrupted by the user .
* /
onEnd ? ( result : FullResult ) : void | Promise < void > ;
/ * *
* Called on some global error , for example unhandled exception in the worker process .
* @param error The error .
* /
onError ? ( error : TestError ) : void ;
/ * *
* Called when something has been written to the standard error in the worker process .
* @param chunk Output chunk .
* @param test Test that was running . Note that output may happen when no test is running , in which case this will be [ void ] .
* @param result Result of the test run , this object gets populated while the test runs .
* /
onStdErr ? ( chunk : string | Buffer , test : void | TestCase , result : void | TestResult ) : void ;
/ * *
* Called when something has been written to the standard output in the worker process .
* @param chunk Output chunk .
* @param test Test that was running . Note that output may happen when no test is running , in which case this will be [ void ] .
* @param result Result of the test run , this object gets populated while the test runs .
* /
onStdOut ? ( chunk : string | Buffer , test : void | TestCase , result : void | TestResult ) : void ;
/ * *
* Called when a test step started in the worker process .
* @param test Test that the step belongs to .
* @param result Result of the test run , this object gets populated while the test runs .
* @param step Test step instance that has started .
* /
onStepBegin ? ( test : TestCase , result : TestResult , step : TestStep ) : void ;
/ * *
* Called when a test step finished in the worker process .
* @param test Test that the step belongs to .
* @param result Result of the test run .
* @param step Test step instance that has finished .
* /
onStepEnd ? ( test : TestCase , result : TestResult , step : TestStep ) : void ;
/ * *
* Called after a test has been started in the worker process .
* @param test Test that has been started .
* @param result Result of the test run , this object gets populated while the test runs .
* /
onTestBegin ? ( test : TestCase , result : TestResult ) : void ;
/ * *
* Called after a test has been finished in the worker process .
* @param test Test that has been finished .
* @param result Result of the test run .
* /
onTestEnd ? ( test : TestCase , result : TestResult ) : void ;
/ * *
* Whether this reporter uses stdio for reporting . When it does not , Playwright Test could add some output to enhance user
* experience .
* /
printsToStdio ? ( ) : boolean ; }
2022-04-14 22:55:29 +02:00
export interface JSONReport {
config : Omit < FullConfig , ' projects ' > & {
projects : {
outputDir : string ,
repeatEach : number ,
retries : number ,
2022-05-04 22:16:11 +02:00
metadata : Metadata ,
2022-04-14 22:55:29 +02:00
name : string ,
testDir : string ,
testIgnore : string [ ] ,
testMatch : string [ ] ,
timeout : number ,
} [ ] ,
} ;
suites : JSONReportSuite [ ] ;
errors : TestError [ ] ;
}
export interface JSONReportSuite {
title : string ;
file : string ;
column : number ;
line : number ;
specs : JSONReportSpec [ ] ;
suites? : JSONReportSuite [ ] ;
}
export interface JSONReportSpec {
tags : string [ ] ,
title : string ;
ok : boolean ;
tests : JSONReportTest [ ] ;
file : string ;
line : number ;
column : number ;
}
export interface JSONReportTest {
timeout : number ;
annotations : { type : string , description? : string } [ ] ,
expectedStatus : TestStatus ;
projectName : string ;
results : JSONReportTestResult [ ] ;
status : 'skipped' | 'expected' | 'unexpected' | 'flaky' ;
}
export interface JSONReportTestResult {
workerIndex : number ;
status : TestStatus | undefined ;
duration : number ;
error : TestError | undefined ;
stdout : JSONReportSTDIOEntry [ ] ;
stderr : JSONReportSTDIOEntry [ ] ;
retry : number ;
steps? : JSONReportTestStep [ ] ;
attachments : {
name : string ;
path? : string ;
body? : string ;
contentType : string ;
} [ ] ;
errorLocation? : Location ;
}
export interface JSONReportTestStep {
title : string ;
duration : number ;
error : TestError | undefined ;
steps? : JSONReportTestStep [ ] ;
}
export type JSONReportSTDIOEntry = { text : string } | { buffer : string } ;
2022-04-14 01:13:30 +02:00
// This is required to not export everything by default. See https://github.com/Microsoft/TypeScript/issues/19545#issuecomment-340490459
export { } ;
/ * *
* Represents a location in the source code where [ TestCase ] or [ Suite ] is defined .
* /
export interface Location {
/ * *
* Path to the source file .
* /
file : string ;
/ * *
* Line number in the source file .
* /
line : number ;
/ * *
* Column number in the source file .
* /
column : number ;
}
/ * *
* Represents a step in the [ TestRun ] .
* /
export interface TestStep {
/ * *
* Step category to differentiate steps with different origin and verbosity . Built - in categories are :
* - ` hook ` for fixtures and hooks initialization and teardown
* - ` expect ` for expect calls
* - ` pw:api ` for Playwright API calls .
* - ` test.step ` for test . step API calls .
* /
category : string ;
/ * *
* Running time in milliseconds .
* /
duration : number ;
/ * *
* Optional location in the source where the step is defined .
* /
location? : Location ;
/ * *
* Error thrown during the step execution , if any .
* /
error? : TestError ;
/ * *
* Parent step , if any .
* /
parent? : TestStep ;
/ * *
* Start time of this particular test step .
* /
startTime : Date ;
/ * *
* List of steps inside this step .
* /
steps : Array < TestStep > ;
/ * *
* User - friendly test step title .
* /
title : string ;
/ * *
* Returns a list of step titles from the root step down to this step .
* /
titlePath ( ) : Array < string > ;
}
}