diff options
Diffstat (limited to 'vendor/github.com/playwright-community/playwright-go/generated-interfaces.go')
| -rw-r--r-- | vendor/github.com/playwright-community/playwright-go/generated-interfaces.go | 4658 |
1 files changed, 4658 insertions, 0 deletions
diff --git a/vendor/github.com/playwright-community/playwright-go/generated-interfaces.go b/vendor/github.com/playwright-community/playwright-go/generated-interfaces.go new file mode 100644 index 0000000..187dc91 --- /dev/null +++ b/vendor/github.com/playwright-community/playwright-go/generated-interfaces.go @@ -0,0 +1,4658 @@ +package playwright + +// 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]. For more information see [APIRequestContext]. +type APIRequest interface { + // Creates new instances of [APIRequestContext]. + NewContext(options ...APIRequestNewContextOptions) (APIRequestContext, error) +} + +// 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] or [Page.Request]. It is also possible to +// create a new APIRequestContext instance manually by calling [APIRequest.NewContext]. +// **Cookie management** +// [APIRequestContext] returned by [BrowserContext.Request] and [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 should create a new [APIRequestContext] by +// calling [APIRequest.NewContext]. Such `APIRequestContext` object will have its own isolated cookie storage. +type APIRequestContext interface { + // Sends HTTP(S) [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. + // + // url: Target URL. + // + // [DELETE]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE + Delete(url string, options ...APIRequestContextDeleteOptions) (APIResponse, error) + + // All responses returned by [APIRequestContext.Get] and similar methods are stored in the memory, so that you can + // later call [APIResponse.Body].This method discards all its resources, calling any method on disposed + // [APIRequestContext] will throw an exception. + Dispose(options ...APIRequestContextDisposeOptions) error + + // 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. + // + // urlOrRequest: Target URL or Request to get all parameters from. + Fetch(urlOrRequest interface{}, options ...APIRequestContextFetchOptions) (APIResponse, error) + + // Sends HTTP(S) [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. + // + // url: Target URL. + // + // [GET]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET + Get(url string, options ...APIRequestContextGetOptions) (APIResponse, error) + + // Sends HTTP(S) [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. + // + // url: Target URL. + // + // [HEAD]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD + Head(url string, options ...APIRequestContextHeadOptions) (APIResponse, error) + + // Sends HTTP(S) [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. + // + // url: Target URL. + // + // [PATCH]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH + Patch(url string, options ...APIRequestContextPatchOptions) (APIResponse, error) + + // Sends HTTP(S) [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. + // + // url: Target URL. + // + // [POST]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST + Post(url string, options ...APIRequestContextPostOptions) (APIResponse, error) + + // Sends HTTP(S) [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. + // + // url: Target URL. + // + // [PUT]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT + Put(url string, options ...APIRequestContextPutOptions) (APIResponse, error) + + // Returns storage state for this request context, contains current cookies and local storage snapshot if it was + // passed to the constructor. + StorageState(path ...string) (*StorageState, error) +} + +// [APIResponse] class represents responses returned by [APIRequestContext.Get] and similar methods. +type APIResponse interface { + // Returns the buffer with response body. + Body() ([]byte, error) + + // Disposes the body of this response. If not called then the body will stay in memory until the context closes. + Dispose() error + + // An object with all the response HTTP headers associated with this response. + Headers() map[string]string + + // An array with all the response 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() []NameValue + + // Returns the JSON representation of response body. + // This method will throw if the response body is not parsable via `JSON.parse`. + JSON(v interface{}) error + + // Contains a boolean stating whether the response was successful (status in the range 200-299) or not. + Ok() bool + + // Contains the status code of the response (e.g., 200 for a success). + Status() int + + // 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() (string, error) + + // Contains the URL of the response. + URL() string +} + +// The [APIResponseAssertions] class provides assertion methods that can be used to make assertions about the +// [APIResponse] in the tests. +type APIResponseAssertions interface { + // Makes the assertion check for the opposite condition. For example, this code tests that the response status is not + // successful: + Not() APIResponseAssertions + + // Ensures the response status code is within `200..299` range. + ToBeOK() error +} + +// A Browser is created via [BrowserType.Launch]. An example of using a [Browser] to create a [Page]: +type Browser interface { + 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] method was called. + OnDisconnected(fn func(Browser)) + + // Get the browser type (chromium, firefox or webkit) that the browser belongs to. + BrowserType() BrowserType + + // In case this browser is obtained using [BrowserType.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. + // **NOTE** This is similar to force-quitting the browser. To close pages gracefully and ensure you receive page close + // events, call [BrowserContext.Close] on any [BrowserContext] instances you explicitly created earlier using + // [Browser.NewContext] **before** calling [Browser.Close]. + // The [Browser] object itself is considered to be disposed and cannot be used anymore. + Close(options ...BrowserCloseOptions) error + + // Returns an array of all open browser contexts. In a newly created browser, this will return zero browser contexts. + Contexts() []BrowserContext + + // Indicates that the browser is connected. + IsConnected() bool + + // **NOTE** CDP Sessions are only supported on Chromium-based browsers. + // Returns the newly created browser session. + NewBrowserCDPSession() (CDPSession, error) + + // Creates a new browser context. It won't share cookies/cache with other browser contexts. + // **NOTE** If directly using this method to create [BrowserContext]s, it is best practice to explicitly close the + // returned context via [BrowserContext.Close] when your code is done with the [BrowserContext], and before calling + // [Browser.Close]. This will ensure the `context` is closed gracefully and any artifacts—like HARs and videos—are + // fully flushed and saved. + NewContext(options ...BrowserNewContextOptions) (BrowserContext, error) + + // 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] followed by the [BrowserContext.NewPage] + // to control their exact life times. + NewPage(options ...BrowserNewPageOptions) (Page, error) + + // **NOTE** This API controls + // [Chromium Tracing] which is a low-level + // chromium-specific debugging tool. API to control [Playwright Tracing] could be found + // [here]. + // You can use [Browser.StartTracing] and [Browser.StopTracing] to create a trace file that can be opened in Chrome + // DevTools performance panel. + // + // [Chromium Tracing]: https://www.chromium.org/developers/how-tos/trace-event-profiling-tool + // [Playwright Tracing]: ../trace-viewer + // [here]: ./class-tracing + StartTracing(options ...BrowserStartTracingOptions) error + + // **NOTE** This API controls + // [Chromium Tracing] which is a low-level + // chromium-specific debugging tool. API to control [Playwright Tracing] could be found + // [here]. + // Returns the buffer with trace data. + // + // [Chromium Tracing]: https://www.chromium.org/developers/how-tos/trace-event-profiling-tool + // [Playwright Tracing]: ../trace-viewer + // [here]: ./class-tracing + StopTracing() ([]byte, error) + + // Returns the browser version. + Version() string +} + +// 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 isolated non-persistent browser contexts with [Browser.NewContext] method. +// Non-persistent browser contexts don't write any browsing data to disk. +type BrowserContext interface { + EventEmitter + // **NOTE** Only works with Chromium browser's persistent context. + // Emitted when new background page is created in the context. + OnBackgroundPage(fn func(Page)) + + // Playwright has ability to mock clock and passage of time. + Clock() Clock + + // 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] method was called. + OnClose(fn func(BrowserContext)) + + // Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. + // The arguments passed into `console.log` and the page are available on the [ConsoleMessage] event handler argument. + OnConsole(fn func(ConsoleMessage)) + + // Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** + // either [Dialog.Accept] or [Dialog.Dismiss] the dialog - otherwise the page will + // [freeze] waiting for the dialog, + // and actions like click will never finish. + // + // [freeze]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking + OnDialog(fn func(Dialog)) + + // 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.OnPopup] 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. If you would like to route/listen + // to this network request, use [BrowserContext.Route] and [BrowserContext.OnRequest] respectively instead of similar + // methods on the [Page]. + // **NOTE** Use [Page.WaitForLoadState] to wait until the page gets to a particular state (you should not need it in + // most cases). + OnPage(fn func(Page)) + + // Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular + // page, use [Page.OnPageError] instead. + OnWebError(fn func(WebError)) + + // 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.OnRequest]. + // In order to intercept and mutate requests, see [BrowserContext.Route] or [Page.Route]. + OnRequest(fn func(Request)) + + // Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page, + // use [Page.OnRequestFailed]. + // **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request + // will complete with [BrowserContext.OnRequestFinished] event and not with [BrowserContext.OnRequestFailed]. + OnRequestFailed(fn func(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.OnRequestFinished]. + OnRequestFinished(fn func(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.OnResponse]. + OnResponse(fn func(Response)) + + // Adds cookies into this browser context. All pages within this context will have these cookies installed. Cookies + // can be obtained via [BrowserContext.Cookies]. + AddCookies(cookies []OptionalCookie) error + + // 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`. + // + // script: Script to be evaluated in all pages in the browser context. + AddInitScript(script Script) error + + // **NOTE** Background pages are only supported on Chromium-based browsers. + // All existing background pages in the context. + BackgroundPages() []Page + + // Returns the browser instance of the context. If it was launched as a persistent context null gets returned. + Browser() Browser + + // Removes cookies from context. Accepts optional filter. + ClearCookies(options ...BrowserContextClearCookiesOptions) error + + // Clears all permission overrides for the browser context. + ClearPermissions() error + + // 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(options ...BrowserContextCloseOptions) error + + // If no URLs are specified, this method returns all cookies. If URLs are specified, only cookies that affect those + // URLs are returned. + Cookies(urls ...string) ([]Cookie, error) + + // The method adds a function called “[object Object]” on the `window` object of every frame in every page in the + // context. When called, the function executes “[object Object]” and returns a [Promise] which resolves to the return + // value of “[object Object]”. If the “[object Object]” returns a [Promise], it will be awaited. + // The first argument of the “[object Object]” function contains information about the caller: `{ browserContext: + // BrowserContext, page: Page, frame: Frame }`. + // See [Page.ExposeBinding] for page-only version. + // + // 1. name: Name of the function on the window object. + // 2. binding: Callback function that will be called in the Playwright's context. + ExposeBinding(name string, binding BindingCallFunction, handle ...bool) error + + // The method adds a function called “[object Object]” on the `window` object of every frame in every page in the + // context. When called, the function executes “[object Object]” and returns a [Promise] which resolves to the return + // value of “[object Object]”. + // If the “[object Object]” returns a [Promise], it will be awaited. + // See [Page.ExposeFunction] for page-only version. + // + // 1. name: Name of the function on the window object. + // 2. binding: Callback function that will be called in the Playwright's context. + ExposeFunction(name string, binding ExposedFunction) error + + // Grants specified permissions to the browser context. Only grants corresponding permissions to the given origin if + // specified. + // + // permissions: A list of permissions to grant. + // + // **NOTE** Supported permissions differ between browsers, and even between different versions of the same browser. + // Any permission may stop working after an update. + // + // Here are some permissions that may be supported by some browsers: + // - `'accelerometer'` + // - `'ambient-light-sensor'` + // - `'background-sync'` + // - `'camera'` + // - `'clipboard-read'` + // - `'clipboard-write'` + // - `'geolocation'` + // - `'gyroscope'` + // - `'magnetometer'` + // - `'microphone'` + // - `'midi-sysex'` (system-exclusive midi) + // - `'midi'` + // - `'notifications'` + // - `'payment-handler'` + // - `'storage-access'` + GrantPermissions(permissions []string, options ...BrowserContextGrantPermissionsOptions) error + + // **NOTE** CDP sessions are only supported on Chromium-based browsers. + // Returns the newly created session. + // + // 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 interface{}) (CDPSession, error) + + // Creates a new page in the browser context. + NewPage() (Page, error) + + // Returns all open pages in the context. + Pages() []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** [BrowserContext.Route] will not intercept requests intercepted by Service Worker. See + // [this] issue. We recommend disabling Service Workers when + // using request interception by setting “[object Object]” to `block`. + // + // 1. url: A glob pattern, regex pattern, or predicate that receives a [URL] to match during routing. If “[object Object]” is + // set in the context options and the provided URL is a string that does not start with `*`, it is resolved using the + // [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor. + // 2. handler: handler function to route the request. + // + // [this]: https://github.com/microsoft/playwright/issues/1090 + Route(url interface{}, handler routeHandler, times ...int) error + + // If specified the network requests that are made in the context will be served from the HAR file. Read more about + // [Replaying from HAR]. + // Playwright will not serve requests intercepted by Service Worker from the HAR file. See + // [this] issue. We recommend disabling Service Workers when + // using request interception by setting “[object Object]” to `block`. + // + // har: Path to a [HAR](http://www.softwareishard.com/blog/har-12-spec) file with prerecorded network data. If `path` is a + // relative path, then it is resolved relative to the current working directory. + // + // [Replaying from HAR]: https://playwright.dev/docs/mock#replaying-from-har + // [this]: https://github.com/microsoft/playwright/issues/1090 + RouteFromHAR(har string, options ...BrowserContextRouteFromHAROptions) error + + // This method allows to modify websocket connections that are made by any page in the browser context. + // Note that only `WebSocket`s created after this method was called will be routed. It is recommended to call this + // method before creating any pages. + // + // 1. url: Only WebSockets with the url matching this pattern will be routed. A string pattern can be relative to the + // “[object Object]” context option. + // 2. handler: Handler function to route the WebSocket. + RouteWebSocket(url interface{}, handler func(WebSocketRoute)) error + + // **NOTE** Service workers are only supported on Chromium-based browsers. + // All existing service workers in the context. + ServiceWorkers() []Worker + + // This setting will change the default maximum navigation time for the following methods and related shortcuts: + // - [Page.GoBack] + // - [Page.GoForward] + // - [Page.Goto] + // - [Page.Reload] + // - [Page.SetContent] + // - [Page.ExpectNavigation] + // **NOTE** [Page.SetDefaultNavigationTimeout] and [Page.SetDefaultTimeout] take priority over + // [BrowserContext.SetDefaultNavigationTimeout]. + // + // timeout: Maximum navigation time in milliseconds + SetDefaultNavigationTimeout(timeout float64) + + // This setting will change the default maximum time for all the methods accepting “[object Object]” option. + // **NOTE** [Page.SetDefaultNavigationTimeout], [Page.SetDefaultTimeout] and + // [BrowserContext.SetDefaultNavigationTimeout] take priority over [BrowserContext.SetDefaultTimeout]. + // + // timeout: Maximum time in milliseconds. Pass `0` to disable timeout. + SetDefaultTimeout(timeout float64) + + // 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]. If page overrides a particular + // header, page-specific header value will be used instead of the browser context header value. + // **NOTE** [BrowserContext.SetExtraHTTPHeaders] does not guarantee the order of headers in the outgoing requests. + // + // headers: An object containing additional HTTP headers to be sent with every request. All header values must be strings. + SetExtraHTTPHeaders(headers map[string]string) error + + // Sets the context's geolocation. Passing `null` or `undefined` emulates position unavailable. + SetGeolocation(geolocation *Geolocation) error + + // + // offline: Whether to emulate network being offline for the browser context. + SetOffline(offline bool) error + + // Returns storage state for this browser context, contains current cookies, local storage snapshot and IndexedDB + // snapshot. + StorageState(path ...string) (*StorageState, error) + + Tracing() Tracing + + // Removes all routes created with [BrowserContext.Route] and [BrowserContext.RouteFromHAR]. + UnrouteAll(options ...BrowserContextUnrouteAllOptions) error + + // Removes a route created with [BrowserContext.Route]. When “[object Object]” is not specified, removes all routes + // for the “[object Object]”. + // + // 1. url: A glob pattern, regex pattern or predicate receiving [URL] used to register a routing with [BrowserContext.Route]. + // 2. handler: Optional handler function used to register a routing with [BrowserContext.Route]. + Unroute(url interface{}, handler ...routeHandler) error + + // Performs action and waits for a [ConsoleMessage] to be logged by in the pages in the context. If predicate is + // provided, it passes [ConsoleMessage] value into the `predicate` function and waits for `predicate(message)` to + // return a truthy value. Will throw an error if the page is closed before the [BrowserContext.OnConsole] event is + // fired. + ExpectConsoleMessage(cb func() error, options ...BrowserContextExpectConsoleMessageOptions) (ConsoleMessage, error) + + // Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy + // value. Will throw an error if the context closes before the event is fired. Returns the event data value. + // + // event: Event name, same one would pass into `browserContext.on(event)`. + ExpectEvent(event string, cb func() error, options ...BrowserContextExpectEventOptions) (interface{}, error) + + // Performs action and waits for a new [Page] to be created in the context. If predicate is provided, it passes [Page] + // value into the `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error + // if the context closes before new [Page] is created. + ExpectPage(cb func() error, options ...BrowserContextExpectPageOptions) (Page, error) + + // **NOTE** In most cases, you should use [BrowserContext.ExpectEvent]. + // Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function + // and waits for `predicate(event)` to return a truthy value. Will throw an error if the browser context is closed + // before the `event` is fired. + // + // event: Event name, same one typically passed into `*.on(event)`. + WaitForEvent(event string, options ...BrowserContextWaitForEventOptions) (interface{}, error) +} + +// 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: +type BrowserType interface { + // This method attaches Playwright to an existing browser instance created via `BrowserType.launchServer` in Node.js. + // **NOTE** The major and minor version of the Playwright instance that connects needs to match the version of + // Playwright that launches the browser (1.2.3 → is compatible with 1.2.x). + // + // wsEndpoint: A Playwright browser websocket endpoint to connect to. You obtain this endpoint via `BrowserServer.wsEndpoint`. + Connect(wsEndpoint string, options ...BrowserTypeConnectOptions) (Browser, error) + + // This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol. + // The default browser context is accessible via [Browser.Contexts]. + // **NOTE** Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers. + // **NOTE** This connection is significantly lower fidelity than the Playwright protocol connection via + // [BrowserType.Connect]. If you are experiencing issues or attempting to use advanced functionality, you probably + // want to use [BrowserType.Connect]. + // + // 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`. + ConnectOverCDP(endpointURL string, options ...BrowserTypeConnectOverCDPOptions) (Browser, error) + + // A path where Playwright expects to find a bundled browser executable. + ExecutablePath() string + + // Returns the browser instance. + // + // [Chrome Canary]: https://www.google.com/chrome/browser/canary.html + // [Dev Channel]: https://www.chromium.org/getting-involved/dev-channel + // [this article]: https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/ + // [This article]: https://chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md + Launch(options ...BrowserTypeLaunchOptions) (Browser, error) + + // Returns the persistent browser context instance. + // Launches browser that uses persistent storage located at “[object Object]” and returns the only context. Closing + // this context will automatically close the browser. + // + // userDataDir: Path to a User Data Directory, which stores browser session data like cookies and local storage. Pass an empty + // string to create a temporary directory. + // + // More details for + // [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and + // [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Chromium's user data directory is the + // **parent** directory of the "Profile Path" seen at `chrome://version`. + // + // Note that browsers do not allow launching multiple instances with the same User Data Directory. + LaunchPersistentContext(userDataDir string, options ...BrowserTypeLaunchPersistentContextOptions) (BrowserContext, error) + + // Returns browser name. For example: `chromium`, `webkit` or `firefox`. + Name() string +} + +// 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]. +// - Getting Started with DevTools Protocol: +// https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md +// +// [DevTools Protocol Viewer]: https://chromedevtools.github.io/devtools-protocol/ +type CDPSession interface { + EventEmitter + // 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() error + + // + // 1. method: Protocol method name. + // 2. params: Optional method parameters. + Send(method string, params map[string]interface{}) (interface{}, error) +} + +// Accurately simulating time-dependent behavior is essential for verifying the correctness of applications. Learn +// more about [clock emulation]. +// Note that clock is installed for the entire [BrowserContext], so the time in all the pages and iframes is +// controlled by the same clock. +// +// [clock emulation]: https://playwright.dev/docs/clock +type Clock interface { + // Advance the clock by jumping forward in time. Only fires due timers at most once. This is equivalent to user + // closing the laptop lid for a while and reopening it later, after given time. + // + // ticks: Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are + // "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds. + FastForward(ticks interface{}) error + + // Install fake implementations for the following time-related functions: + // - `Date` + // - `setTimeout` + // - `clearTimeout` + // - `setInterval` + // - `clearInterval` + // - `requestAnimationFrame` + // - `cancelAnimationFrame` + // - `requestIdleCallback` + // - `cancelIdleCallback` + // - `performance` + // Fake timers are used to manually control the flow of time in tests. They allow you to advance time, fire timers, + // and control the behavior of time-dependent functions. See [Clock.RunFor] and [Clock.FastForward] for more + // information. + Install(options ...ClockInstallOptions) error + + // Advance the clock, firing all the time-related callbacks. + // + // ticks: Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are + // "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds. + RunFor(ticks interface{}) error + + // Advance the clock by jumping forward in time and pause the time. Once this method is called, no timers are fired + // unless [Clock.RunFor], [Clock.FastForward], [Clock.PauseAt] or [Clock.Resume] is called. + // Only fires due timers at most once. This is equivalent to user closing the laptop lid for a while and reopening it + // at the specified time and pausing. + // + // time: Time to pause at. + PauseAt(time interface{}) error + + // Resumes timers. Once this method is called, time resumes flowing, timers are fired as usual. + Resume() error + + // Makes `Date.now` and `new Date()` return fixed fake time at all times, keeps all the timers running. + // Use this method for simple scenarios where you only need to test with a predefined time. For more advanced + // scenarios, use [Clock.Install] instead. Read docs on [clock emulation] to learn more. + // + // time: Time to be set. + // + // [clock emulation]: https://playwright.dev/docs/clock + SetFixedTime(time interface{}) error + + // Sets system time, but does not trigger any timers. Use this to test how the web page reacts to a time shift, for + // example switching from summer to winter time, or changing time zones. + // + // time: Time to be set. + SetSystemTime(time interface{}) error +} + +// [ConsoleMessage] objects are dispatched by page via the [Page.OnConsole] event. For each console message logged in +// the page there will be corresponding event in the Playwright context. +type ConsoleMessage interface { + // List of arguments passed to a `console` function call. See also [Page.OnConsole]. + Args() []JSHandle + + Location() *ConsoleMessageLocation + + // The page that produced this console message, if any. + Page() Page + + // The text of the console message. + Text() string + + // The text of the console message. + String() 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 +} + +// [Dialog] objects are dispatched by page via the [Page.OnDialog] event. +// An example of using `Dialog` class: +// **NOTE** Dialogs are dismissed automatically, unless there is a [Page.OnDialog] listener. When listener is present, +// it **must** either [Dialog.Accept] or [Dialog.Dismiss] the dialog - otherwise the page will +// [freeze] waiting for the dialog, +// and actions like click will never finish. +// +// [freeze]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking +type Dialog interface { + // Returns when the dialog has been accepted. + Accept(promptText ...string) error + + // If dialog is prompt, returns default prompt value. Otherwise, returns empty string. + DefaultValue() string + + // Returns when the dialog has been dismissed. + Dismiss() error + + // A message displayed in the dialog. + Message() string + + // The page that initiated this dialog, if available. + Page() Page + + // Returns dialog's type, can be one of `alert`, `beforeunload`, `confirm` or `prompt`. + Type() string +} + +// [Download] objects are dispatched by page via the [Page.OnDownload] 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. +type Download interface { + // Cancels a download. Will not fail if the download is already finished or canceled. Upon successful cancellations, + // `download.failure()` would resolve to `canceled`. + Cancel() error + + // Deletes the downloaded file. Will wait for the download to finish if necessary. + Delete() error + + // Returns download error if any. Will wait for the download to finish if necessary. + Failure() error + + // Get the page that the download belongs to. + Page() Page + + // Returns path to the downloaded file for a successful download, or throws for a failed/canceled 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] to get suggested file name. + Path() (string, error) + + // 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. + // + // path: Path where the download should be copied. + SaveAs(path string) error + + // Returns suggested filename for this download. It is typically computed by the browser from the + // [`Content-Disposition`] response + // header or the `download` attribute. See the spec on [whatwg]. + // Different browsers can use different logic for computing it. + // + // [`Content-Disposition`]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition + // [whatwg]: https://html.spec.whatwg.org/#downloading-resources + SuggestedFilename() string + + // Returns downloaded url. + URL() string + + String() string +} + +// ElementHandle represents an in-page DOM element. ElementHandles can be created with the [Page.QuerySelector] +// +// method. +// **NOTE** The use of ElementHandle is discouraged, use [Locator] objects and web-first assertions instead. +// ElementHandle prevents DOM element from garbage collection unless the handle is disposed with [JSHandle.Dispose]. +// ElementHandles are auto-disposed when their origin frame gets navigated. +// ElementHandle instances can be used as an argument in [Page.EvalOnSelector] and [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. +// 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. +type ElementHandle interface { + JSHandle + // 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 bounding box, similarly to + // [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]. + // 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. + // + // [Element.GetBoundingClientRect]: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect + // [Element.GetBoundingClientRect]: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect + BoundingBox() (*Rect, error) + + // 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. + // 2. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to click in the center of the element. + // 5. 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Check] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Check(options ...ElementHandleCheckOptions) error + + // This method clicks the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Mouse] to click in the center of the element, or the specified “[object Object]”. + // 4. Wait for initiated navigations to either succeed or fail, unless “[object Object]” 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Click] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Click(options ...ElementHandleClickOptions) error + + // Returns the content frame for element handles referencing iframe nodes, or `null` otherwise + ContentFrame() (Frame, error) + + // This method double clicks the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Mouse] to double click in the center of the element, or the specified “[object Object]”. + // 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // **NOTE** `elementHandle.dblclick()` dispatches two `click` events and a single `dblclick` event. + // + // Deprecated: Use locator-based [Locator.Dblclick] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Dblclick(options ...ElementHandleDblclickOptions) error + + // 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()]. + // + // Deprecated: Use locator-based [Locator.DispatchEvent] instead. Read more about [locators]. + // + // 1. typ: DOM event type: `"click"`, `"dragstart"`, etc. + // 2. eventInit: Optional event-specific initialization properties. + // + // [element.Click()]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click + // [DeviceMotionEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent + // [DeviceOrientationEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent + // [DragEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent + // [Event]: https://developer.mozilla.org/en-US/docs/Web/API/Event/Event + // [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 + // [WheelEvent]: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent + // [locators]: https://playwright.dev/docs/locators + DispatchEvent(typ string, eventInit ...interface{}) error + + // Returns the return value of “[object Object]”. + // The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a + // first argument to “[object Object]”. If no elements match the selector, the method throws an error. + // If “[object Object]” returns a [Promise], then [ElementHandle.EvalOnSelector] would wait for the promise to resolve + // and return its value. + // + // Deprecated: This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. Use [Locator.Evaluate], other [Locator] helper methods or web-first assertions instead. + // + // 1. selector: A selector to query for. + // 2. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 3. arg: Optional argument to pass to “[object Object]”. + EvalOnSelector(selector string, expression string, arg ...interface{}) (interface{}, error) + + // Returns the return value of “[object Object]”. + // 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 “[object Object]”. + // If “[object Object]” returns a [Promise], then [ElementHandle.EvalOnSelectorAll] would wait for the promise to + // resolve and return its value. + // + // Deprecated: In most cases, [Locator.EvaluateAll], other [Locator] helper methods and web-first assertions do a better job. + // + // 1. selector: A selector to query for. + // 2. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 3. arg: Optional argument to pass to “[object Object]”. + EvalOnSelectorAll(selector string, expression string, arg ...interface{}) (interface{}, error) + + // This method waits for [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], the control will be filled + // instead. + // To send fine-grained keyboard events, use [Locator.PressSequentially]. + // + // Deprecated: Use locator-based [Locator.Fill] instead. Read more about [locators]. + // + // value: Value to set for the `<input>`, `<textarea>` or `[contenteditable]` element. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + Fill(value string, options ...ElementHandleFillOptions) error + + // Calls [focus] on the element. + // + // Deprecated: Use locator-based [Locator.Focus] instead. Read more about [locators]. + // + // [focus]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus + // [locators]: https://playwright.dev/docs/locators + Focus() error + + // Returns element attribute value. + // + // Deprecated: Use locator-based [Locator.GetAttribute] instead. Read more about [locators]. + // + // name: Attribute name to get the value for. + // + // [locators]: https://playwright.dev/docs/locators + GetAttribute(name string) (string, error) + + // This method hovers over the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Mouse] to hover over the center of the element, or the specified “[object Object]”. + // 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Hover] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Hover(options ...ElementHandleHoverOptions) error + + // Returns the `element.innerHTML`. + // + // Deprecated: Use locator-based [Locator.InnerHTML] instead. Read more about [locators]. + // + // [locators]: https://playwright.dev/docs/locators + InnerHTML() (string, error) + + // Returns the `element.innerText`. + // + // Deprecated: Use locator-based [Locator.InnerText] instead. Read more about [locators]. + // + // [locators]: https://playwright.dev/docs/locators + InnerText() (string, error) + + // 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], returns the value of the + // control. + // + // Deprecated: Use locator-based [Locator.InputValue] instead. Read more about [locators]. + // + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + InputValue(options ...ElementHandleInputValueOptions) (string, error) + + // Returns whether the element is checked. Throws if the element is not a checkbox or radio input. + // + // Deprecated: Use locator-based [Locator.IsChecked] instead. Read more about [locators]. + // + // [locators]: https://playwright.dev/docs/locators + IsChecked() (bool, error) + + // Returns whether the element is disabled, the opposite of [enabled]. + // + // Deprecated: Use locator-based [Locator.IsDisabled] instead. Read more about [locators]. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [locators]: https://playwright.dev/docs/locators + IsDisabled() (bool, error) + + // Returns whether the element is [editable]. + // + // Deprecated: Use locator-based [Locator.IsEditable] instead. Read more about [locators]. + // + // [editable]: https://playwright.dev/docs/actionability#editable + // [locators]: https://playwright.dev/docs/locators + IsEditable() (bool, error) + + // Returns whether the element is [enabled]. + // + // Deprecated: Use locator-based [Locator.IsEnabled] instead. Read more about [locators]. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [locators]: https://playwright.dev/docs/locators + IsEnabled() (bool, error) + + // Returns whether the element is hidden, the opposite of [visible]. + // + // Deprecated: Use locator-based [Locator.IsHidden] instead. Read more about [locators]. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [locators]: https://playwright.dev/docs/locators + IsHidden() (bool, error) + + // Returns whether the element is [visible]. + // + // Deprecated: Use locator-based [Locator.IsVisible] instead. Read more about [locators]. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [locators]: https://playwright.dev/docs/locators + IsVisible() (bool, error) + + // Returns the frame containing the given element. + OwnerFrame() (Frame, error) + + // Focuses the element, and then uses [Keyboard.Down] and [Keyboard.Up]. + // “[object Object]” can specify the intended + // [keyboardEvent.Key] value or a single character + // to generate the text for. A superset of the “[object Object]” values can be found + // [here]. 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`, + // `ControlOrMeta`. + // Holding down `Shift` will type the text that corresponds to the “[object Object]” in the upper case. + // If “[object Object]” 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"`, `key: "Control++` 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. + // + // Deprecated: Use locator-based [Locator.Press] instead. Read more about [locators]. + // + // key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + // + // [keyboardEvent.Key]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + // [here]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values + // [locators]: https://playwright.dev/docs/locators + Press(key string, options ...ElementHandlePressOptions) error + + // The method finds an element matching the specified selector in the `ElementHandle`'s subtree. If no elements match + // the selector, returns `null`. + // + // Deprecated: Use locator-based [Page.Locator] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + QuerySelector(selector string) (ElementHandle, error) + + // The method finds all elements matching the specified selector in the `ElementHandle`s subtree. If no elements match + // the selector, returns empty array. + // + // Deprecated: Use locator-based [Page.Locator] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + QuerySelectorAll(selector string) ([]ElementHandle, error) + + // 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. + // This method waits for the [actionability] checks, then scrolls element into view before taking + // a screenshot. If the element is detached from DOM, the method throws an error. + // Returns the buffer with the captured screenshot. + // + // Deprecated: Use locator-based [Locator.Screenshot] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Screenshot(options ...ElementHandleScreenshotOptions) ([]byte, error) + + // This method waits for [actionability] checks, then tries to scroll element into view, unless + // it is completely visible as defined by + // [IntersectionObserver]'s `ratio`. + // Throws when `elementHandle` does not point to an element + // [connected] to a Document or a ShadowRoot. + // See [scrolling] for alternative ways to scroll. + // + // Deprecated: Use locator-based [Locator.ScrollIntoViewIfNeeded] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [IntersectionObserver]: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API + // [connected]: https://developer.mozilla.org/en-US/docs/Web/API/Node/isConnected + // [scrolling]: https://playwright.dev/docs/input#scrolling + // [locators]: https://playwright.dev/docs/locators + ScrollIntoViewIfNeeded(options ...ElementHandleScrollIntoViewIfNeededOptions) error + + // This method waits for [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], 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. + // + // Deprecated: Use locator-based [Locator.SelectOption] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SelectOption(values SelectOptionValues, options ...ElementHandleSelectOptionOptions) ([]string, error) + + // This method waits for [actionability] checks, then focuses the element and selects all its + // text content. + // If the element is inside the `<label>` element that has an associated + // [control], focuses and selects text in + // the control instead. + // + // Deprecated: Use locator-based [Locator.SelectText] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SelectText(options ...ElementHandleSelectTextOptions) error + + // 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. + // 2. If the element already has the right checked state, this method returns immediately. + // 3. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 4. Scroll the element into view if needed. + // 5. Use [Page.Mouse] to click in the center of the element. + // 6. Ensure that the element is now checked or unchecked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.SetChecked] instead. Read more about [locators]. + // + // checked: Whether to check or uncheck the checkbox. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + SetChecked(checked bool, options ...ElementHandleSetCheckedOptions) error + + // Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then + // they are resolved relative to the current working directory. For empty array, clears the selected files. For inputs + // with a `[webkitdirectory]` attribute, only a single directory path is supported. + // This method expects [ElementHandle] to point to an + // [input element]. However, if the element is inside + // the `<label>` element that has an associated + // [control], targets the control instead. + // + // Deprecated: Use locator-based [Locator.SetInputFiles] instead. Read more about [locators]. + // + // [input element]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SetInputFiles(files interface{}, options ...ElementHandleSetInputFilesOptions) error + + // This method taps the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Touchscreen] to tap the center of the element, or the specified “[object Object]”. + // 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 “[object Object]”, 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. + // + // Deprecated: Use locator-based [Locator.Tap] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Tap(options ...ElementHandleTapOptions) error + + // Returns the `node.textContent`. + // + // Deprecated: Use locator-based [Locator.TextContent] instead. Read more about [locators]. + // + // [locators]: https://playwright.dev/docs/locators + TextContent() (string, error) + + // 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]. + // + // Deprecated: In most cases, you should use [Locator.Fill] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator.PressSequentially]. + // + // text: A text to type into a focused element. + Type(text string, options ...ElementHandleTypeOptions) error + + // 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. + // 2. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to click in the center of the element. + // 5. 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Uncheck] instead. Read more about [locators]. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Uncheck(options ...ElementHandleUncheckOptions) error + + // Returns when the element satisfies the “[object Object]”. + // Depending on the “[object Object]” parameter, this method waits for one of the [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]. + // - `"hidden"` Wait until the element is [not visible] or not attached. Note that + // waiting for hidden does not throw when the element detaches. + // - `"stable"` Wait until the element is both [visible] and + // [stable]. + // - `"enabled"` Wait until the element is [enabled]. + // - `"disabled"` Wait until the element is [not enabled]. + // - `"editable"` Wait until the element is [editable]. + // If the element does not satisfy the condition for the “[object Object]” milliseconds, this method will throw. + // + // state: A state to wait for, see below for more details. + // + // [actionability]: https://playwright.dev/docs/actionability + // [visible]: https://playwright.dev/docs/actionability#visible + // [not visible]: https://playwright.dev/docs/actionability#visible + // [visible]: https://playwright.dev/docs/actionability#visible + // [stable]: https://playwright.dev/docs/actionability#stable + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [not enabled]: https://playwright.dev/docs/actionability#enabled + // [editable]: https://playwright.dev/docs/actionability#editable + WaitForElementState(state ElementState, options ...ElementHandleWaitForElementStateOptions) error + + // Returns element specified by selector when it satisfies “[object Object]” option. Returns `null` if waiting for + // `hidden` or `detached`. + // Wait for the “[object Object]” relative to the element handle to satisfy “[object Object]” option (either + // appear/disappear from dom, or become visible/hidden). If at the moment of calling the method “[object Object]” + // already satisfies the condition, the method will return immediately. If the selector doesn't satisfy the condition + // for the “[object Object]” milliseconds, the function will throw. + // + // Deprecated: Use web assertions that assert visibility or a locator-based [Locator.WaitFor] instead. + // + // selector: A selector to query for. + WaitForSelector(selector string, options ...ElementHandleWaitForSelectorOptions) (ElementHandle, error) +} + +// [FileChooser] objects are dispatched by the page in the [Page.OnFileChooser] event. +type FileChooser interface { + // Returns input element associated with this file chooser. + Element() ElementHandle + + // Returns whether this file chooser accepts multiple files. + IsMultiple() bool + + // 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 they are resolved relative to the current working directory. For empty array, clears the selected files. + SetFiles(files interface{}, options ...FileChooserSetFilesOptions) error +} + +// At every point of time, page exposes its current frame tree via the [Page.MainFrame] and [Frame.ChildFrames] +// methods. +// [Frame] object's lifecycle is controlled by three events, dispatched on the page object: +// - [Page.OnFrameAttached] - fired when the frame gets attached to the page. A Frame can be attached to the page +// only once. +// - [Page.OnFrameNavigated] - fired when the frame commits navigation to a different URL. +// - [Page.OnFrameDetached] - 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: +type Frame interface { + // 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. + AddScriptTag(options FrameAddScriptTagOptions) (ElementHandle, error) + + // 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. + AddStyleTag(options FrameAddStyleTagOptions) (ElementHandle, error) + + // This method checks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. 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. + // 3. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 4. Scroll the element into view if needed. + // 5. Use [Page.Mouse] to click in the center of the element. + // 6. Ensure that the element is now checked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Check] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Check(selector string, options ...FrameCheckOptions) error + + ChildFrames() []Frame + + // This method clicks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to click in the center of the element, or the specified “[object Object]”. + // 5. Wait for initiated navigations to either succeed or fail, unless “[object Object]” option is set. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Click] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Click(selector string, options ...FrameClickOptions) error + + // Gets the full HTML contents of the frame, including the doctype. + Content() (string, error) + + // This method double clicks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to double click in the center of the element, or the specified “[object Object]”. 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // **NOTE** `frame.dblclick()` dispatches two `click` events and a single `dblclick` event. + // + // Deprecated: Use locator-based [Locator.Dblclick] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Dblclick(selector string, options ...FrameDblclickOptions) error + + // 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()]. + // + // Deprecated: Use locator-based [Locator.DispatchEvent] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. typ: DOM event type: `"click"`, `"dragstart"`, etc. + // 3. eventInit: Optional event-specific initialization properties. + // + // [element.Click()]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click + // [DeviceMotionEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent + // [DeviceOrientationEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent + // [DragEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent + // [Event]: https://developer.mozilla.org/en-US/docs/Web/API/Event/Event + // [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 + // [WheelEvent]: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent + // [locators]: https://playwright.dev/docs/locators + DispatchEvent(selector string, typ string, eventInit interface{}, options ...FrameDispatchEventOptions) error + + // + // 1. source: A selector to search for an element to drag. If there are multiple elements satisfying the selector, the first will + // be used. + // 2. target: A selector to search for an element to drop onto. If there are multiple elements satisfying the selector, the first + // will be used. + DragAndDrop(source string, target string, options ...FrameDragAndDropOptions) error + + // Returns the return value of “[object Object]”. + // The method finds an element matching the specified selector within the frame and passes it as a first argument to + // “[object Object]”. If no elements match the selector, the method throws an error. + // If “[object Object]” returns a [Promise], then [Frame.EvalOnSelector] would wait for the promise to resolve and + // return its value. + // + // Deprecated: This method does not wait for the element to pass the actionability checks and therefore can lead to the flaky tests. Use [Locator.Evaluate], other [Locator] helper methods or web-first assertions instead. + // + // 1. selector: A selector to query for. + // 2. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 3. arg: Optional argument to pass to “[object Object]”. + EvalOnSelector(selector string, expression string, arg interface{}, options ...FrameEvalOnSelectorOptions) (interface{}, error) + + // Returns the return value of “[object Object]”. + // The method finds all elements matching the specified selector within the frame and passes an array of matched + // elements as a first argument to “[object Object]”. + // If “[object Object]” returns a [Promise], then [Frame.EvalOnSelectorAll] would wait for the promise to resolve and + // return its value. + // + // Deprecated: In most cases, [Locator.EvaluateAll], other [Locator] helper methods and web-first assertions do a better job. + // + // 1. selector: A selector to query for. + // 2. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 3. arg: Optional argument to pass to “[object Object]”. + EvalOnSelectorAll(selector string, expression string, arg ...interface{}) (interface{}, error) + + // Returns the return value of “[object Object]”. + // If the function passed to the [Frame.Evaluate] returns a [Promise], then [Frame.Evaluate] would wait for the + // promise to resolve and return its value. + // If the function passed to the [Frame.Evaluate] returns a non-[Serializable] value, then [Frame.Evaluate] returns + // `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`: + // `-0`, `NaN`, `Infinity`, `-Infinity`. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + Evaluate(expression string, arg ...interface{}) (interface{}, error) + + // Returns the return value of “[object Object]” as a [JSHandle]. + // The only difference between [Frame.Evaluate] and [Frame.EvaluateHandle] is that [Frame.EvaluateHandle] returns + // [JSHandle]. + // If the function, passed to the [Frame.EvaluateHandle], returns a [Promise], then [Frame.EvaluateHandle] would wait + // for the promise to resolve and return its value. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + EvaluateHandle(expression string, arg ...interface{}) (JSHandle, error) + + // This method waits for an element matching “[object Object]”, waits for [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], the control will be filled + // instead. + // To send fine-grained keyboard events, use [Locator.PressSequentially]. + // + // Deprecated: Use locator-based [Locator.Fill] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. value: Value to fill for the `<input>`, `<textarea>` or `[contenteditable]` element. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + Fill(selector string, value string, options ...FrameFillOptions) error + + // This method fetches an element with “[object Object]” and focuses it. If there's no element matching + // “[object Object]”, the method waits until a matching element appears in the DOM. + // + // Deprecated: Use locator-based [Locator.Focus] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + Focus(selector string, options ...FrameFocusOptions) error + + // Returns the `frame` or `iframe` element handle which corresponds to this frame. + // This is an inverse of [ElementHandle.ContentFrame]. Note that returned handle actually belongs to the parent frame. + // This method throws an error if the frame has been detached before `frameElement()` returns. + FrameElement() (ElementHandle, error) + + // When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements + // in that iframe. + // + // selector: A selector to use when resolving DOM element. + FrameLocator(selector string) FrameLocator + + // Returns element attribute value. + // + // Deprecated: Use locator-based [Locator.GetAttribute] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. name: Attribute name to get the value for. + // + // [locators]: https://playwright.dev/docs/locators + GetAttribute(selector string, name string, options ...FrameGetAttributeOptions) (string, error) + + // Allows locating elements by their alt text. + // + // text: Text to locate the element for. + GetByAltText(text interface{}, options ...FrameGetByAltTextOptions) Locator + + // Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the + // `aria-label` attribute. + // + // text: Text to locate the element for. + GetByLabel(text interface{}, options ...FrameGetByLabelOptions) Locator + + // Allows locating input elements by the placeholder text. + // + // text: Text to locate the element for. + GetByPlaceholder(text interface{}, options ...FrameGetByPlaceholderOptions) Locator + + // Allows locating elements by their [ARIA role], + // [ARIA attributes] and + // [accessible name]. + // + // # Details + // + // Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback + // about the ARIA guidelines. + // Many html elements have an implicitly [defined role] + // that is recognized by the role selector. You can find all the + // [supported roles here]. ARIA guidelines **do not recommend** + // duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values. + // + // role: Required aria role. + // + // [ARIA role]: https://www.w3.org/TR/wai-aria-1.2/#roles + // [ARIA attributes]: https://www.w3.org/TR/wai-aria-1.2/#aria-attributes + // [accessible name]: https://w3c.github.io/accname/#dfn-accessible-name + // [defined role]: https://w3c.github.io/html-aam/#html-element-role-mappings + // [supported roles here]: https://www.w3.org/TR/wai-aria-1.2/#role_definitions + GetByRole(role AriaRole, options ...FrameGetByRoleOptions) Locator + + // Locate element by the test id. + // + // # Details + // + // By default, the `data-testid` attribute is used as a test id. Use [Selectors.SetTestIdAttribute] to configure a + // different test id attribute if necessary. + // + // testId: Id to locate the element by. + GetByTestId(testId interface{}) Locator + + // Allows locating elements that contain given text. + // See also [Locator.Filter] that allows to match by another criteria, like an accessible role, and then filter by the + // text content. + // + // # Details + // + // Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into + // one, turns line breaks into spaces and ignores leading and trailing whitespace. + // Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For + // example, locating by text `"Log in"` matches `<input type=button value="Log in">`. + // + // text: Text to locate the element for. + GetByText(text interface{}, options ...FrameGetByTextOptions) Locator + + // Allows locating elements by their title attribute. + // + // text: Text to locate the element for. + GetByTitle(text interface{}, options ...FrameGetByTitleOptions) Locator + + // 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 “[object Object]” 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]. + // **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]. + // + // url: URL to navigate frame to. The url should include scheme, e.g. `https://`. + // + // [upstream issue]: https://bugs.chromium.org/p/chromium/issues/detail?id=761295 + Goto(url string, options ...FrameGotoOptions) (Response, error) + + // This method hovers over an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to hover over the center of the element, or the specified “[object Object]”. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Hover] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Hover(selector string, options ...FrameHoverOptions) error + + // Returns `element.innerHTML`. + // + // Deprecated: Use locator-based [Locator.InnerHTML] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + InnerHTML(selector string, options ...FrameInnerHTMLOptions) (string, error) + + // Returns `element.innerText`. + // + // Deprecated: Use locator-based [Locator.InnerText] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + InnerText(selector string, options ...FrameInnerTextOptions) (string, error) + + // 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], returns the value of the + // control. + // + // Deprecated: Use locator-based [Locator.InputValue] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + InputValue(selector string, options ...FrameInputValueOptions) (string, error) + + // Returns whether the element is checked. Throws if the element is not a checkbox or radio input. + // + // Deprecated: Use locator-based [Locator.IsChecked] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + IsChecked(selector string, options ...FrameIsCheckedOptions) (bool, error) + + // Returns `true` if the frame has been detached, or `false` otherwise. + IsDetached() bool + + // Returns whether the element is disabled, the opposite of [enabled]. + // + // Deprecated: Use locator-based [Locator.IsDisabled] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [locators]: https://playwright.dev/docs/locators + IsDisabled(selector string, options ...FrameIsDisabledOptions) (bool, error) + + // Returns whether the element is [editable]. + // + // Deprecated: Use locator-based [Locator.IsEditable] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [editable]: https://playwright.dev/docs/actionability#editable + // [locators]: https://playwright.dev/docs/locators + IsEditable(selector string, options ...FrameIsEditableOptions) (bool, error) + + // Returns whether the element is [enabled]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + IsEnabled(selector string, options ...FrameIsEnabledOptions) (bool, error) + + // Returns whether the element is hidden, the opposite of [visible]. “[object Object]” + // that does not match any elements is considered hidden. + // + // Deprecated: Use locator-based [Locator.IsHidden] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [locators]: https://playwright.dev/docs/locators + IsHidden(selector string, options ...FrameIsHiddenOptions) (bool, error) + + // Returns whether the element is [visible]. “[object Object]” that does not match any + // elements is considered not visible. + // + // Deprecated: Use locator-based [Locator.IsVisible] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [locators]: https://playwright.dev/docs/locators + IsVisible(selector string, options ...FrameIsVisibleOptions) (bool, error) + + // The method returns an element locator that can be used to perform actions on this page / 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. + // [Learn more about locators]. + // [Learn more about locators]. + // + // selector: A selector to use when resolving DOM element. + // + // [Learn more about locators]: https://playwright.dev/docs/locators + // [Learn more about locators]: https://playwright.dev/docs/locators + Locator(selector string, options ...FrameLocatorOptions) 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() Frame + + // “[object Object]” can specify the intended + // [keyboardEvent.Key] value or a single character + // to generate the text for. A superset of the “[object Object]” values can be found + // [here]. 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`, + // `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS. + // Holding down `Shift` will type the text that corresponds to the “[object Object]” in the upper case. + // If “[object Object]” 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"`, `key: "Control++` 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. + // + // Deprecated: Use locator-based [Locator.Press] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + // + // [keyboardEvent.Key]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + // [here]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values + // [locators]: https://playwright.dev/docs/locators + Press(selector string, key string, options ...FramePressOptions) error + + // 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. If no elements match the selector, + // returns `null`. + // + // Deprecated: Use locator-based [Frame.Locator] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + QuerySelector(selector string, options ...FrameQuerySelectorOptions) (ElementHandle, error) + + // 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. If no elements match the selector, + // returns empty array. + // + // Deprecated: Use locator-based [Frame.Locator] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + QuerySelectorAll(selector string) ([]ElementHandle, error) + + // This method waits for an element matching “[object Object]”, waits for [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], 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. + // + // Deprecated: Use locator-based [Locator.SelectOption] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SelectOption(selector string, values SelectOptionValues, options ...FrameSelectOptionOptions) ([]string, error) + + // This method checks or unchecks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Ensure that matched element is a checkbox or a radio input. If not, this method throws. + // 3. If the element already has the right checked state, this method returns immediately. + // 4. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 5. Scroll the element into view if needed. + // 6. Use [Page.Mouse] to click in the center of the element. + // 7. Ensure that the element is now checked or unchecked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.SetChecked] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. checked: Whether to check or uncheck the checkbox. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + SetChecked(selector string, checked bool, options ...FrameSetCheckedOptions) error + + // This method internally calls [document.Write()], + // inheriting all its specific characteristics and behaviors. + // + // html: HTML markup to assign to the page. + // + // [document.Write()]: https://developer.mozilla.org/en-US/docs/Web/API/Document/write + SetContent(html string, options ...FrameSetContentOptions) error + + // Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then + // they are resolved relative to the current working directory. For empty array, clears the selected files. + // This method expects “[object Object]” to point to an + // [input element]. However, if the element is inside + // the `<label>` element that has an associated + // [control], targets the control instead. + // + // Deprecated: Use locator-based [Locator.SetInputFiles] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [input element]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SetInputFiles(selector string, files interface{}, options ...FrameSetInputFilesOptions) error + + // This method taps an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Touchscreen] to tap the center of the element, or the specified “[object Object]”. + // When all steps combined have not finished during the specified “[object Object]”, 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. + // + // Deprecated: Use locator-based [Locator.Tap] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Tap(selector string, options ...FrameTapOptions) error + + // Returns `element.textContent`. + // + // Deprecated: Use locator-based [Locator.TextContent] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + TextContent(selector string, options ...FrameTextContentOptions) (string, error) + + // Returns the page title. + Title() (string, error) + + // 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]. + // To press a special key, like `Control` or `ArrowDown`, use [Keyboard.Press]. + // + // Deprecated: In most cases, you should use [Locator.Fill] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator.PressSequentially]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. text: A text to type into a focused element. + Type(selector string, text string, options ...FrameTypeOptions) error + + // This method checks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. 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. + // 3. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 4. Scroll the element into view if needed. + // 5. Use [Page.Mouse] to click in the center of the element. + // 6. Ensure that the element is now unchecked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Uncheck] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Uncheck(selector string, options ...FrameUncheckOptions) error + + // Returns frame's url. + URL() string + + // Returns when the “[object Object]” returns a truthy value, returns that value. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + WaitForFunction(expression string, arg interface{}, options ...FrameWaitForFunctionOptions) (JSHandle, error) + + // 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. + // **NOTE** Most of the time, this method is not needed because Playwright + // [auto-waits before every action]. + // + // [auto-waits before every action]: https://playwright.dev/docs/actionability + WaitForLoadState(options ...FrameWaitForLoadStateOptions) error + + // 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`. + // + // Deprecated: This method is inherently racy, please use [Frame.WaitForURL] instead. + // + // [History API]: https://developer.mozilla.org/en-US/docs/Web/API/History_API + ExpectNavigation(cb func() error, options ...FrameExpectNavigationOptions) (Response, error) + + // Returns when element specified by selector satisfies “[object Object]” 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 “[object Object]” to satisfy “[object Object]” option (either appear/disappear from dom, or become + // visible/hidden). If at the moment of calling the method “[object Object]” already satisfies the condition, the + // method will return immediately. If the selector doesn't satisfy the condition for the “[object Object]” + // milliseconds, the function will throw. + // + // Deprecated: Use web assertions that assert visibility or a locator-based [Locator.WaitFor] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + WaitForSelector(selector string, options ...FrameWaitForSelectorOptions) (ElementHandle, error) + + // Waits for the given “[object Object]” 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. + // + // Deprecated: Never wait for timeout in production. Tests that wait for time are inherently flaky. Use [Locator] actions and web assertions that wait automatically. + // + // timeout: A timeout to wait for + WaitForTimeout(timeout float64) + + // Waits for the frame to navigate to the given URL. + // + // 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. + WaitForURL(url interface{}, options ...FrameWaitForURLOptions) error +} + +// 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 [Locator.ContentFrame], +// [Page.FrameLocator] or [Locator.FrameLocator] method. +// **Strictness** +// Frame locators are strict. This means that all operations on frame locators will throw if more than one element +// matches a given selector. +// **Converting Locator to FrameLocator** +// If you have a [Locator] object pointing to an `iframe` it can be converted to [FrameLocator] using +// [Locator.ContentFrame]. +// **Converting FrameLocator to Locator** +// If you have a [FrameLocator] object it can be converted to [Locator] pointing to the same `iframe` using +// [FrameLocator.Owner]. +type FrameLocator interface { + // Returns locator to the first matching frame. + // + // Deprecated: Use [Locator.First] followed by [Locator.ContentFrame] instead. + First() FrameLocator + + // When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements + // in that iframe. + // + // selector: A selector to use when resolving DOM element. + FrameLocator(selector string) FrameLocator + + // Allows locating elements by their alt text. + // + // text: Text to locate the element for. + GetByAltText(text interface{}, options ...FrameLocatorGetByAltTextOptions) Locator + + // Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the + // `aria-label` attribute. + // + // text: Text to locate the element for. + GetByLabel(text interface{}, options ...FrameLocatorGetByLabelOptions) Locator + + // Allows locating input elements by the placeholder text. + // + // text: Text to locate the element for. + GetByPlaceholder(text interface{}, options ...FrameLocatorGetByPlaceholderOptions) Locator + + // Allows locating elements by their [ARIA role], + // [ARIA attributes] and + // [accessible name]. + // + // # Details + // + // Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback + // about the ARIA guidelines. + // Many html elements have an implicitly [defined role] + // that is recognized by the role selector. You can find all the + // [supported roles here]. ARIA guidelines **do not recommend** + // duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values. + // + // role: Required aria role. + // + // [ARIA role]: https://www.w3.org/TR/wai-aria-1.2/#roles + // [ARIA attributes]: https://www.w3.org/TR/wai-aria-1.2/#aria-attributes + // [accessible name]: https://w3c.github.io/accname/#dfn-accessible-name + // [defined role]: https://w3c.github.io/html-aam/#html-element-role-mappings + // [supported roles here]: https://www.w3.org/TR/wai-aria-1.2/#role_definitions + GetByRole(role AriaRole, options ...FrameLocatorGetByRoleOptions) Locator + + // Locate element by the test id. + // + // # Details + // + // By default, the `data-testid` attribute is used as a test id. Use [Selectors.SetTestIdAttribute] to configure a + // different test id attribute if necessary. + // + // testId: Id to locate the element by. + GetByTestId(testId interface{}) Locator + + // Allows locating elements that contain given text. + // See also [Locator.Filter] that allows to match by another criteria, like an accessible role, and then filter by the + // text content. + // + // # Details + // + // Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into + // one, turns line breaks into spaces and ignores leading and trailing whitespace. + // Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For + // example, locating by text `"Log in"` matches `<input type=button value="Log in">`. + // + // text: Text to locate the element for. + GetByText(text interface{}, options ...FrameLocatorGetByTextOptions) Locator + + // Allows locating elements by their title attribute. + // + // text: Text to locate the element for. + GetByTitle(text interface{}, options ...FrameLocatorGetByTitleOptions) Locator + + // Returns locator to the last matching frame. + // + // Deprecated: Use [Locator.Last] followed by [Locator.ContentFrame] instead. + Last() FrameLocator + + // The method finds an element matching the specified selector in the locator's subtree. It also accepts filter + // options, similar to [Locator.Filter] method. + // [Learn more about locators]. + // + // selectorOrLocator: A selector or locator to use when resolving DOM element. + // + // [Learn more about locators]: https://playwright.dev/docs/locators + Locator(selectorOrLocator interface{}, options ...FrameLocatorLocatorOptions) Locator + + // Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame. + // + // Deprecated: Use [Locator.Nth] followed by [Locator.ContentFrame] instead. + Nth(index int) FrameLocator + + // Returns a [Locator] object pointing to the same `iframe` as this frame locator. + // Useful when you have a [FrameLocator] object obtained somewhere, and later on would like to interact with the + // `iframe` element. + // For a reverse operation, use [Locator.ContentFrame]. + Owner() Locator +} + +// JSHandle represents an in-page JavaScript object. JSHandles can be created with the [Page.EvaluateHandle] method. +// JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with +// [JSHandle.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.EvalOnSelector], [Page.Evaluate] and [Page.EvaluateHandle] +// methods. +type JSHandle interface { + // Returns either `null` or the object handle itself, if the object handle is an instance of [ElementHandle]. + AsElement() ElementHandle + + // The `jsHandle.dispose` method stops referencing the element handle. + Dispose() error + + // Returns the return value of “[object Object]”. + // This method passes this handle as the first argument to “[object Object]”. + // If “[object Object]” returns a [Promise], then `handle.evaluate` would wait for the promise to resolve and return + // its value. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + Evaluate(expression string, arg ...interface{}) (interface{}, error) + + // Returns the return value of “[object Object]” as a [JSHandle]. + // This method passes this handle as the first argument to “[object Object]”. + // 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] for more details. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + EvaluateHandle(expression string, arg ...interface{}) (JSHandle, error) + + // The method returns a map with **own property names** as keys and JSHandle instances for the property values. + GetProperties() (map[string]JSHandle, error) + + // Fetches a single property from the referenced object. + // + // propertyName: property to get + GetProperty(propertyName string) (JSHandle, error) + + // 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() (interface{}, error) + + String() string +} + +// Keyboard provides an api for managing a virtual keyboard. The high level api is [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], [Keyboard.Up], and [Keyboard.InsertText] 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: +// An example of pressing uppercase `A` +// An example to trigger select-all with the keyboard +type Keyboard interface { + // Dispatches a `keydown` event. + // “[object Object]” can specify the intended + // [keyboardEvent.Key] value or a single character + // to generate the text for. A superset of the “[object Object]” values can be found + // [here]. 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`, + // `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS. + // Holding down `Shift` will type the text that corresponds to the “[object Object]” in the upper case. + // If “[object Object]” is a single character, it is case-sensitive, so the values `a` and `A` will generate different + // respective texts. + // If “[object Object]” 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]. + // After the key is pressed once, subsequent calls to [Keyboard.Down] will have + // [repeat] set to true. To release the key, + // use [Keyboard.Up]. + // **NOTE** Modifier keys DO influence `keyboard.down`. Holding down `Shift` will type the text in upper case. + // + // key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + // + // [keyboardEvent.Key]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + // [here]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values + // [repeat]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat + Down(key string) error + + // Dispatches only `input` event, does not emit the `keydown`, `keyup` or `keypress` events. + // + // text: Sets input to the specified text value. + InsertText(text string) error + + // **NOTE** In most cases, you should use [Locator.Press] instead. + // “[object Object]” can specify the intended + // [keyboardEvent.Key] value or a single character + // to generate the text for. A superset of the “[object Object]” values can be found + // [here]. 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`, + // `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS. + // Holding down `Shift` will type the text that corresponds to the “[object Object]” in the upper case. + // If “[object Object]” 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"`, `key: "Control++` 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. + // + // key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + // + // [keyboardEvent.Key]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + // [here]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values + Press(key string, options ...KeyboardPressOptions) error + + // **NOTE** In most cases, you should use [Locator.Fill] instead. You only need to press keys one by one if there is + // special keyboard handling on the page - in this case use [Locator.PressSequentially]. + // 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]. + // + // text: A text to type into a focused element. + Type(text string, options ...KeyboardTypeOptions) error + + // Dispatches a `keyup` event. + // + // key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + Up(key string) error +} + +// 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. A locator can be created with the [Page.Locator] method. +// [Learn more about locators]. +// +// [Learn more about locators]: https://playwright.dev/docs/locators +type Locator interface { + // When the locator points to a list of elements, this returns an array of locators, pointing to their respective + // elements. + // **NOTE** [Locator.All] does not wait for elements to match the locator, and instead immediately returns whatever is + // present in the page. + // When the list of elements changes dynamically, [Locator.All] will produce unpredictable and flaky results. + // When the list of elements is stable, but loaded dynamically, wait for the full list to finish loading before + // calling [Locator.All]. + All() ([]Locator, error) + + // Returns an array of `node.innerText` values for all matching nodes. + // **NOTE** If you need to assert text on the page, prefer [LocatorAssertions.ToHaveText] with “[object Object]” + // option to avoid flakiness. See [assertions guide] for more details. + // + // [assertions guide]: https://playwright.dev/docs/test-assertions + AllInnerTexts() ([]string, error) + + // Returns an array of `node.textContent` values for all matching nodes. + // **NOTE** If you need to assert text on the page, prefer [LocatorAssertions.ToHaveText] to avoid flakiness. See + // [assertions guide] for more details. + // + // [assertions guide]: https://playwright.dev/docs/test-assertions + AllTextContents() ([]string, error) + + // Creates a locator that matches both this locator and the argument locator. + // + // locator: Additional locator to match. + And(locator Locator) Locator + + // Captures the aria snapshot of the given element. Read more about [aria snapshots] and + // [LocatorAssertions.ToMatchAriaSnapshot] for the corresponding assertion. + // + // # Details + // + // This method captures the aria snapshot of the given element. The snapshot is a string that represents the state of + // the element and its children. The snapshot can be used to assert the state of the element in the test, or to + // compare it to state in the future. + // The ARIA snapshot is represented using [YAML] markup language: + // - The keys of the objects are the roles and optional accessible names of the elements. + // - The values are either text content or an array of child elements. + // - Generic static text can be represented with the `text` key. + // Below is the HTML markup and the respective ARIA snapshot: + // ```html + // <ul aria-label="Links"> + // <li><a href="/">Home</a></li> + // <li><a href="/about">About</a></li> + // <ul> + // ``` + // ```yml + // - list "Links": + // - listitem: + // - link "Home" + // - listitem: + // - link "About" + // ``` + // + // [aria snapshots]: https://playwright.dev/docs/aria-snapshots + // [YAML]: https://yaml.org/spec/1.2.2/ + AriaSnapshot(options ...LocatorAriaSnapshotOptions) (string, error) + + // Calls [blur] on the element. + // + // [blur]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/blur + Blur(options ...LocatorBlurOptions) error + + // This method returns the bounding box of the element matching the locator, 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. + // + // # Details + // + // Scrolling affects the returned bounding box, similarly to + // [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]. + // 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. + // + // [Element.GetBoundingClientRect]: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect + // [Element.GetBoundingClientRect]: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect + BoundingBox(options ...LocatorBoundingBoxOptions) (*Rect, error) + + // Ensure that checkbox or radio element is checked. + // + // # Details + // + // Performs 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. + // 2. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to click in the center of the element. + // 5. 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // [actionability]: https://playwright.dev/docs/actionability + Check(options ...LocatorCheckOptions) error + + // Clear the input field. + // + // # Details + // + // This method waits for [actionability] checks, focuses the element, clears it and triggers an + // `input` event after clearing. + // 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], the control will be cleared + // instead. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + Clear(options ...LocatorClearOptions) error + + // Click an element. + // + // # Details + // + // This method clicks the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Mouse] to click in the center of the element, or the specified “[object Object]”. + // 4. Wait for initiated navigations to either succeed or fail, unless “[object Object]” 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // [actionability]: https://playwright.dev/docs/actionability + Click(options ...LocatorClickOptions) error + + // Returns the number of elements matching the locator. + // **NOTE** If you need to assert the number of elements on the page, prefer [LocatorAssertions.ToHaveCount] to avoid + // flakiness. See [assertions guide] for more details. + // + // [assertions guide]: https://playwright.dev/docs/test-assertions + Count() (int, error) + + // Double-click an element. + // + // # Details + // + // This method double clicks the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Mouse] to double click in the center of the element, or the specified “[object Object]”. + // 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // **NOTE** `element.dblclick()` dispatches two `click` events and a single `dblclick` event. + // + // [actionability]: https://playwright.dev/docs/actionability + Dblclick(options ...LocatorDblclickOptions) error + + // Programmatically dispatch an event on the matching element. + // + // # Details + // + // The snippet above 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()]. + // Under the hood, it creates an instance of an event based on the given “[object Object]”, initializes it with + // “[object Object]” properties and dispatches it on the element. Events are `composed`, `cancelable` and bubble by + // default. + // Since “[object Object]” is event-specific, please refer to the events documentation for the lists of initial + // properties: + // - [DeviceMotionEvent] + // - [DeviceOrientationEvent] + // - [DragEvent] + // - [Event] + // - [FocusEvent] + // - [KeyboardEvent] + // - [MouseEvent] + // - [PointerEvent] + // - [TouchEvent] + // - [WheelEvent] + // You can also specify [JSHandle] as the property value if you want live objects to be passed into the event: + // + // 1. typ: DOM event type: `"click"`, `"dragstart"`, etc. + // 2. eventInit: Optional event-specific initialization properties. + // + // [element.Click()]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click + // [DeviceMotionEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent + // [DeviceOrientationEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent + // [DragEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent + // [Event]: https://developer.mozilla.org/en-US/docs/Web/API/Event/Event + // [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 + // [WheelEvent]: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent + DispatchEvent(typ string, eventInit interface{}, options ...LocatorDispatchEventOptions) error + + // Drag the source element towards the target element and drop it. + // + // # Details + // + // This method drags the locator to another target locator or target position. It will first move to the source + // element, perform a `mousedown`, then move to the target element or position and perform a `mouseup`. + // + // target: Locator of the element to drag to. + DragTo(target Locator, options ...LocatorDragToOptions) error + + // Resolves given locator to the first matching DOM element. If there are no matching elements, waits for one. If + // multiple elements match the locator, throws. + // + // Deprecated: Always prefer using [Locator]s and web assertions over [ElementHandle]s because latter are inherently racy. + ElementHandle(options ...LocatorElementHandleOptions) (ElementHandle, error) + + // Resolves given locator to all matching DOM elements. If there are no matching elements, returns an empty list. + // + // Deprecated: Always prefer using [Locator]s and web assertions over [ElementHandle]s because latter are inherently racy. + ElementHandles() ([]ElementHandle, error) + + // Returns a [FrameLocator] object pointing to the same `iframe` as this locator. + // Useful when you have a [Locator] object obtained somewhere, and later on would like to interact with the content + // inside the frame. + // For a reverse operation, use [FrameLocator.Owner]. + ContentFrame() FrameLocator + + // Execute JavaScript code in the page, taking the matching element as an argument. + // + // # Details + // + // Returns the return value of “[object Object]”, called with the matching element as a first argument, and + // “[object Object]” as a second argument. + // If “[object Object]” returns a [Promise], this method will wait for the promise to resolve and return its value. + // If “[object Object]” throws or rejects, this method throws. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + Evaluate(expression string, arg interface{}, options ...LocatorEvaluateOptions) (interface{}, error) + + // Execute JavaScript code in the page, taking all matching elements as an argument. + // + // # Details + // + // Returns the return value of “[object Object]”, called with an array of all matching elements as a first argument, + // and “[object Object]” as a second argument. + // If “[object Object]” returns a [Promise], this method will wait for the promise to resolve and return its value. + // If “[object Object]” throws or rejects, this method throws. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + EvaluateAll(expression string, arg ...interface{}) (interface{}, error) + + // Execute JavaScript code in the page, taking the matching element as an argument, and return a [JSHandle] with the + // result. + // + // # Details + // + // Returns the return value of “[object Object]” as a[JSHandle], called with the matching element as a first argument, + // and “[object Object]” as a second argument. + // The only difference between [Locator.Evaluate] and [Locator.EvaluateHandle] is that [Locator.EvaluateHandle] + // returns [JSHandle]. + // If “[object Object]” returns a [Promise], this method will wait for the promise to resolve and return its value. + // If “[object Object]” throws or rejects, this method throws. + // See [Page.EvaluateHandle] for more details. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + EvaluateHandle(expression string, arg interface{}, options ...LocatorEvaluateHandleOptions) (JSHandle, error) + + // Set a value to the input field. + // + // # Details + // + // This method waits for [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], the control will be filled + // instead. + // To send fine-grained keyboard events, use [Locator.PressSequentially]. + // + // value: Value to set for the `<input>`, `<textarea>` or `[contenteditable]` element. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + Fill(value string, options ...LocatorFillOptions) error + + // This method narrows existing locator according to the options, for example filters by text. It can be chained to + // filter multiple times. + Filter(options ...LocatorFilterOptions) Locator + + // Returns locator to the first matching element. + First() Locator + + // Calls [focus] on the matching element. + // + // [focus]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus + Focus(options ...LocatorFocusOptions) error + + // When working with iframes, you can create a frame locator that will enter the iframe and allow locating elements in + // that iframe: + // + // selector: A selector to use when resolving DOM element. + FrameLocator(selector string) FrameLocator + + // Returns the matching element's attribute value. + // **NOTE** If you need to assert an element's attribute, prefer [LocatorAssertions.ToHaveAttribute] to avoid + // flakiness. See [assertions guide] for more details. + // + // name: Attribute name to get the value for. + // + // [assertions guide]: https://playwright.dev/docs/test-assertions + GetAttribute(name string, options ...LocatorGetAttributeOptions) (string, error) + + // Allows locating elements by their alt text. + // + // text: Text to locate the element for. + GetByAltText(text interface{}, options ...LocatorGetByAltTextOptions) Locator + + // Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the + // `aria-label` attribute. + // + // text: Text to locate the element for. + GetByLabel(text interface{}, options ...LocatorGetByLabelOptions) Locator + + // Allows locating input elements by the placeholder text. + // + // text: Text to locate the element for. + GetByPlaceholder(text interface{}, options ...LocatorGetByPlaceholderOptions) Locator + + // Allows locating elements by their [ARIA role], + // [ARIA attributes] and + // [accessible name]. + // + // # Details + // + // Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback + // about the ARIA guidelines. + // Many html elements have an implicitly [defined role] + // that is recognized by the role selector. You can find all the + // [supported roles here]. ARIA guidelines **do not recommend** + // duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values. + // + // role: Required aria role. + // + // [ARIA role]: https://www.w3.org/TR/wai-aria-1.2/#roles + // [ARIA attributes]: https://www.w3.org/TR/wai-aria-1.2/#aria-attributes + // [accessible name]: https://w3c.github.io/accname/#dfn-accessible-name + // [defined role]: https://w3c.github.io/html-aam/#html-element-role-mappings + // [supported roles here]: https://www.w3.org/TR/wai-aria-1.2/#role_definitions + GetByRole(role AriaRole, options ...LocatorGetByRoleOptions) Locator + + // Locate element by the test id. + // + // # Details + // + // By default, the `data-testid` attribute is used as a test id. Use [Selectors.SetTestIdAttribute] to configure a + // different test id attribute if necessary. + // + // testId: Id to locate the element by. + GetByTestId(testId interface{}) Locator + + // Allows locating elements that contain given text. + // See also [Locator.Filter] that allows to match by another criteria, like an accessible role, and then filter by the + // text content. + // + // # Details + // + // Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into + // one, turns line breaks into spaces and ignores leading and trailing whitespace. + // Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For + // example, locating by text `"Log in"` matches `<input type=button value="Log in">`. + // + // text: Text to locate the element for. + GetByText(text interface{}, options ...LocatorGetByTextOptions) Locator + + // Allows locating elements by their title attribute. + // + // text: Text to locate the element for. + GetByTitle(text interface{}, options ...LocatorGetByTitleOptions) Locator + + // Highlight the corresponding element(s) on the screen. Useful for debugging, don't commit the code that uses + // [Locator.Highlight]. + Highlight() error + + // Hover over the matching element. + // + // # Details + // + // This method hovers over the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Mouse] to hover over the center of the element, or the specified “[object Object]”. + // 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // [actionability]: https://playwright.dev/docs/actionability + Hover(options ...LocatorHoverOptions) error + + // Returns the [`element.innerHTML`]. + // + // [`element.innerHTML`]: https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML + InnerHTML(options ...LocatorInnerHTMLOptions) (string, error) + + // Returns the [`element.innerText`]. + // **NOTE** If you need to assert text on the page, prefer [LocatorAssertions.ToHaveText] with “[object Object]” + // option to avoid flakiness. See [assertions guide] for more details. + // + // [`element.innerText`]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText + // [assertions guide]: https://playwright.dev/docs/test-assertions + InnerText(options ...LocatorInnerTextOptions) (string, error) + + // Returns the value for the matching `<input>` or `<textarea>` or `<select>` element. + // **NOTE** If you need to assert input value, prefer [LocatorAssertions.ToHaveValue] to avoid flakiness. See + // [assertions guide] for more details. + // + // # Details + // + // Throws elements that are not an input, textarea or a select. However, if the element is inside the `<label>` + // element that has an associated + // [control], returns the value of the + // control. + // + // [assertions guide]: https://playwright.dev/docs/test-assertions + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + InputValue(options ...LocatorInputValueOptions) (string, error) + + // Returns whether the element is checked. Throws if the element is not a checkbox or radio input. + // **NOTE** If you need to assert that checkbox is checked, prefer [LocatorAssertions.ToBeChecked] to avoid flakiness. + // See [assertions guide] for more details. + // + // [assertions guide]: https://playwright.dev/docs/test-assertions + IsChecked(options ...LocatorIsCheckedOptions) (bool, error) + + // Returns whether the element is disabled, the opposite of [enabled]. + // **NOTE** If you need to assert that an element is disabled, prefer [LocatorAssertions.ToBeDisabled] to avoid + // flakiness. See [assertions guide] for more details. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [assertions guide]: https://playwright.dev/docs/test-assertions + IsDisabled(options ...LocatorIsDisabledOptions) (bool, error) + + // Returns whether the element is [editable]. If the target element is not an `<input>`, + // `<textarea>`, `<select>`, `[contenteditable]` and does not have a role allowing `[aria-readonly]`, this method + // throws an error. + // **NOTE** If you need to assert that an element is editable, prefer [LocatorAssertions.ToBeEditable] to avoid + // flakiness. See [assertions guide] for more details. + // + // [editable]: https://playwright.dev/docs/actionability#editable + // [assertions guide]: https://playwright.dev/docs/test-assertions + IsEditable(options ...LocatorIsEditableOptions) (bool, error) + + // Returns whether the element is [enabled]. + // **NOTE** If you need to assert that an element is enabled, prefer [LocatorAssertions.ToBeEnabled] to avoid + // flakiness. See [assertions guide] for more details. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [assertions guide]: https://playwright.dev/docs/test-assertions + IsEnabled(options ...LocatorIsEnabledOptions) (bool, error) + + // Returns whether the element is hidden, the opposite of [visible]. + // **NOTE** If you need to assert that element is hidden, prefer [LocatorAssertions.ToBeHidden] to avoid flakiness. + // See [assertions guide] for more details. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [assertions guide]: https://playwright.dev/docs/test-assertions + IsHidden(options ...LocatorIsHiddenOptions) (bool, error) + + // Returns whether the element is [visible]. + // **NOTE** If you need to assert that element is visible, prefer [LocatorAssertions.ToBeVisible] to avoid flakiness. + // See [assertions guide] for more details. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [assertions guide]: https://playwright.dev/docs/test-assertions + IsVisible(options ...LocatorIsVisibleOptions) (bool, error) + + // Returns locator to the last matching element. + Last() Locator + + // The method finds an element matching the specified selector in the locator's subtree. It also accepts filter + // options, similar to [Locator.Filter] method. + // [Learn more about locators]. + // + // selectorOrLocator: A selector or locator to use when resolving DOM element. + // + // [Learn more about locators]: https://playwright.dev/docs/locators + Locator(selectorOrLocator interface{}, options ...LocatorLocatorOptions) Locator + + // Returns locator to the n-th matching element. It's zero based, `nth(0)` selects the first element. + Nth(index int) Locator + + // Creates a locator matching all elements that match one or both of the two locators. + // Note that when both locators match something, the resulting locator will have multiple matches, potentially causing + // a [locator strictness] violation. + // + // locator: Alternative locator to match. + // + // [locator strictness]: https://playwright.dev/docs/locators#strictness + // ["strict mode violation" error]: https://playwright.dev/docs/locators#strictness + Or(locator Locator) Locator + + // A page this locator belongs to. + Page() (Page, error) + + // Focuses the matching element and presses a combination of the keys. + // + // # Details + // + // Focuses the element, and then uses [Keyboard.Down] and [Keyboard.Up]. + // “[object Object]” can specify the intended + // [keyboardEvent.Key] value or a single character + // to generate the text for. A superset of the “[object Object]” values can be found + // [here]. 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`, + // `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS. + // Holding down `Shift` will type the text that corresponds to the “[object Object]” in the upper case. + // If “[object Object]” 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"`, `key: "Control++` 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. + // + // key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + // + // [keyboardEvent.Key]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + // [here]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values + Press(key string, options ...LocatorPressOptions) error + + // **NOTE** In most cases, you should use [Locator.Fill] instead. You only need to press keys one by one if there is + // special keyboard handling on the page. + // 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]. + // + // text: String of characters to sequentially press into a focused element. + PressSequentially(text string, options ...LocatorPressSequentiallyOptions) error + + // Take a screenshot of the element matching the locator. + // + // # Details + // + // 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. + // This method waits for the [actionability] checks, then scrolls element into view before taking + // a screenshot. If the element is detached from DOM, the method throws an error. + // Returns the buffer with the captured screenshot. + // + // [actionability]: https://playwright.dev/docs/actionability + Screenshot(options ...LocatorScreenshotOptions) ([]byte, error) + + // This method waits for [actionability] checks, then tries to scroll element into view, unless + // it is completely visible as defined by + // [IntersectionObserver]'s `ratio`. + // See [scrolling] for alternative ways to scroll. + // + // [actionability]: https://playwright.dev/docs/actionability + // [IntersectionObserver]: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API + // [scrolling]: https://playwright.dev/docs/input#scrolling + ScrollIntoViewIfNeeded(options ...LocatorScrollIntoViewIfNeededOptions) error + + // Selects option or options in `<select>`. + // + // # Details + // + // This method waits for [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], 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. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + SelectOption(values SelectOptionValues, options ...LocatorSelectOptionOptions) ([]string, error) + + // This method waits for [actionability] checks, then focuses the element and selects all its + // text content. + // If the element is inside the `<label>` element that has an associated + // [control], focuses and selects text in + // the control instead. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + SelectText(options ...LocatorSelectTextOptions) error + + // Set the state of a checkbox or a radio element. + // + // # Details + // + // 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. + // 2. If the element already has the right checked state, this method returns immediately. + // 3. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 4. Scroll the element into view if needed. + // 5. Use [Page.Mouse] to click in the center of the element. + // 6. Ensure that the element is now checked or unchecked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // checked: Whether to check or uncheck the checkbox. + // + // [actionability]: https://playwright.dev/docs/actionability + SetChecked(checked bool, options ...LocatorSetCheckedOptions) error + + // Upload file or multiple files into `<input type=file>`. For inputs with a `[webkitdirectory]` attribute, only a + // single directory path is supported. + // + // # Details + // + // Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then + // they are resolved relative to the current working directory. For empty array, clears the selected files. + // This method expects [Locator] to point to an + // [input element]. However, if the element is inside + // the `<label>` element that has an associated + // [control], targets the control instead. + // + // [input element]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + SetInputFiles(files interface{}, options ...LocatorSetInputFilesOptions) error + + // Perform a tap gesture on the element matching the locator. For examples of emulating other gestures by manually + // dispatching touch events, see the [emulating legacy touch events] page. + // + // # Details + // + // This method taps the element by performing the following steps: + // 1. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 2. Scroll the element into view if needed. + // 3. Use [Page.Touchscreen] to tap the center of the element, or the specified “[object Object]”. + // 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 “[object Object]”, 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. + // + // [emulating legacy touch events]: https://playwright.dev/docs/touch-events + // [actionability]: https://playwright.dev/docs/actionability + Tap(options ...LocatorTapOptions) error + + // Returns the [`node.textContent`]. + // **NOTE** If you need to assert text on the page, prefer [LocatorAssertions.ToHaveText] to avoid flakiness. See + // [assertions guide] for more details. + // + // [`node.textContent`]: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent + // [assertions guide]: https://playwright.dev/docs/test-assertions + TextContent(options ...LocatorTextContentOptions) (string, error) + + // 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]. + // + // Deprecated: In most cases, you should use [Locator.Fill] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator.PressSequentially]. + // + // text: A text to type into a focused element. + Type(text string, options ...LocatorTypeOptions) error + + // Ensure that checkbox or radio element is unchecked. + // + // # Details + // + // This method unchecks 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. + // 2. Wait for [actionability] checks on the element, unless “[object Object]” option is set. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to click in the center of the element. + // 5. 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 “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // [actionability]: https://playwright.dev/docs/actionability + Uncheck(options ...LocatorUncheckOptions) error + + // Returns when element specified by locator satisfies the “[object Object]” option. + // If target element already satisfies the condition, the method returns immediately. Otherwise, waits for up to + // “[object Object]” milliseconds until the condition is met. + WaitFor(options ...LocatorWaitForOptions) error + + Err() error +} + +// The [LocatorAssertions] class provides assertion methods that can be used to make assertions about the [Locator] +// state in the tests. +type LocatorAssertions interface { + // Makes the assertion check for the opposite condition. For example, this code tests that the Locator doesn't contain + // text `"error"`: + Not() LocatorAssertions + + // Ensures that [Locator] points to an element that is + // [connected] to a Document or a ShadowRoot. + // + // [connected]: https://developer.mozilla.org/en-US/docs/Web/API/Node/isConnected + ToBeAttached(options ...LocatorAssertionsToBeAttachedOptions) error + + // Ensures the [Locator] points to a checked input. + ToBeChecked(options ...LocatorAssertionsToBeCheckedOptions) error + + // Ensures the [Locator] points to a disabled element. Element is disabled if it has "disabled" attribute or is + // disabled via + // ['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. + // + // ['aria-disabled']: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-disabled + ToBeDisabled(options ...LocatorAssertionsToBeDisabledOptions) error + + // Ensures the [Locator] points to an editable element. + ToBeEditable(options ...LocatorAssertionsToBeEditableOptions) error + + // Ensures the [Locator] points to an empty editable element or to a DOM node that has no text. + ToBeEmpty(options ...LocatorAssertionsToBeEmptyOptions) error + + // Ensures the [Locator] points to an enabled element. + ToBeEnabled(options ...LocatorAssertionsToBeEnabledOptions) error + + // Ensures the [Locator] points to a focused DOM node. + ToBeFocused(options ...LocatorAssertionsToBeFocusedOptions) error + + // Ensures that [Locator] either does not resolve to any DOM node, or resolves to a + // [non-visible] one. + // + // [non-visible]: https://playwright.dev/docs/actionability#visible + ToBeHidden(options ...LocatorAssertionsToBeHiddenOptions) error + + // Ensures the [Locator] points to an element that intersects viewport, according to the + // [intersection observer API]. + // + // [intersection observer API]: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API + ToBeInViewport(options ...LocatorAssertionsToBeInViewportOptions) error + + // Ensures that [Locator] points to an attached and [visible] DOM node. + // To check that at least one element from the list is visible, use [Locator.First]. + // + // [visible]: https://playwright.dev/docs/actionability#visible + ToBeVisible(options ...LocatorAssertionsToBeVisibleOptions) error + + // Ensures the [Locator] points to an element with given CSS classes. All classes from the asserted value, separated + // by spaces, must be present in the + // [Element.ClassList] in any order. + // + // expected: A string containing expected class names, separated by spaces, or a list of such strings to assert multiple + // elements. + // + // [Element.ClassList]: https://developer.mozilla.org/en-US/docs/Web/API/Element/classList + ToContainClass(expected interface{}, options ...LocatorAssertionsToContainClassOptions) error + + // Ensures the [Locator] points to an element that contains the given text. All nested elements will be considered + // when computing the text content of the element. You can use regular expressions for the value as well. + // + // # Details + // + // When `expected` parameter is a string, Playwright will normalize whitespaces and line breaks both in the actual + // text and in the expected string before matching. When regular expression is used, the actual text is matched as is. + // + // expected: Expected substring or RegExp or a list of those. + ToContainText(expected interface{}, options ...LocatorAssertionsToContainTextOptions) error + + // Ensures the [Locator] points to an element with a given + // [accessible description]. + // + // description: Expected accessible description. + // + // [accessible description]: https://w3c.github.io/accname/#dfn-accessible-description + ToHaveAccessibleDescription(description interface{}, options ...LocatorAssertionsToHaveAccessibleDescriptionOptions) error + + // Ensures the [Locator] points to an element with a given + // [aria errormessage]. + // + // errorMessage: Expected accessible error message. + // + // [aria errormessage]: https://w3c.github.io/aria/#aria-errormessage + ToHaveAccessibleErrorMessage(errorMessage interface{}, options ...LocatorAssertionsToHaveAccessibleErrorMessageOptions) error + + // Ensures the [Locator] points to an element with a given + // [accessible name]. + // + // name: Expected accessible name. + // + // [accessible name]: https://w3c.github.io/accname/#dfn-accessible-name + ToHaveAccessibleName(name interface{}, options ...LocatorAssertionsToHaveAccessibleNameOptions) error + + // Ensures the [Locator] points to an element with given attribute. + // + // 1. name: Attribute name. + // 2. value: Expected attribute value. + ToHaveAttribute(name string, value interface{}, options ...LocatorAssertionsToHaveAttributeOptions) error + + // Ensures the [Locator] points to an element with given CSS classes. When a string is provided, it must fully match + // the element's `class` attribute. To match individual classes use [LocatorAssertions.ToContainClass]. + // + // expected: Expected class or RegExp or a list of those. + ToHaveClass(expected interface{}, options ...LocatorAssertionsToHaveClassOptions) error + + // Ensures the [Locator] resolves to an exact number of DOM nodes. + // + // count: Expected count. + ToHaveCount(count int, options ...LocatorAssertionsToHaveCountOptions) error + + // Ensures the [Locator] resolves to an element with the given computed CSS style. + // + // 1. name: CSS property name. + // 2. value: CSS property value. + ToHaveCSS(name string, value interface{}, options ...LocatorAssertionsToHaveCSSOptions) error + + // Ensures the [Locator] points to an element with the given DOM Node ID. + // + // id: Element id. + ToHaveId(id interface{}, options ...LocatorAssertionsToHaveIdOptions) error + + // 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. + // + // 1. name: Property name. + // 2. value: Property value. + ToHaveJSProperty(name string, value interface{}, options ...LocatorAssertionsToHaveJSPropertyOptions) error + + // Ensures the [Locator] points to an element with a given [ARIA role]. + // Note that role is matched as a string, disregarding the ARIA role hierarchy. For example, asserting a superclass + // role `"checkbox"` on an element with a subclass role `"switch"` will fail. + // + // role: Required aria role. + // + // [ARIA role]: https://www.w3.org/TR/wai-aria-1.2/#roles + ToHaveRole(role AriaRole, options ...LocatorAssertionsToHaveRoleOptions) error + + // Ensures the [Locator] points to an element with the given text. All nested elements will be considered when + // computing the text content of the element. You can use regular expressions for the value as well. + // + // # Details + // + // When `expected` parameter is a string, Playwright will normalize whitespaces and line breaks both in the actual + // text and in the expected string before matching. When regular expression is used, the actual text is matched as is. + // + // expected: Expected string or RegExp or a list of those. + ToHaveText(expected interface{}, options ...LocatorAssertionsToHaveTextOptions) error + + // Ensures the [Locator] points to an element with the given input value. You can use regular expressions for the + // value as well. + // + // value: Expected value. + ToHaveValue(value interface{}, options ...LocatorAssertionsToHaveValueOptions) error + + // Ensures the [Locator] points to multi-select/combobox (i.e. a `select` with the `multiple` attribute) and the + // specified values are selected. + // + // values: Expected options currently selected. + ToHaveValues(values []interface{}, options ...LocatorAssertionsToHaveValuesOptions) error + + // Asserts that the target element matches the given [accessibility snapshot]. + // + // [accessibility snapshot]: https://playwright.dev/docs/aria-snapshots + ToMatchAriaSnapshot(expected string, options ...LocatorAssertionsToMatchAriaSnapshotOptions) error +} + +// 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]. +type Mouse interface { + // Shortcut for [Mouse.Move], [Mouse.Down], [Mouse.Up]. + // + // 1. x: X coordinate relative to the main frame's viewport in CSS pixels. + // 2. y: Y coordinate relative to the main frame's viewport in CSS pixels. + Click(x float64, y float64, options ...MouseClickOptions) error + + // Shortcut for [Mouse.Move], [Mouse.Down], [Mouse.Up], [Mouse.Down] and [Mouse.Up]. + // + // 1. x: X coordinate relative to the main frame's viewport in CSS pixels. + // 2. y: Y coordinate relative to the main frame's viewport in CSS pixels. + Dblclick(x float64, y float64, options ...MouseDblclickOptions) error + + // Dispatches a `mousedown` event. + Down(options ...MouseDownOptions) error + + // Dispatches a `mousemove` event. + // + // 1. x: X coordinate relative to the main frame's viewport in CSS pixels. + // 2. y: Y coordinate relative to the main frame's viewport in CSS pixels. + Move(x float64, y float64, options ...MouseMoveOptions) error + + // Dispatches a `mouseup` event. + Up(options ...MouseUpOptions) error + + // Dispatches a `wheel` event. This method is usually used to manually scroll the page. See + // [scrolling] for alternative ways to scroll. + // **NOTE** Wheel events may cause scrolling if they are not handled, and this method does not wait for the scrolling + // to finish before returning. + // + // 1. deltaX: Pixels to scroll horizontally. + // 2. deltaY: Pixels to scroll vertically. + // + // [scrolling]: https://playwright.dev/docs/input#scrolling + Wheel(deltaX float64, deltaY float64) error +} + +// Page provides methods to interact with a single tab in a [Browser], or an +// [extension background page] 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: +// The Page class emits various events (described below) which can be handled using any of Node's native +// [`EventEmitter`] methods, such as `on`, `once` or +// `removeListener`. +// This example logs a message for a single page `load` event: +// To unsubscribe from events use the `removeListener` method: +// +// [extension background page]: https://developer.chrome.com/extensions/background_pages +// [`EventEmitter`]: https://nodejs.org/api/events.html#events_class_eventemitter +type Page interface { + EventEmitter + // Playwright has ability to mock clock and passage of time. + Clock() Clock + + // Emitted when the page closes. + OnClose(fn func(Page)) + + // Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. + // The arguments passed into `console.log` are available on the [ConsoleMessage] event handler argument. + OnConsole(fn func(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: + OnCrash(fn func(Page)) + + // Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** + // either [Dialog.Accept] or [Dialog.Dismiss] the dialog - otherwise the page will + // [freeze] waiting for the dialog, + // and actions like click will never finish. + // + // [freeze]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking + OnDialog(fn func(Dialog)) + + // Emitted when the JavaScript + // [`DOMContentLoaded`] event is dispatched. + // + // [`DOMContentLoaded`]: https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded + OnDOMContentLoaded(fn func(Page)) + + // Emitted when attachment download started. User can access basic file operations on downloaded content via the + // passed [Download] instance. + OnDownload(fn func(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] that can be uploaded after that. + OnFileChooser(fn func(FileChooser)) + + // Emitted when a frame is attached. + OnFrameAttached(fn func(Frame)) + + // Emitted when a frame is detached. + OnFrameDetached(fn func(Frame)) + + // Emitted when a frame is navigated to a new url. + OnFrameNavigated(fn func(Frame)) + + // Emitted when the JavaScript [`load`] event is dispatched. + // + // [`load`]: https://developer.mozilla.org/en-US/docs/Web/Events/load + OnLoad(fn func(Page)) + + // Emitted when an uncaught exception happens within the page. + OnPageError(fn func(error)) + + // Emitted when the page opens a new tab or window. This event is emitted in addition to the [BrowserContext.OnPage], + // 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. If you would like to route/listen + // to this network request, use [BrowserContext.Route] and [BrowserContext.OnRequest] respectively instead of similar + // methods on the [Page]. + // **NOTE** Use [Page.WaitForLoadState] to wait until the page gets to a particular state (you should not need it in + // most cases). + OnPopup(fn func(Page)) + + // Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, + // see [Page.Route] or [BrowserContext.Route]. + OnRequest(fn func(Request)) + + // Emitted when a request fails, for example by timing out. + // **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request + // will complete with [Page.OnRequestFinished] event and not with [Page.OnRequestFailed]. 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. + OnRequestFailed(fn func(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`. + OnRequestFinished(fn func(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`. + OnResponse(fn func(Response)) + + // Emitted when [WebSocket] request is sent. + OnWebSocket(fn func(WebSocket)) + + // Emitted when a dedicated [WebWorker] is spawned + // by the page. + // + // [WebWorker]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API + OnWorker(fn func(Worker)) + + // 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`. + // + // script: Script to be evaluated in the page. + AddInitScript(script Script) error + + // 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. + AddScriptTag(options PageAddScriptTagOptions) (ElementHandle, error) + + // 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. + AddStyleTag(options PageAddStyleTagOptions) (ElementHandle, error) + + // Brings page to front (activates tab). + BringToFront() error + + // This method checks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. 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. + // 3. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 4. Scroll the element into view if needed. + // 5. Use [Page.Mouse] to click in the center of the element. + // 6. Ensure that the element is now checked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Check] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Check(selector string, options ...PageCheckOptions) error + + // This method clicks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to click in the center of the element, or the specified “[object Object]”. + // 5. Wait for initiated navigations to either succeed or fail, unless “[object Object]” option is set. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Click] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Click(selector string, options ...PageClickOptions) error + + // If “[object Object]” is `false`, does not run any unload handlers and waits for the page to be closed. If + // “[object Object]” 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 “[object Object]” is passed as true, a `beforeunload` dialog might be summoned and should be handled + // manually via [Page.OnDialog] event. + Close(options ...PageCloseOptions) error + + // Gets the full HTML contents of the page, including the doctype. + Content() (string, error) + + // Get the browser context that the page belongs to. + Context() BrowserContext + + // This method double clicks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to double click in the center of the element, or the specified “[object Object]”. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // **NOTE** `page.dblclick()` dispatches two `click` events and a single `dblclick` event. + // + // Deprecated: Use locator-based [Locator.Dblclick] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Dblclick(selector string, options ...PageDblclickOptions) error + + // 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()]. + // + // Deprecated: Use locator-based [Locator.DispatchEvent] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. typ: DOM event type: `"click"`, `"dragstart"`, etc. + // 3. eventInit: Optional event-specific initialization properties. + // + // [element.Click()]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click + // [DeviceMotionEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent + // [DeviceOrientationEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent + // [DragEvent]: https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent + // [Event]: https://developer.mozilla.org/en-US/docs/Web/API/Event/Event + // [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 + // [WheelEvent]: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent + // [locators]: https://playwright.dev/docs/locators + DispatchEvent(selector string, typ string, eventInit interface{}, options ...PageDispatchEventOptions) error + + // This method drags the source element to the target element. It will first move to the source element, perform a + // `mousedown`, then move to the target element and perform a `mouseup`. + // + // 1. source: A selector to search for an element to drag. If there are multiple elements satisfying the selector, the first will + // be used. + // 2. target: A selector to search for an element to drop onto. If there are multiple elements satisfying the selector, the first + // will be used. + DragAndDrop(source string, target string, options ...PageDragAndDropOptions) error + + // This method changes the `CSS media type` through the `media` argument, and/or the `prefers-colors-scheme` media + // feature, using the `colorScheme` argument. + EmulateMedia(options ...PageEmulateMediaOptions) error + + // The method finds an element matching the specified selector within the page and passes it as a first argument to + // “[object Object]”. If no elements match the selector, the method throws an error. Returns the value of + // “[object Object]”. + // If “[object Object]” returns a [Promise], then [Page.EvalOnSelector] would wait for the promise to resolve and + // return its value. + // + // Deprecated: This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. Use [Locator.Evaluate], other [Locator] helper methods or web-first assertions instead. + // + // 1. selector: A selector to query for. + // 2. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 3. arg: Optional argument to pass to “[object Object]”. + EvalOnSelector(selector string, expression string, arg interface{}, options ...PageEvalOnSelectorOptions) (interface{}, error) + + // The method finds all elements matching the specified selector within the page and passes an array of matched + // elements as a first argument to “[object Object]”. Returns the result of “[object Object]” invocation. + // If “[object Object]” returns a [Promise], then [Page.EvalOnSelectorAll] would wait for the promise to resolve and + // return its value. + // + // Deprecated: In most cases, [Locator.EvaluateAll], other [Locator] helper methods and web-first assertions do a better job. + // + // 1. selector: A selector to query for. + // 2. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 3. arg: Optional argument to pass to “[object Object]”. + EvalOnSelectorAll(selector string, expression string, arg ...interface{}) (interface{}, error) + + // Returns the value of the “[object Object]” invocation. + // If the function passed to the [Page.Evaluate] returns a [Promise], then [Page.Evaluate] would wait for the promise + // to resolve and return its value. + // If the function passed to the [Page.Evaluate] returns a non-[Serializable] value, then [Page.Evaluate] resolves to + // `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`: + // `-0`, `NaN`, `Infinity`, `-Infinity`. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + Evaluate(expression string, arg ...interface{}) (interface{}, error) + + // Returns the value of the “[object Object]” invocation as a [JSHandle]. + // The only difference between [Page.Evaluate] and [Page.EvaluateHandle] is that [Page.EvaluateHandle] returns + // [JSHandle]. + // If the function passed to the [Page.EvaluateHandle] returns a [Promise], then [Page.EvaluateHandle] would wait for + // the promise to resolve and return its value. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + EvaluateHandle(expression string, arg ...interface{}) (JSHandle, error) + + // The method adds a function called “[object Object]” on the `window` object of every frame in this page. When + // called, the function executes “[object Object]” and returns a [Promise] which resolves to the return value of + // “[object Object]”. If the “[object Object]” returns a [Promise], it will be awaited. + // The first argument of the “[object Object]” function contains information about the caller: `{ browserContext: + // BrowserContext, page: Page, frame: Frame }`. + // See [BrowserContext.ExposeBinding] for the context-wide version. + // **NOTE** Functions installed via [Page.ExposeBinding] survive navigations. + // + // 1. name: Name of the function on the window object. + // 2. binding: Callback function that will be called in the Playwright's context. + ExposeBinding(name string, binding BindingCallFunction, handle ...bool) error + + // The method adds a function called “[object Object]” on the `window` object of every frame in the page. When called, + // the function executes “[object Object]” and returns a [Promise] which resolves to the return value of + // “[object Object]”. + // If the “[object Object]” returns a [Promise], it will be awaited. + // See [BrowserContext.ExposeFunction] for context-wide exposed function. + // **NOTE** Functions installed via [Page.ExposeFunction] survive navigations. + // + // 1. name: Name of the function on the window object + // 2. binding: Callback function which will be called in Playwright's context. + ExposeFunction(name string, binding ExposedFunction) error + + // This method waits for an element matching “[object Object]”, waits for [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], the control will be filled + // instead. + // To send fine-grained keyboard events, use [Locator.PressSequentially]. + // + // Deprecated: Use locator-based [Locator.Fill] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. value: Value to fill for the `<input>`, `<textarea>` or `[contenteditable]` element. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + Fill(selector string, value string, options ...PageFillOptions) error + + // This method fetches an element with “[object Object]” and focuses it. If there's no element matching + // “[object Object]”, the method waits until a matching element appears in the DOM. + // + // Deprecated: Use locator-based [Locator.Focus] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + Focus(selector string, options ...PageFocusOptions) error + + // Returns frame matching the specified criteria. Either `name` or `url` must be specified. + Frame(options ...PageFrameOptions) Frame + + // When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements + // in that iframe. + // + // selector: A selector to use when resolving DOM element. + FrameLocator(selector string) FrameLocator + + // An array of all frames attached to the page. + Frames() []Frame + + // Returns element attribute value. + // + // Deprecated: Use locator-based [Locator.GetAttribute] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. name: Attribute name to get the value for. + // + // [locators]: https://playwright.dev/docs/locators + GetAttribute(selector string, name string, options ...PageGetAttributeOptions) (string, error) + + // Allows locating elements by their alt text. + // + // text: Text to locate the element for. + GetByAltText(text interface{}, options ...PageGetByAltTextOptions) Locator + + // Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the + // `aria-label` attribute. + // + // text: Text to locate the element for. + GetByLabel(text interface{}, options ...PageGetByLabelOptions) Locator + + // Allows locating input elements by the placeholder text. + // + // text: Text to locate the element for. + GetByPlaceholder(text interface{}, options ...PageGetByPlaceholderOptions) Locator + + // Allows locating elements by their [ARIA role], + // [ARIA attributes] and + // [accessible name]. + // + // # Details + // + // Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback + // about the ARIA guidelines. + // Many html elements have an implicitly [defined role] + // that is recognized by the role selector. You can find all the + // [supported roles here]. ARIA guidelines **do not recommend** + // duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values. + // + // role: Required aria role. + // + // [ARIA role]: https://www.w3.org/TR/wai-aria-1.2/#roles + // [ARIA attributes]: https://www.w3.org/TR/wai-aria-1.2/#aria-attributes + // [accessible name]: https://w3c.github.io/accname/#dfn-accessible-name + // [defined role]: https://w3c.github.io/html-aam/#html-element-role-mappings + // [supported roles here]: https://www.w3.org/TR/wai-aria-1.2/#role_definitions + GetByRole(role AriaRole, options ...PageGetByRoleOptions) Locator + + // Locate element by the test id. + // + // # Details + // + // By default, the `data-testid` attribute is used as a test id. Use [Selectors.SetTestIdAttribute] to configure a + // different test id attribute if necessary. + // + // testId: Id to locate the element by. + GetByTestId(testId interface{}) Locator + + // Allows locating elements that contain given text. + // See also [Locator.Filter] that allows to match by another criteria, like an accessible role, and then filter by the + // text content. + // + // # Details + // + // Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into + // one, turns line breaks into spaces and ignores leading and trailing whitespace. + // Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For + // example, locating by text `"Log in"` matches `<input type=button value="Log in">`. + // + // text: Text to locate the element for. + GetByText(text interface{}, options ...PageGetByTextOptions) Locator + + // Allows locating elements by their title attribute. + // + // text: Text to locate the element for. + GetByTitle(text interface{}, options ...PageGetByTitleOptions) Locator + + // Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of + // the last redirect. If cannot go back, returns `null`. + // Navigate to the previous page in history. + GoBack(options ...PageGoBackOptions) (Response, error) + + // Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of + // the last redirect. If cannot go forward, returns `null`. + // Navigate to the next page in history. + GoForward(options ...PageGoForwardOptions) (Response, error) + + // Request the page to perform garbage collection. Note that there is no guarantee that all unreachable objects will + // be collected. + // This is useful to help detect memory leaks. For example, if your page has a large object `suspect` that might be + // leaked, you can check that it does not leak by using a + // [`WeakRef`]. + // + // [`WeakRef`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakRef + RequestGC() error + + // Returns the main resource response. In case of multiple redirects, the navigation will resolve with the first + // non-redirect response. + // 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 “[object Object]” 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]. + // **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]. + // + // url: URL to navigate page to. The url should include scheme, e.g. `https://`. When a “[object Object]” 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. + // + // [upstream issue]: https://bugs.chromium.org/p/chromium/issues/detail?id=761295 + Goto(url string, options ...PageGotoOptions) (Response, error) + + // This method hovers over an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Mouse] to hover over the center of the element, or the specified “[object Object]”. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Hover] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Hover(selector string, options ...PageHoverOptions) error + + // Returns `element.innerHTML`. + // + // Deprecated: Use locator-based [Locator.InnerHTML] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + InnerHTML(selector string, options ...PageInnerHTMLOptions) (string, error) + + // Returns `element.innerText`. + // + // Deprecated: Use locator-based [Locator.InnerText] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + InnerText(selector string, options ...PageInnerTextOptions) (string, error) + + // 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], returns the value of the + // control. + // + // Deprecated: Use locator-based [Locator.InputValue] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + InputValue(selector string, options ...PageInputValueOptions) (string, error) + + // Returns whether the element is checked. Throws if the element is not a checkbox or radio input. + // + // Deprecated: Use locator-based [Locator.IsChecked] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + IsChecked(selector string, options ...PageIsCheckedOptions) (bool, error) + + // Indicates that the page has been closed. + IsClosed() bool + + // Returns whether the element is disabled, the opposite of [enabled]. + // + // Deprecated: Use locator-based [Locator.IsDisabled] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [locators]: https://playwright.dev/docs/locators + IsDisabled(selector string, options ...PageIsDisabledOptions) (bool, error) + + // Returns whether the element is [editable]. + // + // Deprecated: Use locator-based [Locator.IsEditable] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [editable]: https://playwright.dev/docs/actionability#editable + // [locators]: https://playwright.dev/docs/locators + IsEditable(selector string, options ...PageIsEditableOptions) (bool, error) + + // Returns whether the element is [enabled]. + // + // Deprecated: Use locator-based [Locator.IsEnabled] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [enabled]: https://playwright.dev/docs/actionability#enabled + // [locators]: https://playwright.dev/docs/locators + IsEnabled(selector string, options ...PageIsEnabledOptions) (bool, error) + + // Returns whether the element is hidden, the opposite of [visible]. “[object Object]” + // that does not match any elements is considered hidden. + // + // Deprecated: Use locator-based [Locator.IsHidden] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [locators]: https://playwright.dev/docs/locators + IsHidden(selector string, options ...PageIsHiddenOptions) (bool, error) + + // Returns whether the element is [visible]. “[object Object]” that does not match any + // elements is considered not visible. + // + // Deprecated: Use locator-based [Locator.IsVisible] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [visible]: https://playwright.dev/docs/actionability#visible + // [locators]: https://playwright.dev/docs/locators + IsVisible(selector string, options ...PageIsVisibleOptions) (bool, error) + + Keyboard() Keyboard + + // The method returns an element locator that can be used to perform actions on this page / 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. + // [Learn more about locators]. + // + // selector: A selector to use when resolving DOM element. + // + // [Learn more about locators]: https://playwright.dev/docs/locators + Locator(selector string, options ...PageLocatorOptions) 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() (Page, error) + + // 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 “[object Object]” option. + Pause() error + + // Returns the PDF buffer. + // `page.pdf()` generates a pdf of the page with `print` css media. To generate a pdf with `screen` media, call + // [Page.EmulateMedia] before calling `page.pdf()`: + // **NOTE** By default, `page.pdf()` generates a pdf with modified colors for printing. Use the + // [`-webkit-print-color-adjust`] + // property to force rendering of exact colors. + // + // [`-webkit-print-color-adjust`]: https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-print-color-adjust + PDF(options ...PagePdfOptions) ([]byte, error) + + // Focuses the element, and then uses [Keyboard.Down] and [Keyboard.Up]. + // “[object Object]” can specify the intended + // [keyboardEvent.Key] value or a single character + // to generate the text for. A superset of the “[object Object]” values can be found + // [here]. 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`, + // `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS. + // Holding down `Shift` will type the text that corresponds to the “[object Object]” in the upper case. + // If “[object Object]” 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"`, `key: "Control++` 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. + // + // Deprecated: Use locator-based [Locator.Press] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. key: Name of the key to press or a character to generate, such as `ArrowLeft` or `a`. + // + // [keyboardEvent.Key]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + // [here]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values + // [locators]: https://playwright.dev/docs/locators + Press(selector string, key string, options ...PagePressOptions) error + + // 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]. + // + // Deprecated: Use locator-based [Page.Locator] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + QuerySelector(selector string, options ...PageQuerySelectorOptions) (ElementHandle, error) + + // The method finds all elements matching the specified selector within the page. If no elements match the selector, + // the return value resolves to `[]`. + // + // Deprecated: Use locator-based [Page.Locator] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + QuerySelectorAll(selector string) ([]ElementHandle, error) + + // When testing a web page, sometimes unexpected overlays like a "Sign up" dialog appear and block actions you want to + // automate, e.g. clicking a button. These overlays don't always show up in the same way or at the same time, making + // them tricky to handle in automated tests. + // This method lets you set up a special function, called a handler, that activates when it detects that overlay is + // visible. The handler's job is to remove the overlay, allowing your test to continue as if the overlay wasn't there. + // Things to keep in mind: + // - When an overlay is shown predictably, we recommend explicitly waiting for it in your test and dismissing it as + // a part of your normal test flow, instead of using [Page.AddLocatorHandler]. + // - Playwright checks for the overlay every time before executing or retrying an action that requires an + // [actionability check], or before performing an auto-waiting assertion check. When overlay + // is visible, Playwright calls the handler first, and then proceeds with the action/assertion. Note that the + // handler is only called when you perform an action/assertion - if the overlay becomes visible but you don't + // perform any actions, the handler will not be triggered. + // - After executing the handler, Playwright will ensure that overlay that triggered the handler is not visible + // anymore. You can opt-out of this behavior with “[object Object]”. + // - The execution time of the handler counts towards the timeout of the action/assertion that executed the handler. + // If your handler takes too long, it might cause timeouts. + // - You can register multiple handlers. However, only a single handler will be running at a time. Make sure the + // actions within a handler don't depend on another handler. + // **NOTE** Running the handler will alter your page state mid-test. For example it will change the currently focused + // element and move the mouse. Make sure that actions that run after the handler are self-contained and do not rely on + // the focus and mouse state being unchanged. + // For example, consider a test that calls [Locator.Focus] followed by [Keyboard.Press]. If your handler clicks a + // button between these two actions, the focused element most likely will be wrong, and key press will happen on the + // unexpected element. Use [Locator.Press] instead to avoid this problem. + // Another example is a series of mouse actions, where [Mouse.Move] is followed by [Mouse.Down]. Again, when the + // handler runs between these two actions, the mouse position will be wrong during the mouse down. Prefer + // self-contained actions like [Locator.Click] that do not rely on the state being unchanged by a handler. + // + // 1. locator: Locator that triggers the handler. + // 2. handler: Function that should be run once “[object Object]” appears. This function should get rid of the element that blocks + // actions like click. + // + // [actionability check]: https://playwright.dev/docs/actionability + AddLocatorHandler(locator Locator, handler func(Locator), options ...PageAddLocatorHandlerOptions) error + + // Removes all locator handlers added by [Page.AddLocatorHandler] for a specific locator. + // + // locator: Locator passed to [Page.AddLocatorHandler]. + RemoveLocatorHandler(locator Locator) error + + // 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. + Reload(options ...PageReloadOptions) (Response, error) + + // API testing helper associated with this page. This method returns the same instance as [BrowserContext.Request] on + // the page's context. See [BrowserContext.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] will not intercept requests intercepted by Service Worker. See + // [this] issue. We recommend disabling Service Workers when + // using request interception by setting “[object Object]” to `block`. + // **NOTE** [Page.Route] will not intercept the first request of a popup page. Use [BrowserContext.Route] instead. + // + // 1. url: A glob pattern, regex pattern, or predicate that receives a [URL] to match during routing. If “[object Object]” is + // set in the context options and the provided URL is a string that does not start with `*`, it is resolved using the + // [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor. + // 2. handler: handler function to route the request. + // + // [this]: https://github.com/microsoft/playwright/issues/1090 + Route(url interface{}, handler routeHandler, times ...int) error + + // If specified the network requests that are made in the page will be served from the HAR file. Read more about + // [Replaying from HAR]. + // Playwright will not serve requests intercepted by Service Worker from the HAR file. See + // [this] issue. We recommend disabling Service Workers when + // using request interception by setting “[object Object]” to `block`. + // + // har: Path to a [HAR](http://www.softwareishard.com/blog/har-12-spec) file with prerecorded network data. If `path` is a + // relative path, then it is resolved relative to the current working directory. + // + // [Replaying from HAR]: https://playwright.dev/docs/mock#replaying-from-har + // [this]: https://github.com/microsoft/playwright/issues/1090 + RouteFromHAR(har string, options ...PageRouteFromHAROptions) error + + // This method allows to modify websocket connections that are made by the page. + // Note that only `WebSocket`s created after this method was called will be routed. It is recommended to call this + // method before navigating the page. + // + // 1. url: Only WebSockets with the url matching this pattern will be routed. A string pattern can be relative to the + // “[object Object]” context option. + // 2. handler: Handler function to route the WebSocket. + RouteWebSocket(url interface{}, handler func(WebSocketRoute)) error + + // Returns the buffer with the captured screenshot. + Screenshot(options ...PageScreenshotOptions) ([]byte, error) + + // This method waits for an element matching “[object Object]”, waits for [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], 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. + // + // Deprecated: Use locator-based [Locator.SelectOption] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SelectOption(selector string, values SelectOptionValues, options ...PageSelectOptionOptions) ([]string, error) + + // This method checks or unchecks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Ensure that matched element is a checkbox or a radio input. If not, this method throws. + // 3. If the element already has the right checked state, this method returns immediately. + // 4. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 5. Scroll the element into view if needed. + // 6. Use [Page.Mouse] to click in the center of the element. + // 7. Ensure that the element is now checked or unchecked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.SetChecked] instead. Read more about [locators]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. checked: Whether to check or uncheck the checkbox. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + SetChecked(selector string, checked bool, options ...PageSetCheckedOptions) error + + // This method internally calls [document.Write()], + // inheriting all its specific characteristics and behaviors. + // + // html: HTML markup to assign to the page. + // + // [document.Write()]: https://developer.mozilla.org/en-US/docs/Web/API/Document/write + SetContent(html string, options ...PageSetContentOptions) error + + // This setting will change the default maximum navigation time for the following methods and related shortcuts: + // - [Page.GoBack] + // - [Page.GoForward] + // - [Page.Goto] + // - [Page.Reload] + // - [Page.SetContent] + // - [Page.ExpectNavigation] + // - [Page.WaitForURL] + // **NOTE** [Page.SetDefaultNavigationTimeout] takes priority over [Page.SetDefaultTimeout], + // [BrowserContext.SetDefaultTimeout] and [BrowserContext.SetDefaultNavigationTimeout]. + // + // timeout: Maximum navigation time in milliseconds + SetDefaultNavigationTimeout(timeout float64) + + // This setting will change the default maximum time for all the methods accepting “[object Object]” option. + // **NOTE** [Page.SetDefaultNavigationTimeout] takes priority over [Page.SetDefaultTimeout]. + // + // timeout: Maximum time in milliseconds. Pass `0` to disable timeout. + SetDefaultTimeout(timeout float64) + + // The extra HTTP headers will be sent with every request the page initiates. + // **NOTE** [Page.SetExtraHTTPHeaders] does not guarantee the order of headers in the outgoing requests. + // + // headers: An object containing additional HTTP headers to be sent with every request. All header values must be strings. + SetExtraHTTPHeaders(headers map[string]string) error + + // Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then + // they are resolved relative to the current working directory. For empty array, clears the selected files. For inputs + // with a `[webkitdirectory]` attribute, only a single directory path is supported. + // This method expects “[object Object]” to point to an + // [input element]. However, if the element is inside + // the `<label>` element that has an associated + // [control], targets the control instead. + // + // Deprecated: Use locator-based [Locator.SetInputFiles] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [input element]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input + // [control]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control + // [locators]: https://playwright.dev/docs/locators + SetInputFiles(selector string, files interface{}, options ...PageSetInputFilesOptions) error + + // In the case of multiple pages in a single browser, each page can have its own viewport size. However, + // [Browser.NewContext] allows to set viewport size (and more) for all pages in the context at once. + // [Page.SetViewportSize] 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] will also reset `screen` size, use + // [Browser.NewContext] with `screen` and `viewport` parameters if you need better control of these properties. + // + // 1. width: Page width in pixels. + // 2. height: Page height in pixels. + SetViewportSize(width int, height int) error + + // This method taps an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 3. Scroll the element into view if needed. + // 4. Use [Page.Touchscreen] to tap the center of the element, or the specified “[object Object]”. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // **NOTE** [Page.Tap] the method will throw if “[object Object]” option of the browser context is false. + // + // Deprecated: Use locator-based [Locator.Tap] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Tap(selector string, options ...PageTapOptions) error + + // Returns `element.textContent`. + // + // Deprecated: Use locator-based [Locator.TextContent] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [locators]: https://playwright.dev/docs/locators + TextContent(selector string, options ...PageTextContentOptions) (string, error) + + // Returns the page's title. + Title() (string, error) + + 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]. + // To press a special key, like `Control` or `ArrowDown`, use [Keyboard.Press]. + // + // Deprecated: In most cases, you should use [Locator.Fill] instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use [Locator.PressSequentially]. + // + // 1. selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // 2. text: A text to type into a focused element. + Type(selector string, text string, options ...PageTypeOptions) error + + // This method unchecks an element matching “[object Object]” by performing the following steps: + // 1. Find an element matching “[object Object]”. If there is none, wait until a matching element is attached to + // the DOM. + // 2. 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. + // 3. Wait for [actionability] checks on the matched element, unless “[object Object]” option + // is set. If the element is detached during the checks, the whole action is retried. + // 4. Scroll the element into view if needed. + // 5. Use [Page.Mouse] to click in the center of the element. + // 6. Ensure that the element is now unchecked. If not, this method throws. + // When all steps combined have not finished during the specified “[object Object]”, this method throws a + // [TimeoutError]. Passing zero timeout disables this. + // + // Deprecated: Use locator-based [Locator.Uncheck] instead. Read more about [locators]. + // + // selector: A selector to search for an element. If there are multiple elements satisfying the selector, the first will be + // used. + // + // [actionability]: https://playwright.dev/docs/actionability + // [locators]: https://playwright.dev/docs/locators + Uncheck(selector string, options ...PageUncheckOptions) error + + // Removes all routes created with [Page.Route] and [Page.RouteFromHAR]. + UnrouteAll(options ...PageUnrouteAllOptions) error + + // Removes a route created with [Page.Route]. When “[object Object]” is not specified, removes all routes for the + // “[object Object]”. + // + // 1. url: A glob pattern, regex pattern or predicate receiving [URL] to match while routing. + // 2. handler: Optional handler function to route the request. + Unroute(url interface{}, handler ...routeHandler) error + + URL() string + + // Video object associated with this page. + Video() Video + + ViewportSize() *Size + + // Performs action and waits for a [ConsoleMessage] to be logged by in the page. If predicate is provided, it passes + // [ConsoleMessage] value into the `predicate` function and waits for `predicate(message)` to return a truthy value. + // Will throw an error if the page is closed before the [Page.OnConsole] event is fired. + ExpectConsoleMessage(cb func() error, options ...PageExpectConsoleMessageOptions) (ConsoleMessage, error) + + // Performs action and waits for a new [Download]. If predicate is provided, it passes [Download] value into the + // `predicate` function and waits for `predicate(download)` to return a truthy value. Will throw an error if the page + // is closed before the download event is fired. + ExpectDownload(cb func() error, options ...PageExpectDownloadOptions) (Download, error) + + // Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy + // value. Will throw an error if the page is closed before the event is fired. Returns the event data value. + // + // event: Event name, same one typically passed into `*.on(event)`. + ExpectEvent(event string, cb func() error, options ...PageExpectEventOptions) (interface{}, error) + + // Performs action and waits for a new [FileChooser] to be created. If predicate is provided, it passes [FileChooser] + // value into the `predicate` function and waits for `predicate(fileChooser)` to return a truthy value. Will throw an + // error if the page is closed before the file chooser is opened. + ExpectFileChooser(cb func() error, options ...PageExpectFileChooserOptions) (FileChooser, error) + + // Returns when the “[object Object]” returns a truthy value. It resolves to a JSHandle of the truthy value. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + WaitForFunction(expression string, arg interface{}, options ...PageWaitForFunctionOptions) (JSHandle, error) + + // 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. + // **NOTE** Most of the time, this method is not needed because Playwright + // [auto-waits before every action]. + // + // [auto-waits before every action]: https://playwright.dev/docs/actionability + WaitForLoadState(options ...PageWaitForLoadStateOptions) error + + // 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`. + // + // Deprecated: This method is inherently racy, please use [Page.WaitForURL] instead. + // + // [History API]: https://developer.mozilla.org/en-US/docs/Web/API/History_API + ExpectNavigation(cb func() error, options ...PageExpectNavigationOptions) (Response, error) + + // Performs action and waits for a popup [Page]. If predicate is provided, it passes [Popup] value into the + // `predicate` function and waits for `predicate(page)` to return a truthy value. Will throw an error if the page is + // closed before the popup event is fired. + ExpectPopup(cb func() error, options ...PageExpectPopupOptions) (Page, error) + + // Waits for the matching request and returns it. See [waiting for event] for more + // details about events. + // + // urlOrPredicate: Request URL string, regex or predicate receiving [Request] object. When a “[object Object]” 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. + // + // [waiting for event]: https://playwright.dev/docs/events#waiting-for-event + ExpectRequest(urlOrPredicate interface{}, cb func() error, options ...PageExpectRequestOptions) (Request, error) + + // Performs action and waits for a [Request] to finish loading. If predicate is provided, it passes [Request] value + // into the `predicate` function and waits for `predicate(request)` to return a truthy value. Will throw an error if + // the page is closed before the [Page.OnRequestFinished] event is fired. + ExpectRequestFinished(cb func() error, options ...PageExpectRequestFinishedOptions) (Request, error) + + // Returns the matched response. See [waiting for event] for more details about + // events. + // + // urlOrPredicate: Request URL string, regex or predicate receiving [Response] object. When a “[object Object]” 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. + // + // [waiting for event]: https://playwright.dev/docs/events#waiting-for-event + ExpectResponse(urlOrPredicate interface{}, cb func() error, options ...PageExpectResponseOptions) (Response, error) + + // Returns when element specified by selector satisfies “[object Object]” 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 makes the code wait-for-selector-free. + // Wait for the “[object Object]” to satisfy “[object Object]” option (either appear/disappear from dom, or become + // visible/hidden). If at the moment of calling the method “[object Object]” already satisfies the condition, the + // method will return immediately. If the selector doesn't satisfy the condition for the “[object Object]” + // milliseconds, the function will throw. + // + // Deprecated: Use web assertions that assert visibility or a locator-based [Locator.WaitFor] instead. Read more about [locators]. + // + // selector: A selector to query for. + // + // [locators]: https://playwright.dev/docs/locators + WaitForSelector(selector string, options ...PageWaitForSelectorOptions) (ElementHandle, error) + + // Waits for the given “[object Object]” 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. + // + // Deprecated: Never wait for timeout in production. Tests that wait for time are inherently flaky. Use [Locator] actions and web assertions that wait automatically. + // + // timeout: A timeout to wait for + WaitForTimeout(timeout float64) + + // Waits for the main frame to navigate to the given URL. + // + // 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. + WaitForURL(url interface{}, options ...PageWaitForURLOptions) error + + // Performs action and waits for a new [WebSocket]. If predicate is provided, it passes [WebSocket] value into the + // `predicate` function and waits for `predicate(webSocket)` to return a truthy value. Will throw an error if the page + // is closed before the WebSocket event is fired. + ExpectWebSocket(cb func() error, options ...PageExpectWebSocketOptions) (WebSocket, error) + + // Performs action and waits for a new [Worker]. If predicate is provided, it passes [Worker] value into the + // `predicate` function and waits for `predicate(worker)` to return a truthy value. Will throw an error if the page is + // closed before the worker event is fired. + ExpectWorker(cb func() error, options ...PageExpectWorkerOptions) (Worker, error) + + // This method returns all of the dedicated + // [WebWorkers] associated with the page. + // **NOTE** This does not contain ServiceWorkers + // + // [WebWorkers]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API + Workers() []Worker + + // **NOTE** In most cases, you should use [Page.ExpectEvent]. + // Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function + // and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is closed before the + // `event` is fired. + // + // event: Event name, same one typically passed into `*.on(event)`. + WaitForEvent(event string, options ...PageWaitForEventOptions) (interface{}, error) +} + +// The [PageAssertions] class provides assertion methods that can be used to make assertions about the [Page] state in +// the tests. +type PageAssertions interface { + // Makes the assertion check for the opposite condition. For example, this code tests that the page URL doesn't + // contain `"error"`: + Not() PageAssertions + + // Ensures the page has the given title. + // + // titleOrRegExp: Expected title or RegExp. + ToHaveTitle(titleOrRegExp interface{}, options ...PageAssertionsToHaveTitleOptions) error + + // Ensures the page is navigated to the given URL. + // + // urlOrRegExp: Expected URL string or RegExp. + ToHaveURL(urlOrRegExp interface{}, options ...PageAssertionsToHaveURLOptions) error +} + +// Playwright gives you Web-First Assertions with convenience methods for creating assertions that will wait and retry +// until the expected condition is met. +// Consider the following example: +// Playwright will be re-testing the node with the selector `.status` until fetched Node has the `"Submitted"` text. +// It will be re-fetching the node and checking it over and over, until the condition is met or until the timeout is +// reached. You can pass this timeout as an option. +// By default, the timeout for assertions is set to 5 seconds. +type PlaywrightAssertions interface { + // Creates a [APIResponseAssertions] object for the given [APIResponse]. + // + // response: [APIResponse] object to use for assertions. + APIResponse(response APIResponse) APIResponseAssertions + + // Creates a [LocatorAssertions] object for the given [Locator]. + // + // locator: [Locator] object to use for assertions. + Locator(locator Locator) LocatorAssertions + + // Creates a [PageAssertions] object for the given [Page]. + // + // page: [Page] object to use for assertions. + Page(page Page) PageAssertions +} + +// Whenever the page sends a request for a network resource the following sequence of events are emitted by [Page]: +// - [Page.OnRequest] emitted when the request is issued by the page. +// - [Page.OnResponse] emitted when/if the response status and headers are received for the request. +// - [Page.OnRequestFinished] 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.OnRequestFailed] 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. +type Request interface { + // An object with all the request HTTP headers associated with this request. The header names are lower-cased. + AllHeaders() (map[string]string, error) + + // The method returns `null` unless this request has failed, as reported by `requestfailed` event. + Failure() error + + // Returns the [Frame] that initiated this request. + // + // # Details + // + // Note that in some cases the frame is not available, and this method will throw. + // - When request originates in the Service Worker. You can use `request.serviceWorker()` to check that. + // - When navigation request is issued before the corresponding frame is created. You can use + // [Request.IsNavigationRequest] to check that. + // Here is an example that handles all the cases: + Frame() Frame + + // An object with the request HTTP headers. The header names are lower-cased. Note that this method does not return + // security-related headers, including cookie-related ones. You can use [Request.AllHeaders] for complete list of + // headers that include `cookie` information. + Headers() map[string]string + + // An array with all the request HTTP headers associated with this request. Unlike [Request.AllHeaders], header names + // are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times. + HeadersArray() ([]NameValue, error) + + // Returns the value of the header matching the name. The name is case-insensitive. + // + // name: Name of the header. + HeaderValue(name string) (string, error) + + // Whether this request is driving frame's navigation. + // Some navigation requests are issued before the corresponding frame is created, and therefore do not have + // [Request.Frame] available. + IsNavigationRequest() bool + + // Request's method (GET, POST, etc.) + Method() string + + // Request's post body, if any. + PostData() (string, error) + + // Request's post body in a binary form, if any. + PostDataBuffer() ([]byte, error) + + // 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(v interface{}) error + + // 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()`. + RedirectedFrom() Request + + // New request issued by the browser if the server responded with redirect. + RedirectedTo() 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() (Response, error) + + // Returns resource size information for given request. + Sizes() (*RequestSizesResult, error) + + // 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]. + // + // [Resource Timing API]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming + Timing() *RequestTiming + + // URL of the request. + URL() string +} + +// [Response] class represents responses which are received by page. +type Response interface { + // An object with all the response HTTP headers associated with this response. + AllHeaders() (map[string]string, error) + + // Returns the buffer with response body. + Body() ([]byte, error) + + // Waits for this response to finish, returns always `null`. + Finished() error + + // Returns the [Frame] that initiated this response. + Frame() Frame + + // Indicates whether this Response was fulfilled by a Service Worker's Fetch Handler (i.e. via + // [FetchEvent.RespondWith]. + // + // [FetchEvent.RespondWith]: https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent/respondWith) + FromServiceWorker() bool + + // An object with the response HTTP headers. The header names are lower-cased. Note that this method does not return + // security-related headers, including cookie-related ones. You can use [Response.AllHeaders] for complete list of + // headers that include `cookie` information. + Headers() map[string]string + + // An array with all the request HTTP headers associated with this response. Unlike [Response.AllHeaders], header + // names are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times. + HeadersArray() ([]NameValue, error) + + // 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. + // + // name: Name of the header. + HeaderValue(name string) (string, error) + + // Returns all values of the headers matching the name, for example `set-cookie`. The name is case-insensitive. + // + // name: Name of the header. + HeaderValues(name string) ([]string, error) + + // Returns the JSON representation of response body. + // This method will throw if the response body is not parsable via `JSON.parse`. + JSON(v interface{}) error + + // Contains a boolean stating whether the response was successful (status in the range 200-299) or not. + Ok() bool + + // Returns the matching [Request] object. + Request() Request + + // Returns SSL and other security information. + SecurityDetails() (*ResponseSecurityDetailsResult, error) + + // Returns the IP address and port of the server. + ServerAddr() (*ResponseServerAddrResult, error) + + // Contains the status code of the response (e.g., 200 for a success). + Status() int + + // 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() (string, error) + + // Contains the URL of the response. + URL() string +} + +// Whenever a network route is set up with [Page.Route] or [BrowserContext.Route], the `Route` object allows to handle +// the route. +// Learn more about [networking]. +// +// [networking]: https://playwright.dev/docs/network +type Route interface { + // Aborts the route's request. + Abort(errorCode ...string) error + + // Sends route's request to the network with optional overrides. + // + // # Details + // + // The “[object Object]” option applies to both the routed request and any redirects it initiates. However, + // “[object Object]”, “[object Object]”, and “[object Object]” only apply to the original request and are not carried + // over to redirected requests. + // [Route.Continue] will immediately send the request to the network, other matching handlers won't be invoked. Use + // [Route.Fallback] If you want next matching handler in the chain to be invoked. + // **NOTE** The `Cookie` header cannot be overridden using this method. If a value is provided, it will be ignored, + // and the cookie will be loaded from the browser's cookie store. To set custom cookies, use + // [BrowserContext.AddCookies]. + Continue(options ...RouteContinueOptions) error + + // Continues route's request with optional overrides. The method is similar to [Route.Continue] with the difference + // that other matching handlers will be invoked before sending the request. + Fallback(options ...RouteFallbackOptions) error + + // Performs the request and fetches result without fulfilling it, so that the response could be modified and then + // fulfilled. + // + // # Details + // + // Note that “[object Object]” option will apply to the fetched request as well as any redirects initiated by it. If + // you want to only apply “[object Object]” to the original request, but not to redirects, look into [Route.Continue] + // instead. + Fetch(options ...RouteFetchOptions) (APIResponse, error) + + // Fulfills route's request with given response. + Fulfill(options ...RouteFulfillOptions) error + + // A request to be routed. + Request() Request +} + +// Selectors can be used to install custom selector engines. See [extensibility] for more +// information. +// +// [extensibility]: https://playwright.dev/docs/extensibility +type Selectors interface { + // Selectors must be registered before creating the page. + // + // 1. 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. + // 2. script: Script that evaluates to a selector engine instance. The script is evaluated in the page context. + Register(name string, script Script, options ...SelectorsRegisterOptions) error + + // Defines custom attribute name to be used in [Page.GetByTestId]. `data-testid` is used by default. + // + // attributeName: Test id attribute name. + SetTestIdAttribute(attributeName string) +} + +// 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. +// This class is limited to emulating tap gestures. For examples of other gestures simulated by manually dispatching +// touch events, see the [emulating legacy touch events] page. +// +// [emulating legacy touch events]: https://playwright.dev/docs/touch-events +type Touchscreen interface { + // Dispatches a `touchstart` and `touchend` event with a single touch at the position + // (“[object Object]”,“[object Object]”). + // **NOTE** [Page.Tap] the method will throw if “[object Object]” option of the browser context is false. + // + // 1. x: X coordinate relative to the main frame's viewport in CSS pixels. + // 2. y: Y coordinate relative to the main frame's viewport in CSS pixels. + Tap(x int, y int) error +} + +// API for collecting and saving Playwright traces. Playwright traces can be opened in +// [Trace Viewer] after Playwright script runs. +// Start recording a trace before performing actions. At the end, stop tracing and save it to a file. +// +// [Trace Viewer]: https://playwright.dev/docs/trace-viewer +type Tracing interface { + // Start tracing. + Start(options ...TracingStartOptions) error + + // Start a new trace chunk. If you'd like to record multiple traces on the same [BrowserContext], use [Tracing.Start] + // once, and then create multiple trace chunks with [Tracing.StartChunk] and [Tracing.StopChunk]. + StartChunk(options ...TracingStartChunkOptions) error + + // **NOTE** Use `test.step` instead when available. + // Creates a new group within the trace, assigning any subsequent API calls to this group, until [Tracing.GroupEnd] is + // called. Groups can be nested and will be visible in the trace viewer. + // + // name: Group name shown in the trace viewer. + Group(name string, options ...TracingGroupOptions) error + + // Closes the last group created by [Tracing.Group]. + GroupEnd() error + + // Stop tracing. + Stop(path ...string) error + + // Stop the trace chunk. See [Tracing.StartChunk] for more details about multiple trace chunks. + StopChunk(path ...string) error +} + +// When browser context is created with the `recordVideo` option, each page has a video object associated with it. +type Video interface { + // Deletes the video file. Will wait for the video to finish if necessary. + Delete() error + + // 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() (string, error) + + // 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. + // + // path: Path where the video should be saved. + SaveAs(path string) error +} + +// [WebError] class represents an unhandled exception thrown in the page. It is dispatched via the +// [BrowserContext.OnWebError] event. +type WebError interface { + // The page that produced this unhandled exception, if any. + Page() Page + + // Unhandled error that was thrown. + Error() error +} + +// The [WebSocket] class represents WebSocket connections within a page. It provides the ability to inspect and +// manipulate the data being transmitted and received. +// If you want to intercept or modify WebSocket frames, consider using [WebSocketRoute]. +type WebSocket interface { + // Fired when the websocket closes. + OnClose(fn func(WebSocket)) + + // Fired when the websocket receives a frame. + OnFrameReceived(fn func([]byte)) + + // Fired when the websocket sends a frame. + OnFrameSent(fn func([]byte)) + + // Fired when the websocket has an error. + OnSocketError(fn func(string)) + + // Indicates that the web socket has been closed. + IsClosed() bool + + // Contains the URL of the WebSocket. + URL() string + + // Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy + // value. Will throw an error if the webSocket is closed before the event is fired. Returns the event data value. + // + // event: Event name, same one would pass into `webSocket.on(event)`. + ExpectEvent(event string, cb func() error, options ...WebSocketExpectEventOptions) (interface{}, error) + + // **NOTE** In most cases, you should use [WebSocket.ExpectEvent]. + // Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function + // and waits for `predicate(event)` to return a truthy value. Will throw an error if the socket is closed before the + // `event` is fired. + // + // event: Event name, same one typically passed into `*.on(event)`. + WaitForEvent(event string, options ...WebSocketWaitForEventOptions) (interface{}, error) +} + +// Whenever a [`WebSocket`] route is set up with +// [Page.RouteWebSocket] or [BrowserContext.RouteWebSocket], the `WebSocketRoute` object allows to handle the +// WebSocket, like an actual server would do. +// **Mocking** +// By default, the routed WebSocket will not connect to the server. This way, you can mock entire communcation over +// the WebSocket. Here is an example that responds to a `"request"` with a `"response"`. +// Since we do not call [WebSocketRoute.ConnectToServer] inside the WebSocket route handler, Playwright assumes that +// WebSocket will be mocked, and opens the WebSocket inside the page automatically. +// Here is another example that handles JSON messages: +// **Intercepting** +// Alternatively, you may want to connect to the actual server, but intercept messages in-between and modify or block +// them. Calling [WebSocketRoute.ConnectToServer] returns a server-side `WebSocketRoute` instance that you can send +// messages to, or handle incoming messages. +// Below is an example that modifies some messages sent by the page to the server. Messages sent from the server to +// the page are left intact, relying on the default forwarding. +// After connecting to the server, all **messages are forwarded** between the page and the server by default. +// However, if you call [WebSocketRoute.OnMessage] on the original route, messages from the page to the server **will +// not be forwarded** anymore, but should instead be handled by the “[object Object]”. +// Similarly, calling [WebSocketRoute.OnMessage] on the server-side WebSocket will **stop forwarding messages** from +// the server to the page, and “[object Object]” should take care of them. +// The following example blocks some messages in both directions. Since it calls [WebSocketRoute.OnMessage] in both +// directions, there is no automatic forwarding at all. +// +// [`WebSocket`]: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket +type WebSocketRoute interface { + // Closes one side of the WebSocket connection. + Close(options ...WebSocketRouteCloseOptions) + + // By default, routed WebSocket does not connect to the server, so you can mock entire WebSocket communication. This + // method connects to the actual WebSocket server, and returns the server-side [WebSocketRoute] instance, giving the + // ability to send and receive messages from the server. + // Once connected to the server: + // - Messages received from the server will be **automatically forwarded** to the WebSocket in the page, unless + // [WebSocketRoute.OnMessage] is called on the server-side `WebSocketRoute`. + // - Messages sent by the [`WebSocket.send()`] call + // in the page will be **automatically forwarded** to the server, unless [WebSocketRoute.OnMessage] is called on + // the original `WebSocketRoute`. + // See examples at the top for more details. + // + // [`WebSocket.send()`]: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send + ConnectToServer() (WebSocketRoute, error) + + // Allows to handle [`WebSocket.close`]. + // By default, closing one side of the connection, either in the page or on the server, will close the other side. + // However, when [WebSocketRoute.OnClose] handler is set up, the default forwarding of closure is disabled, and + // handler should take care of it. + // + // handler: Function that will handle WebSocket closure. Received an optional + // [close code](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#code) and an optional + // [close reason](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#reason). + // + // [`WebSocket.close`]: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close + OnClose(handler func(*int, *string)) + + // This method allows to handle messages that are sent by the WebSocket, either from the page or from the server. + // When called on the original WebSocket route, this method handles messages sent from the page. You can handle this + // messages by responding to them with [WebSocketRoute.Send], forwarding them to the server-side connection returned + // by [WebSocketRoute.ConnectToServer] or do something else. + // Once this method is called, messages are not automatically forwarded to the server or to the page - you should do + // that manually by calling [WebSocketRoute.Send]. See examples at the top for more details. + // Calling this method again will override the handler with a new one. + // + // handler: Function that will handle messages. + OnMessage(handler func(interface{})) + + // Sends a message to the WebSocket. When called on the original WebSocket, sends the message to the page. When called + // on the result of [WebSocketRoute.ConnectToServer], sends the message to the server. See examples at the top for + // more details. + // + // message: Message to send. + Send(message interface{}) + + // URL of the WebSocket created in the page. + URL() string +} + +// The Worker class represents a [WebWorker]. +// `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. +// +// [WebWorker]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API +type Worker interface { + // Emitted when this dedicated [WebWorker] is + // terminated. + // + // [WebWorker]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API + OnClose(fn func(Worker)) + + // Returns the return value of “[object Object]”. + // If the function passed to the [Worker.Evaluate] returns a [Promise], then [Worker.Evaluate] would wait for the + // promise to resolve and return its value. + // If the function passed to the [Worker.Evaluate] returns a non-[Serializable] value, then [Worker.Evaluate] returns + // `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`: + // `-0`, `NaN`, `Infinity`, `-Infinity`. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + Evaluate(expression string, arg ...interface{}) (interface{}, error) + + // Returns the return value of “[object Object]” as a [JSHandle]. + // The only difference between [Worker.Evaluate] and [Worker.EvaluateHandle] is that [Worker.EvaluateHandle] returns + // [JSHandle]. + // If the function passed to the [Worker.EvaluateHandle] returns a [Promise], then [Worker.EvaluateHandle] would wait + // for the promise to resolve and return its value. + // + // 1. expression: JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the + // function is automatically invoked. + // 2. arg: Optional argument to pass to “[object Object]”. + EvaluateHandle(expression string, arg ...interface{}) (JSHandle, error) + + URL() string +} |
