diff --git a/dotnet/versioned_docs/version-stable/api/class-apirequestcontext.mdx b/dotnet/versioned_docs/version-stable/api/class-apirequestcontext.mdx index 6b05b48d15..c796f0c33d 100644 --- a/dotnet/versioned_docs/version-stable/api/class-apirequestcontext.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-apirequestcontext.mdx @@ -9,13 +9,17 @@ import HTMLCard from '@site/src/components/HTMLCard'; 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.APIRequest](/api/class-browsercontext.mdx#browser-context-request) or [Page.APIRequest](/api/class-page.mdx#page-request). It is also possible to create a new APIRequestContext instance manually by calling [ApiRequest.NewContextAsync()](/api/class-apirequest.mdx#api-request-new-context). +Each Playwright browser context has an associated [APIRequestContext], accessible via [BrowserContext.APIRequest](/api/class-browsercontext.mdx#browser-context-request) or [Page.APIRequest](/api/class-page.mdx#page-request) (these return the + +**same instance** — `page.request` is a shortcut for `page.context().request`). You can also create a standalone, isolated instance with [ApiRequest.NewContextAsync()](/api/class-apirequest.mdx#api-request-new-context). **Cookie management** -[APIRequestContext] returned by [BrowserContext.APIRequest](/api/class-browsercontext.mdx#browser-context-request) and [Page.APIRequest](/api/class-page.mdx#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. +The [APIRequestContext] returned by [BrowserContext.APIRequest](/api/class-browsercontext.mdx#browser-context-request) and + +[Page.APIRequest](/api/class-page.mdx#page-request) uses the same cookie jar as its [BrowserContext]: -If you want API requests to not interfere with the browser cookies you should create a new [APIRequestContext] by calling [ApiRequest.NewContextAsync()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. +If you want API requests that do **not** share cookies with the browser, create an isolated context via [ApiRequest.NewContextAsync()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. --- @@ -565,6 +569,23 @@ await ApiRequestContext.StorageStateAsync(options); **Returns** - [string]# +--- + +## Properties + +### Tracing {#api-request-context-tracing} + +Added in: v1.60apiRequestContext.Tracing + +**Usage** + +```csharp +ApiRequestContext.Tracing +``` + +**Type** +- [Tracing] + [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" diff --git a/dotnet/versioned_docs/version-stable/api/class-browser.mdx b/dotnet/versioned_docs/version-stable/api/class-browser.mdx index 1950342de2..3f3df12d13 100644 --- a/dotnet/versioned_docs/version-stable/api/class-browser.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-browser.mdx @@ -657,6 +657,23 @@ Browser.Version ## Events +### event Context {#browser-event-context} + +Added in: v1.60browser.event Context + +Emitted when a new browser context is created. + +**Usage** + +```csharp +Browser.Context += async (_, browserContext) => {}; +``` + +**Event data** +- [BrowserContext] + +--- + ### event Disconnected {#browser-event-disconnected} Added before v1.9browser.event Disconnected diff --git a/dotnet/versioned_docs/version-stable/api/class-browsercontext.mdx b/dotnet/versioned_docs/version-stable/api/class-browsercontext.mdx index e59d575abb..fbfa060530 100644 --- a/dotnet/versioned_docs/version-stable/api/class-browsercontext.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-browsercontext.mdx @@ -305,15 +305,6 @@ await page.GetByRole(AriaRole.Button).ClickAsync(); - `callback` [Action]<BindingSource, T, [TResult]># Callback function that will be called in the Playwright's context. -- `options` `BrowserContextExposeBindingOptions?` *(optional)* - - `Handle` [bool]? *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Disposable]# @@ -1147,6 +1138,74 @@ When no [Page.Dialog](/api/class-page.mdx#page-event-dialog) or [BrowserContext. --- +### event Download {#browser-context-event-download} + +Added in: v1.60browserContext.event Download + +Emitted when attachment download started in any page belonging to this context. User can access basic file operations on downloaded content via the passed [Download] instance. See also [Page.Download](/api/class-page.mdx#page-event-download) to receive events about a specific page. + +**Usage** + +```csharp +BrowserContext.Download += async (_, download) => {}; +``` + +**Event data** +- [Download] + +--- + +### event FrameAttached {#browser-context-event-frame-attached} + +Added in: v1.60browserContext.event FrameAttached + +Emitted when a frame is attached in any page belonging to this context. See also [Page.FrameAttached](/api/class-page.mdx#page-event-frame-attached) to receive events about a specific page. + +**Usage** + +```csharp +BrowserContext.FrameAttached += async (_, frame) => {}; +``` + +**Event data** +- [Frame] + +--- + +### event FrameDetached {#browser-context-event-frame-detached} + +Added in: v1.60browserContext.event FrameDetached + +Emitted when a frame is detached in any page belonging to this context. See also [Page.FrameDetached](/api/class-page.mdx#page-event-frame-detached) to receive events about a specific page. + +**Usage** + +```csharp +BrowserContext.FrameDetached += async (_, frame) => {}; +``` + +**Event data** +- [Frame] + +--- + +### event FrameNavigated {#browser-context-event-frame-navigated} + +Added in: v1.60browserContext.event FrameNavigated + +Emitted when a frame is navigated to a new url in any page belonging to this context. See also [Page.FrameNavigated](/api/class-page.mdx#page-event-frame-navigated) to receive events about navigations in a specific page. + +**Usage** + +```csharp +BrowserContext.FrameNavigated += async (_, frame) => {}; +``` + +**Event data** +- [Frame] + +--- + ### event Page {#browser-context-event-page} Added before v1.9browserContext.event Page @@ -1178,6 +1237,40 @@ BrowserContext.Page += async (_, page) => {}; --- +### event PageClose {#browser-context-event-page-close} + +Added in: v1.60browserContext.event PageClose + +Emitted when a page in this context is closed. See also [Page.Close](/api/class-page.mdx#page-event-close) to receive events about a specific page. + +**Usage** + +```csharp +BrowserContext.PageClose += async (_, page) => {}; +``` + +**Event data** +- [Page] + +--- + +### event PageLoad {#browser-context-event-page-load} + +Added in: v1.60browserContext.event PageLoad + +Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched in any page belonging to this context. See also [Page.Load](/api/class-page.mdx#page-event-load) to receive events about a specific page. + +**Usage** + +```csharp +BrowserContext.PageLoad += async (_, page) => {}; +``` + +**Event data** +- [Page] + +--- + ### event Request {#browser-context-event-request} Added in: v1.12browserContext.event Request diff --git a/dotnet/versioned_docs/version-stable/api/class-browsertype.mdx b/dotnet/versioned_docs/version-stable/api/class-browsertype.mdx index c17c9ca119..de74132e1d 100644 --- a/dotnet/versioned_docs/version-stable/api/class-browsertype.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-browsertype.mdx @@ -119,6 +119,9 @@ var page = defaultContext.Pages[0]; - `IsLocal` [bool]? *(optional)* Added in: v1.58# Tells Playwright that it runs on the same host as the CDP server. It will enable certain optimizations that rely upon the file system being the same between Playwright and the Browser. + - `NoDefaults` [bool]? *(optional)* Added in: v1.60# + + When true, Playwright will not apply its default overrides to the existing default browser context. Specifically, [AcceptDownloads](/api/class-browser.mdx#browser-new-context-option-accept-downloads) is left at the browser's setting, focus emulation is not enabled, and media emulation options (such as [ColorScheme](/api/class-browser.mdx#browser-new-context-option-color-scheme), [ReducedMotion](/api/class-browser.mdx#browser-new-context-option-reduced-motion), [ForcedColors](/api/class-browser.mdx#browser-new-context-option-forced-colors), and [Contrast](/api/class-browser.mdx#browser-new-context-option-contrast)) are not applied. Useful when attaching to a user's daily-driver browser where these overrides would interfere with existing browser state. New contexts created via [Browser.NewContextAsync()](/api/class-browser.mdx#browser-new-context) are not affected. Defaults to `false`. - `SlowMo` [float]? *(optional)* Added in: v1.11# Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to 0. diff --git a/dotnet/versioned_docs/version-stable/api/class-frame.mdx b/dotnet/versioned_docs/version-stable/api/class-frame.mdx index 25c39b3e46..e4e9da284b 100644 --- a/dotnet/versioned_docs/version-stable/api/class-frame.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-frame.mdx @@ -494,6 +494,11 @@ await page An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `Description|DescriptionRegex` [string]? | [Regex]? *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [Exact](/api/class-frame.mdx#frame-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `Disabled` [bool]? *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -505,7 +510,7 @@ await page - `Exact` [bool]? *(optional)* Added in: v1.28# - Whether [Name|NameRegex](/api/class-frame.mdx#frame-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [Name|NameRegex](/api/class-frame.mdx#frame-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [Name|NameRegex](/api/class-frame.mdx#frame-get-by-role-option-name) and [Description|DescriptionRegex](/api/class-frame.mdx#frame-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `Expanded` [bool]? *(optional)*# An attribute that is usually set by `aria-expanded`. diff --git a/dotnet/versioned_docs/version-stable/api/class-framelocator.mdx b/dotnet/versioned_docs/version-stable/api/class-framelocator.mdx index 28a61d113e..7ee279cbb3 100644 --- a/dotnet/versioned_docs/version-stable/api/class-framelocator.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-framelocator.mdx @@ -211,6 +211,11 @@ await page An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `Description|DescriptionRegex` [string]? | [Regex]? *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [Exact](/api/class-framelocator.mdx#frame-locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `Disabled` [bool]? *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -222,7 +227,7 @@ await page - `Exact` [bool]? *(optional)* Added in: v1.28# - Whether [Name|NameRegex](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [Name|NameRegex](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [Name|NameRegex](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) and [Description|DescriptionRegex](/api/class-framelocator.mdx#frame-locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `Expanded` [bool]? *(optional)*# An attribute that is usually set by `aria-expanded`. diff --git a/dotnet/versioned_docs/version-stable/api/class-locator.mdx b/dotnet/versioned_docs/version-stable/api/class-locator.mdx index f6ba02c476..5e7f72c91a 100644 --- a/dotnet/versioned_docs/version-stable/api/class-locator.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-locator.mdx @@ -125,6 +125,9 @@ await page.GetByRole(AriaRole.Link).AriaSnapshotAsync(); **Arguments** - `options` `LocatorAriaSnapshotOptions?` *(optional)* + - `Boxes` [bool]? *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `Depth` [int]? *(optional)* Added in: v1.59# When specified, limits the depth of the snapshot. @@ -710,6 +713,60 @@ This method drags the locator to another target locator or target position. It w --- +### DropAsync {#locator-drop} + +Added in: v1.60locator.DropAsync + +Simulate an external drag-and-drop of files or clipboard-like data onto this locator. + +**Usage** + +Drop a file buffer onto an upload area: + +Drop plain text and a URL together: + +**Arguments** +- `payload` Payload# + - `Files` [string]? | [IEnumerable]?<[string]> | Files? | [IEnumerable]?<Files> *(optional)* + - `Name` [string] + + File name + - `MimeType` [string] + + File type + - `Buffer` [byte][] + + File content + + + - `Data` [IDictionary]?<[string], [string]> *(optional)* + + + Data to drop onto the target. Provide `files` (file paths or in-memory buffers), `data` (a mime-type → string map for clipboard-like content such as `text/plain`, `text/html`, `text/uri-list`), or both. +- `options` `LocatorDropOptions?` *(optional)* + - `Position` Position? *(optional)*# + - `X` [float] + + + - `Y` [float] + + + A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of the element. + - `Timeout` [float]? *(optional)*# + + Maximum time in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout. The default value can be changed by using the [BrowserContext.SetDefaultTimeout()](/api/class-browsercontext.mdx#browser-context-set-default-timeout) or [Page.SetDefaultTimeout()](/api/class-page.mdx#page-set-default-timeout) methods. + +**Returns** +- [void]# + +**Details** + +Dispatches the native `dragenter`, `dragover`, and `drop` events at the center of the target element with a synthetic [DataTransfer] carrying the provided files and/or data entries. Works cross-browser by constructing the [DataTransfer] in the page context. + +If the target element's `dragover` listener does not call `preventDefault()`, the target is considered to have rejected the drop: Playwright dispatches `dragleave` and this method throws. + +--- + ### EvaluateAsync {#locator-evaluate} Added in: v1.14locator.EvaluateAsync @@ -1162,6 +1219,11 @@ await page An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `Description|DescriptionRegex` [string]? | [Regex]? *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [Exact](/api/class-locator.mdx#locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `Disabled` [bool]? *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1173,7 +1235,7 @@ await page - `Exact` [bool]? *(optional)* Added in: v1.28# - Whether [Name|NameRegex](/api/class-locator.mdx#locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [Name|NameRegex](/api/class-locator.mdx#locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [Name|NameRegex](/api/class-locator.mdx#locator-get-by-role-option-name) and [Description|DescriptionRegex](/api/class-locator.mdx#locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `Expanded` [bool]? *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1340,6 +1402,23 @@ await Expect(Page.GetByTitle("Issues count")).toHaveText("25 issues"); --- +### HideHighlightAsync {#locator-hide-highlight} + +Added in: v1.60locator.HideHighlightAsync + +Hides the element highlight previously added by [Locator.HighlightAsync()](/api/class-locator.mdx#locator-highlight). + +**Usage** + +```csharp +await Locator.HideHighlightAsync(); +``` + +**Returns** +- [void]# + +--- + ### HighlightAsync {#locator-highlight} Added in: v1.20locator.HighlightAsync @@ -1349,11 +1428,17 @@ Highlight the corresponding element(s) on the screen. Useful for debugging, don' **Usage** ```csharp -await Locator.HighlightAsync(); +await Locator.HighlightAsync(options); ``` +**Arguments** +- `options` `LocatorHighlightOptions?` *(optional)* + - `Style` [string]? *(optional)* Added in: v1.60# + + Additional inline CSS applied to the highlight overlay, e.g. `"outline: 2px dashed red"`. + **Returns** -- [void]# +- [Disposable]# --- diff --git a/dotnet/versioned_docs/version-stable/api/class-locatorassertions.mdx b/dotnet/versioned_docs/version-stable/api/class-locatorassertions.mdx index 3e18d16736..a1d9edb7c5 100644 --- a/dotnet/versioned_docs/version-stable/api/class-locatorassertions.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-locatorassertions.mdx @@ -630,6 +630,9 @@ await Expect(locator).ToHaveCSSAsync("display", "flex"); CSS property value. - `options` `LocatorAssertionsToHaveCSSOptions?` *(optional)* + - `Pseudo` `enum PseudoElement { Before, After }?` *(optional)* Added in: v1.60# + + Pseudo-element to read computed styles from. - `Timeout` [float]? *(optional)* Added in: v1.18# Time to retry the assertion for in milliseconds. Defaults to `5000`. diff --git a/dotnet/versioned_docs/version-stable/api/class-page.mdx b/dotnet/versioned_docs/version-stable/api/class-page.mdx index 626cb7a5c7..6ab853b2e6 100644 --- a/dotnet/versioned_docs/version-stable/api/class-page.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-page.mdx @@ -258,6 +258,9 @@ await Page.AriaSnapshotAsync(options); **Arguments** - `options` `PageAriaSnapshotOptions?` *(optional)* + - `Boxes` [bool]? *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `Depth` [int]? *(optional)*# When specified, limits the depth of the snapshot. @@ -702,15 +705,6 @@ class PageExamples - `callback` [Action]<BindingSource, T, [TResult]># Callback function that will be called in the Playwright's context. -- `options` `PageExposeBindingOptions?` *(optional)* - - `Handle` [bool]? *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Disposable]# @@ -1026,6 +1020,11 @@ await page An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `Description|DescriptionRegex` [string]? | [Regex]? *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [Exact](/api/class-page.mdx#page-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `Disabled` [bool]? *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1037,7 +1036,7 @@ await page - `Exact` [bool]? *(optional)* Added in: v1.28# - Whether [Name|NameRegex](/api/class-page.mdx#page-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [Name|NameRegex](/api/class-page.mdx#page-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [Name|NameRegex](/api/class-page.mdx#page-get-by-role-option-name) and [Description|DescriptionRegex](/api/class-page.mdx#page-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `Expanded` [bool]? *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1322,6 +1321,23 @@ await Page.GotoAsync(url, options); --- +### HideHighlightAsync {#page-hide-highlight} + +Added in: v1.60page.HideHighlightAsync + +Hide all locator highlight overlays previously added by [Locator.HighlightAsync()](/api/class-locator.mdx#locator-highlight) on this page. + +**Usage** + +```csharp +await Page.HideHighlightAsync(); +``` + +**Returns** +- [void]# + +--- + ### IsClosed {#page-is-closed} Added before v1.9page.IsClosed diff --git a/dotnet/versioned_docs/version-stable/api/class-pageassertions.mdx b/dotnet/versioned_docs/version-stable/api/class-pageassertions.mdx index 8f0bb0ee0e..26ba9efb51 100644 --- a/dotnet/versioned_docs/version-stable/api/class-pageassertions.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-pageassertions.mdx @@ -88,6 +88,34 @@ await Expect(Page).ToHaveURLAsync(new Regex(".*checkout")); --- +### ToMatchAriaSnapshotAsync {#page-assertions-to-match-aria-snapshot} + +Added in: v1.60pageAssertions.ToMatchAriaSnapshotAsync + +Asserts that the page body matches the given [accessibility snapshot](../aria-snapshots.mdx). + +**Usage** + +```csharp +await page.GotoAsync("https://demo.playwright.dev/todomvc/"); +await Expect(page).ToMatchAriaSnapshotAsync(@" + - heading ""todos"" + - textbox ""What needs to be done?"" +"); +``` + +**Arguments** +- `expected` [string]# +- `options` `PageAssertionsToMatchAriaSnapshotOptions?` *(optional)* + - `Timeout` [float]? *(optional)*# + + Time to retry the assertion for in milliseconds. Defaults to `5000`. + +**Returns** +- [void]# + +--- + ## Properties ### Not {#page-assertions-not} diff --git a/dotnet/versioned_docs/version-stable/api/class-screencast.mdx b/dotnet/versioned_docs/version-stable/api/class-screencast.mdx index cf9bdbaa1d..f4b172b1d4 100644 --- a/dotnet/versioned_docs/version-stable/api/class-screencast.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-screencast.mdx @@ -163,8 +163,14 @@ Starts the screencast. When [Path](/api/class-screencast.mdx#screencast-start-op - `Data` [byte][] JPEG-encoded frame data. + - `ViewportWidth` [int] + + Width of the page viewport at the time the frame was captured. + - `ViewportHeight` [int] + + Height of the page viewport at the time the frame was captured. - Callback that receives JPEG-encoded frame data. + Callback that receives JPEG-encoded frame data along with the page viewport size at the time of capture. - `Path` [string]? *(optional)*# Path where the video should be saved when the screencast is stopped. When provided, video recording is started. diff --git a/dotnet/versioned_docs/version-stable/api/class-tracing.mdx b/dotnet/versioned_docs/version-stable/api/class-tracing.mdx index 13e2f163a3..ee6eba9625 100644 --- a/dotnet/versioned_docs/version-stable/api/class-tracing.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-tracing.mdx @@ -212,6 +212,43 @@ await context.Tracing.StopChunkAsync(new() --- +### StartHarAsync {#tracing-start-har} + +Added in: v1.60tracing.StartHarAsync + +Start recording a HAR (HTTP Archive) of network activity in this context. The HAR file is written to disk when [Tracing.StopHarAsync()](/api/class-tracing.mdx#tracing-stop-har) is called, or when the returned [Disposable] is disposed. + +Only one HAR recording can be active at a time per [BrowserContext]. + +**Usage** + +```csharp +await context.Tracing.StartHarAsync("trace.har"); +var page = await context.NewPageAsync(); +await page.GotoAsync("https://playwright.dev"); +await context.Tracing.StopHarAsync(); +``` + +**Arguments** +- `path` [string]# + + Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, the HAR is saved as a zip archive with response bodies attached as separate files. +- `options` `TracingStartHarOptions?` *(optional)* + - `Content` `enum HarContentPolicy { Omit, Embed, Attach }?` *(optional)*# + + Optional setting to control resource content management. If `omit` is specified, content is not persisted. If `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output files and to `embed` for all other file extensions. + - `Mode` `enum HarMode { Full, Minimal }?` *(optional)*# + + When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page, cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`. + - `UrlFilter|UrlFilterRegex` [string]? | [Regex]? *(optional)*# + + A glob or regex pattern to filter requests that are stored in the HAR. Defaults to none. + +**Returns** +- [Disposable]# + +--- + ### StopAsync {#tracing-stop} Added in: v1.12tracing.StopAsync @@ -256,6 +293,23 @@ await Tracing.StopChunkAsync(options); **Returns** - [void]# +--- + +### StopHarAsync {#tracing-stop-har} + +Added in: v1.60tracing.StopHarAsync + +Stop HAR recording and save the HAR file to the path given to [Tracing.StartHarAsync()](/api/class-tracing.mdx#tracing-start-har). + +**Usage** + +```csharp +await Tracing.StopHarAsync(); +``` + +**Returns** +- [void]# + [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" diff --git a/dotnet/versioned_docs/version-stable/api/class-weberror.mdx b/dotnet/versioned_docs/version-stable/api/class-weberror.mdx index 96006a30d2..65ce5c9374 100644 --- a/dotnet/versioned_docs/version-stable/api/class-weberror.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-weberror.mdx @@ -39,6 +39,30 @@ WebError.Error --- +### Location {#web-error-location} + +Added in: v1.60webError.Location + +**Usage** + +```csharp +WebError.Location +``` + +**Returns** +- Location# + - `url` [string] + + URL of the resource. + - `line` [int] + + 0-based line number in the resource. + - `column` [int] + + 0-based column number in the resource. + +--- + ### Page {#web-error-page} Added in: v1.38webError.Page diff --git a/dotnet/versioned_docs/version-stable/api/class-websocketroute.mdx b/dotnet/versioned_docs/version-stable/api/class-websocketroute.mdx index e01b277db7..95663db1a0 100644 --- a/dotnet/versioned_docs/version-stable/api/class-websocketroute.mdx +++ b/dotnet/versioned_docs/version-stable/api/class-websocketroute.mdx @@ -181,6 +181,30 @@ WebSocketRoute.OnMessage(handler); --- +### Protocols {#web-socket-route-protocols} + +Added in: v1.60webSocketRoute.Protocols + +The list of WebSocket subprotocols requested by the page, as passed via the second argument to the [`WebSocket` constructor](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket). Corresponds to the `Sec-WebSocket-Protocol` request header. + +Returns an empty array if no protocols were specified. + +**Usage** + +```csharp +await page.RouteWebSocketAsync("wss://example.com/ws", ws => { + if (ws.Protocols.Contains("chat.v2")) + ws.OnMessage(frame => ws.Send($"v2:{frame.Text}")); + else + ws.CloseAsync(new() { Code = 1002, Reason = "Unsupported protocol" }); +}); +``` + +**Returns** +- [IReadOnlyList]<[string]># + +--- + ### Send {#web-socket-route-send} Added in: v1.48webSocketRoute.Send diff --git a/dotnet/versioned_docs/version-stable/aria-snapshots.mdx b/dotnet/versioned_docs/version-stable/aria-snapshots.mdx index 0fd251dcdd..6cadb300dd 100644 --- a/dotnet/versioned_docs/version-stable/aria-snapshots.mdx +++ b/dotnet/versioned_docs/version-stable/aria-snapshots.mdx @@ -14,7 +14,7 @@ With Playwright's Snapshot testing you can assert the accessibility tree of a pa ```csharp await page.GotoAsync("https://playwright.dev/"); -await Expect(page.Locator("banner")).ToMatchAriaSnapshotAsync(@" +await Expect(page).ToMatchAriaSnapshotAsync(@" - banner: - heading ""Playwright enables reliable end-to-end testing for modern web apps."" [level=1] - link ""Get started"": @@ -90,7 +90,7 @@ These values are derived from ARIA attributes or calculated based on HTML semant ## Snapshot matching -The [Expect(Locator).ToMatchAriaSnapshotAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the locator scope with a predefined aria snapshot template, helping validate the page's state against testing requirements. +The [Expect(Page).ToMatchAriaSnapshotAsync()](/api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the page with a predefined aria snapshot template, helping validate the page's state against testing requirements. You can also use [Expect(Locator).ToMatchAriaSnapshotAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) to match a specific part of the page. For the following DOM: @@ -101,7 +101,7 @@ For the following DOM: You can match it using the following snapshot template: ```csharp -await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@" +await Expect(page).ToMatchAriaSnapshotAsync(@" - heading ""title"" "); ``` @@ -225,14 +225,14 @@ If you're using Playwright's [Code Generator](./codegen.mdx), generating aria sn - **"Assert snapshot" Action**: In the code generator, you can use the "Assert snapshot" action to automatically create a snapshot assertion for the selected elements. This is a quick way to capture the aria snapshot as part of your recorded test flow. - **"Aria snapshot" Tab**: The "Aria snapshot" tab within the code generator interface visually represents the aria snapshot for a selected locator, letting you explore, inspect, and verify element roles, attributes, and accessible names to aid snapshot creation and review. -### Using the `Locator.ariaSnapshot` method +### Using [Page.AriaSnapshotAsync()](/api/class-page.mdx#page-aria-snapshot) and [Locator.AriaSnapshotAsync()](/api/class-locator.mdx#locator-aria-snapshot) -The [Locator.AriaSnapshotAsync()](/api/class-locator.mdx#locator-aria-snapshot) method allows you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. +Methods [Page.AriaSnapshotAsync()](/api/class-page.mdx#page-aria-snapshot) and [Locator.AriaSnapshotAsync()](/api/class-locator.mdx#locator-aria-snapshot) allow you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. **Example**: ```csharp -var snapshot = await page.Locator("body").AriaSnapshotAsync(); +var snapshot = await page.AriaSnapshotAsync(); Console.WriteLine(snapshot); ``` diff --git a/dotnet/versioned_docs/version-stable/getting-started-cli.mdx b/dotnet/versioned_docs/version-stable/getting-started-cli.mdx index 6b0e9bc098..5fa86be55a 100644 --- a/dotnet/versioned_docs/version-stable/getting-started-cli.mdx +++ b/dotnet/versioned_docs/version-stable/getting-started-cli.mdx @@ -166,7 +166,8 @@ playwright-cli tab-close [index] # close a tab ### Network ```bash -playwright-cli network # list network requests since page load +playwright-cli requests # list network requests since page load +playwright-cli request # show full details of a single request playwright-cli route [opts] # mock network requests playwright-cli route-list # list active routes playwright-cli unroute [pattern] # remove routes @@ -281,7 +282,7 @@ The CLI also loads `.playwright/cli.config.json` automatically if present. The c Connect to your existing browser tabs instead of launching a new browser: ```bash -playwright-cli open --extension +playwright-cli attach --extension ``` This requires the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md) to be installed. diff --git a/dotnet/versioned_docs/version-stable/getting-started-mcp.mdx b/dotnet/versioned_docs/version-stable/getting-started-mcp.mdx index defce18627..1eb6afbde3 100644 --- a/dotnet/versioned_docs/version-stable/getting-started-mcp.mdx +++ b/dotnet/versioned_docs/version-stable/getting-started-mcp.mdx @@ -105,7 +105,7 @@ Playwright MCP provides tools for all common browser interactions: ### Running Playwright code -For complex interactions that go beyond individual tool calls, use the `browser_run_code` tool to execute Playwright scripts directly: +For complex interactions that go beyond individual tool calls, use the `browser_run_code_unsafe` tool to execute Playwright scripts directly. This tool runs arbitrary JavaScript in the Playwright server process and is RCE-equivalent — only enable it for trusted MCP clients: ```txt Run this Playwright code to verify the todo count: @@ -172,7 +172,7 @@ Supported values: `chrome`, `firefox`, `webkit`, `msedge`. ### User profile Playwright MCP supports three profile modes: -- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-profile` in your platform's cache directory. Override with `--user-data-dir`. +- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-{workspace-hash}` in your platform's cache directory, so different projects get separate profiles automatically. Override with `--user-data-dir`. - **Isolated**: Each session starts fresh. Pass `--isolated` to enable. You can load initial state with `--storage-state`. - **Browser extension**: Connect to your existing browser tabs with the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md). Pass `--extension` to enable. diff --git a/dotnet/versioned_docs/version-stable/intro.mdx b/dotnet/versioned_docs/version-stable/intro.mdx index a920a8eb7e..f16deaff8c 100644 --- a/dotnet/versioned_docs/version-stable/intro.mdx +++ b/dotnet/versioned_docs/version-stable/intro.mdx @@ -275,7 +275,7 @@ See our doc on [Running and Debugging Tests](./running-tests.mdx) to learn more ## System requirements - Playwright is distributed as a .NET Standard 2.0 library. We recommend .NET 8. - Windows 11+, Windows Server 2019+ or Windows Subsystem for Linux (WSL). -- macOS 14 Ventura, or later. +- macOS 14 Sonoma, or later. - Debian 12, Debian 13, Ubuntu 22.04, Ubuntu 24.04, on x86-64 and arm64 architecture. ## What's next diff --git a/dotnet/versioned_docs/version-stable/test-assertions.mdx b/dotnet/versioned_docs/version-stable/test-assertions.mdx index 00f16f1153..3f1ba60730 100644 --- a/dotnet/versioned_docs/version-stable/test-assertions.mdx +++ b/dotnet/versioned_docs/version-stable/test-assertions.mdx @@ -39,6 +39,25 @@ import HTMLCard from '@site/src/components/HTMLCard'; | [Expect(Page).ToHaveURLAsync()](/api/class-pageassertions.mdx#page-assertions-to-have-url) | Page has a URL | | [Expect(Response).ToBeOKAsync()](/api/class-apiresponseassertions.mdx#api-response-assertions-to-be-ok) | Response has an OK status | +## Custom Expect Message + +You can specify a custom expect message as a second argument to the `expect` function, for example: + +```csharp +await Expect(Page.GetByText("Name"), "should be logged in").ToBeVisibleAsync(); +``` + +When expect fails, the error would look like this: + +```bash +Microsoft.Playwright.PlaywrightException : should be logged in + +Locator expected to be visible +Call log: +- Expect "ToBeVisibleAsync" with timeout 5000ms +- waiting for GetByText("Name") +``` + ## Setting a custom timeout You can specify a custom timeout for assertions either globally or per assertion. The default timeout is 5 seconds. diff --git a/java/versioned_docs/version-stable/api/class-apirequestcontext.mdx b/java/versioned_docs/version-stable/api/class-apirequestcontext.mdx index 3cfc10c8fd..412105b015 100644 --- a/java/versioned_docs/version-stable/api/class-apirequestcontext.mdx +++ b/java/versioned_docs/version-stable/api/class-apirequestcontext.mdx @@ -9,13 +9,17 @@ import HTMLCard from '@site/src/components/HTMLCard'; 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()](/api/class-browsercontext.mdx#browser-context-request) or [Page.request()](/api/class-page.mdx#page-request). It is also possible to create a new APIRequestContext instance manually by calling [APIRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). +Each Playwright browser context has an associated [APIRequestContext], accessible via [BrowserContext.request()](/api/class-browsercontext.mdx#browser-context-request) or [Page.request()](/api/class-page.mdx#page-request) (these return the + +**same instance** — `page.request` is a shortcut for `page.context().request`). You can also create a standalone, isolated instance with [APIRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). **Cookie management** -[APIRequestContext] returned by [BrowserContext.request()](/api/class-browsercontext.mdx#browser-context-request) and [Page.request()](/api/class-page.mdx#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. +The [APIRequestContext] returned by [BrowserContext.request()](/api/class-browsercontext.mdx#browser-context-request) and + +[Page.request()](/api/class-page.mdx#page-request) uses the same cookie jar as its [BrowserContext]: -If you want API requests to not interfere with the browser cookies you should create a new [APIRequestContext] by calling [APIRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. +If you want API requests that do **not** share cookies with the browser, create an isolated context via [APIRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. --- @@ -306,6 +310,23 @@ APIRequestContext.storageState(options); **Returns** - [String]# +--- + +## Properties + +### tracing() {#api-request-context-tracing} + +Added in: v1.60apiRequestContext.tracing() + +**Usage** + +```java +APIRequestContext.tracing() +``` + +**Returns** +- [Tracing] + [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" diff --git a/java/versioned_docs/version-stable/api/class-browser.mdx b/java/versioned_docs/version-stable/api/class-browser.mdx index d94670ce01..0d5870cc3f 100644 --- a/java/versioned_docs/version-stable/api/class-browser.mdx +++ b/java/versioned_docs/version-stable/api/class-browser.mdx @@ -725,6 +725,23 @@ Browser.version(); ## Events +### onContext(handler) {#browser-event-context} + +Added in: v1.60browser.onContext(handler) + +Emitted when a new browser context is created. + +**Usage** + +```java +Browser.onContext(handler) +``` + +**Event data** +- [BrowserContext] + +--- + ### onDisconnected(handler) {#browser-event-disconnected} Added before v1.9browser.onDisconnected(handler) diff --git a/java/versioned_docs/version-stable/api/class-browsercontext.mdx b/java/versioned_docs/version-stable/api/class-browsercontext.mdx index eb9eb42845..fef529a63b 100644 --- a/java/versioned_docs/version-stable/api/class-browsercontext.mdx +++ b/java/versioned_docs/version-stable/api/class-browsercontext.mdx @@ -311,15 +311,6 @@ public class Example { - `callback` `BindingCallback`# Callback function that will be called in the Playwright's context. -- `options` `BrowserContext.ExposeBindingOptions` *(optional)* - - `setHandle` [boolean] *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Disposable]# @@ -1130,6 +1121,74 @@ When no [Page.onDialog(handler)](/api/class-page.mdx#page-event-dialog) or [Brow --- +### onDownload(handler) {#browser-context-event-download} + +Added in: v1.60browserContext.onDownload(handler) + +Emitted when attachment download started in any page belonging to this context. User can access basic file operations on downloaded content via the passed [Download] instance. See also [Page.onDownload(handler)](/api/class-page.mdx#page-event-download) to receive events about a specific page. + +**Usage** + +```java +BrowserContext.onDownload(handler) +``` + +**Event data** +- [Download] + +--- + +### onFrameAttached(handler) {#browser-context-event-frame-attached} + +Added in: v1.60browserContext.onFrameAttached(handler) + +Emitted when a frame is attached in any page belonging to this context. See also [Page.onFrameAttached(handler)](/api/class-page.mdx#page-event-frame-attached) to receive events about a specific page. + +**Usage** + +```java +BrowserContext.onFrameAttached(handler) +``` + +**Event data** +- [Frame] + +--- + +### onFrameDetached(handler) {#browser-context-event-frame-detached} + +Added in: v1.60browserContext.onFrameDetached(handler) + +Emitted when a frame is detached in any page belonging to this context. See also [Page.onFrameDetached(handler)](/api/class-page.mdx#page-event-frame-detached) to receive events about a specific page. + +**Usage** + +```java +BrowserContext.onFrameDetached(handler) +``` + +**Event data** +- [Frame] + +--- + +### onFrameNavigated(handler) {#browser-context-event-frame-navigated} + +Added in: v1.60browserContext.onFrameNavigated(handler) + +Emitted when a frame is navigated to a new url in any page belonging to this context. See also [Page.onFrameNavigated(handler)](/api/class-page.mdx#page-event-frame-navigated) to receive events about navigations in a specific page. + +**Usage** + +```java +BrowserContext.onFrameNavigated(handler) +``` + +**Event data** +- [Frame] + +--- + ### onPage(handler) {#browser-context-event-page} Added before v1.9browserContext.onPage(handler) @@ -1160,6 +1219,40 @@ BrowserContext.onPage(handler) --- +### onPageClose(handler) {#browser-context-event-page-close} + +Added in: v1.60browserContext.onPageClose(handler) + +Emitted when a page in this context is closed. See also [Page.onClose(handler)](/api/class-page.mdx#page-event-close) to receive events about a specific page. + +**Usage** + +```java +BrowserContext.onPageClose(handler) +``` + +**Event data** +- [Page] + +--- + +### onPageLoad(handler) {#browser-context-event-page-load} + +Added in: v1.60browserContext.onPageLoad(handler) + +Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched in any page belonging to this context. See also [Page.onLoad(handler)](/api/class-page.mdx#page-event-load) to receive events about a specific page. + +**Usage** + +```java +BrowserContext.onPageLoad(handler) +``` + +**Event data** +- [Page] + +--- + ### onRequest(handler) {#browser-context-event-request} Added in: v1.12browserContext.onRequest(handler) diff --git a/java/versioned_docs/version-stable/api/class-browsertype.mdx b/java/versioned_docs/version-stable/api/class-browsertype.mdx index b0ec032e54..70f7ab8fd0 100644 --- a/java/versioned_docs/version-stable/api/class-browsertype.mdx +++ b/java/versioned_docs/version-stable/api/class-browsertype.mdx @@ -118,6 +118,9 @@ Page page = defaultContext.pages().get(0); - `setIsLocal` [boolean] *(optional)* Added in: v1.58# Tells Playwright that it runs on the same host as the CDP server. It will enable certain optimizations that rely upon the file system being the same between Playwright and the Browser. + - `setNoDefaults` [boolean] *(optional)* Added in: v1.60# + + When true, Playwright will not apply its default overrides to the existing default browser context. Specifically, [setAcceptDownloads](/api/class-browser.mdx#browser-new-context-option-accept-downloads) is left at the browser's setting, focus emulation is not enabled, and media emulation options (such as [setColorScheme](/api/class-browser.mdx#browser-new-context-option-color-scheme), [setReducedMotion](/api/class-browser.mdx#browser-new-context-option-reduced-motion), [setForcedColors](/api/class-browser.mdx#browser-new-context-option-forced-colors), and [setContrast](/api/class-browser.mdx#browser-new-context-option-contrast)) are not applied. Useful when attaching to a user's daily-driver browser where these overrides would interfere with existing browser state. New contexts created via [Browser.newContext()](/api/class-browser.mdx#browser-new-context) are not affected. Defaults to `false`. - `setSlowMo` [double] *(optional)* Added in: v1.11# Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to 0. diff --git a/java/versioned_docs/version-stable/api/class-frame.mdx b/java/versioned_docs/version-stable/api/class-frame.mdx index 1417eae455..b211e48472 100644 --- a/java/versioned_docs/version-stable/api/class-frame.mdx +++ b/java/versioned_docs/version-stable/api/class-frame.mdx @@ -494,6 +494,11 @@ page.getByRole(AriaRole.BUTTON, An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `setDescription` [String] | [Pattern] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [setExact](/api/class-frame.mdx#frame-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `setDisabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -505,7 +510,7 @@ page.getByRole(AriaRole.BUTTON, - `setExact` [boolean] *(optional)* Added in: v1.28# - Whether [setName](/api/class-frame.mdx#frame-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [setName](/api/class-frame.mdx#frame-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [setName](/api/class-frame.mdx#frame-get-by-role-option-name) and [setDescription](/api/class-frame.mdx#frame-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `setExpanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. diff --git a/java/versioned_docs/version-stable/api/class-framelocator.mdx b/java/versioned_docs/version-stable/api/class-framelocator.mdx index e1c5d06ffc..ebf1f38fd4 100644 --- a/java/versioned_docs/version-stable/api/class-framelocator.mdx +++ b/java/versioned_docs/version-stable/api/class-framelocator.mdx @@ -209,6 +209,11 @@ page.getByRole(AriaRole.BUTTON, An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `setDescription` [String] | [Pattern] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [setExact](/api/class-framelocator.mdx#frame-locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `setDisabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -220,7 +225,7 @@ page.getByRole(AriaRole.BUTTON, - `setExact` [boolean] *(optional)* Added in: v1.28# - Whether [setName](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [setName](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [setName](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) and [setDescription](/api/class-framelocator.mdx#frame-locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `setExpanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. diff --git a/java/versioned_docs/version-stable/api/class-locator.mdx b/java/versioned_docs/version-stable/api/class-locator.mdx index 85e9a81665..1ab7aed228 100644 --- a/java/versioned_docs/version-stable/api/class-locator.mdx +++ b/java/versioned_docs/version-stable/api/class-locator.mdx @@ -125,6 +125,9 @@ page.getByRole(AriaRole.LINK).ariaSnapshot(); **Arguments** - `options` `Locator.AriaSnapshotOptions` *(optional)* + - `setBoxes` [boolean] *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `setDepth` [int] *(optional)* Added in: v1.59# When specified, limits the depth of the snapshot. @@ -707,6 +710,60 @@ This method drags the locator to another target locator or target position. It w --- +### drop {#locator-drop} + +Added in: v1.60locator.drop + +Simulate an external drag-and-drop of files or clipboard-like data onto this locator. + +**Usage** + +Drop a file buffer onto an upload area: + +Drop plain text and a URL together: + +**Arguments** +- `payload` Payload# + - `setFiles` [Path] | [Path][] | Files | Files[] *(optional)* + - `setName` [String] + + File name + - `setMimeType` [String] + + File type + - `setBuffer` [byte[]] + + File content + + + - `setData` [Map]<[String], [String]> *(optional)* + + + Data to drop onto the target. Provide `files` (file paths or in-memory buffers), `data` (a mime-type → string map for clipboard-like content such as `text/plain`, `text/html`, `text/uri-list`), or both. +- `options` `Locator.DropOptions` *(optional)* + - `setPosition` Position *(optional)*# + - `setX` [double] + + + - `setY` [double] + + + A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of the element. + - `setTimeout` [double] *(optional)*# + + Maximum time in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout. The default value can be changed by using the [BrowserContext.setDefaultTimeout()](/api/class-browsercontext.mdx#browser-context-set-default-timeout) or [Page.setDefaultTimeout()](/api/class-page.mdx#page-set-default-timeout) methods. + +**Returns** +- [void]# + +**Details** + +Dispatches the native `dragenter`, `dragover`, and `drop` events at the center of the target element with a synthetic [DataTransfer] carrying the provided files and/or data entries. Works cross-browser by constructing the [DataTransfer] in the page context. + +If the target element's `dragover` listener does not call `preventDefault()`, the target is considered to have rejected the drop: Playwright dispatches `dragleave` and this method throws. + +--- + ### evaluate {#locator-evaluate} Added in: v1.14locator.evaluate @@ -1162,6 +1219,11 @@ page.getByRole(AriaRole.BUTTON, An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `setDescription` [String] | [Pattern] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [setExact](/api/class-locator.mdx#locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `setDisabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1173,7 +1235,7 @@ page.getByRole(AriaRole.BUTTON, - `setExact` [boolean] *(optional)* Added in: v1.28# - Whether [setName](/api/class-locator.mdx#locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [setName](/api/class-locator.mdx#locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [setName](/api/class-locator.mdx#locator-get-by-role-option-name) and [setDescription](/api/class-locator.mdx#locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `setExpanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1340,6 +1402,23 @@ assertThat(page.getByTitle("Issues count")).hasText("25 issues"); --- +### hideHighlight {#locator-hide-highlight} + +Added in: v1.60locator.hideHighlight + +Hides the element highlight previously added by [Locator.highlight()](/api/class-locator.mdx#locator-highlight). + +**Usage** + +```java +Locator.hideHighlight(); +``` + +**Returns** +- [void]# + +--- + ### highlight {#locator-highlight} Added in: v1.20locator.highlight @@ -1350,10 +1429,17 @@ Highlight the corresponding element(s) on the screen. Useful for debugging, don' ```java Locator.highlight(); +Locator.highlight(options); ``` +**Arguments** +- `options` `Locator.HighlightOptions` *(optional)* + - `setStyle` [String] *(optional)* Added in: v1.60# + + Additional inline CSS applied to the highlight overlay, e.g. `"outline: 2px dashed red"`. + **Returns** -- [void]# +- [Disposable]# --- diff --git a/java/versioned_docs/version-stable/api/class-locatorassertions.mdx b/java/versioned_docs/version-stable/api/class-locatorassertions.mdx index 692785963f..b92765d243 100644 --- a/java/versioned_docs/version-stable/api/class-locatorassertions.mdx +++ b/java/versioned_docs/version-stable/api/class-locatorassertions.mdx @@ -348,6 +348,9 @@ assertThat(page.getByRole(AriaRole.BUTTON)).hasCSS("display", "flex"); CSS property value. - `options` `LocatorAssertions.HasCSSOptions` *(optional)* + - `setPseudo` `enum PseudoElement { BEFORE, AFTER }` *(optional)* Added in: v1.60# + + Pseudo-element to read computed styles from. - `setTimeout` [double] *(optional)* Added in: v1.18# Time to retry the assertion for in milliseconds. Defaults to `5000`. diff --git a/java/versioned_docs/version-stable/api/class-page.mdx b/java/versioned_docs/version-stable/api/class-page.mdx index 6bc54606e9..60bc842994 100644 --- a/java/versioned_docs/version-stable/api/class-page.mdx +++ b/java/versioned_docs/version-stable/api/class-page.mdx @@ -262,6 +262,9 @@ Page.ariaSnapshot(options); **Arguments** - `options` `Page.AriaSnapshotOptions` *(optional)* + - `setBoxes` [boolean] *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `setDepth` [int] *(optional)*# When specified, limits the depth of the snapshot. @@ -706,15 +709,6 @@ public class Example { - `callback` `BindingCallback`# Callback function that will be called in the Playwright's context. -- `options` `Page.ExposeBindingOptions` *(optional)* - - `setHandle` [boolean] *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Disposable]# @@ -1030,6 +1024,11 @@ page.getByRole(AriaRole.BUTTON, An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `setDescription` [String] | [Pattern] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [setExact](/api/class-page.mdx#page-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `setDisabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1041,7 +1040,7 @@ page.getByRole(AriaRole.BUTTON, - `setExact` [boolean] *(optional)* Added in: v1.28# - Whether [setName](/api/class-page.mdx#page-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [setName](/api/class-page.mdx#page-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [setName](/api/class-page.mdx#page-get-by-role-option-name) and [setDescription](/api/class-page.mdx#page-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `setExpanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1274,6 +1273,23 @@ Page.goForward(options); --- +### hideHighlight {#page-hide-highlight} + +Added in: v1.60page.hideHighlight + +Hide all locator highlight overlays previously added by [Locator.highlight()](/api/class-locator.mdx#locator-highlight) on this page. + +**Usage** + +```java +Page.hideHighlight(); +``` + +**Returns** +- [void]# + +--- + ### isClosed {#page-is-closed} Added before v1.9page.isClosed diff --git a/java/versioned_docs/version-stable/api/class-pageassertions.mdx b/java/versioned_docs/version-stable/api/class-pageassertions.mdx index 2b12e17aa0..45869cb2c2 100644 --- a/java/versioned_docs/version-stable/api/class-pageassertions.mdx +++ b/java/versioned_docs/version-stable/api/class-pageassertions.mdx @@ -84,6 +84,34 @@ assertThat(page).hasURL(".com"); --- +### matchesAriaSnapshot {#page-assertions-to-match-aria-snapshot} + +Added in: v1.60pageAssertions.matchesAriaSnapshot + +Asserts that the page body matches the given [accessibility snapshot](../aria-snapshots.mdx). + +**Usage** + +```java +page.navigate("https://demo.playwright.dev/todomvc/"); +assertThat(page).matchesAriaSnapshot(""" + - heading "todos" + - textbox "What needs to be done?" +"""); +``` + +**Arguments** +- `expected` [String]# +- `options` `PageAssertions.MatchesAriaSnapshotOptions` *(optional)* + - `setTimeout` [double] *(optional)*# + + Time to retry the assertion for in milliseconds. Defaults to `5000`. + +**Returns** +- [void]# + +--- + ## Properties ### not() {#page-assertions-not} diff --git a/java/versioned_docs/version-stable/api/class-screencast.mdx b/java/versioned_docs/version-stable/api/class-screencast.mdx index 72396a2ae5..1a39d6173c 100644 --- a/java/versioned_docs/version-stable/api/class-screencast.mdx +++ b/java/versioned_docs/version-stable/api/class-screencast.mdx @@ -166,8 +166,14 @@ Starts the screencast. When [setPath](/api/class-screencast.mdx#screencast-start - `setData` [byte[]] JPEG-encoded frame data. + - `setViewportWidth` [int] + + Width of the page viewport at the time the frame was captured. + - `setViewportHeight` [int] + + Height of the page viewport at the time the frame was captured. - Callback that receives JPEG-encoded frame data. + Callback that receives JPEG-encoded frame data along with the page viewport size at the time of capture. - `setPath` [Path] *(optional)*# Path where the video should be saved when the screencast is stopped. When provided, video recording is started. diff --git a/java/versioned_docs/version-stable/api/class-tracing.mdx b/java/versioned_docs/version-stable/api/class-tracing.mdx index c045d85bd0..7a81048b18 100644 --- a/java/versioned_docs/version-stable/api/class-tracing.mdx +++ b/java/versioned_docs/version-stable/api/class-tracing.mdx @@ -191,6 +191,43 @@ context.tracing().stopChunk(new Tracing.StopChunkOptions() --- +### startHar {#tracing-start-har} + +Added in: v1.60tracing.startHar + +Start recording a HAR (HTTP Archive) of network activity in this context. The HAR file is written to disk when [Tracing.stopHar()](/api/class-tracing.mdx#tracing-stop-har) is called, or when the returned [Disposable] is disposed. + +Only one HAR recording can be active at a time per [BrowserContext]. + +**Usage** + +```java +context.tracing().startHar(Paths.get("trace.har")); +Page page = context.newPage(); +page.navigate("https://playwright.dev"); +context.tracing().stopHar(); +``` + +**Arguments** +- `path` [Path]# + + Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, the HAR is saved as a zip archive with response bodies attached as separate files. +- `options` `Tracing.StartHarOptions` *(optional)* + - `setContent` `enum HarContentPolicy { OMIT, EMBED, ATTACH }` *(optional)*# + + Optional setting to control resource content management. If `omit` is specified, content is not persisted. If `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output files and to `embed` for all other file extensions. + - `setMode` `enum HarMode { FULL, MINIMAL }` *(optional)*# + + When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page, cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`. + - `setUrlFilter` [String] | [Pattern] *(optional)*# + + A glob or regex pattern to filter requests that are stored in the HAR. Defaults to none. + +**Returns** +- [Disposable]# + +--- + ### stop {#tracing-stop} Added in: v1.12tracing.stop @@ -237,6 +274,23 @@ Tracing.stopChunk(options); **Returns** - [void]# +--- + +### stopHar {#tracing-stop-har} + +Added in: v1.60tracing.stopHar + +Stop HAR recording and save the HAR file to the path given to [Tracing.startHar()](/api/class-tracing.mdx#tracing-start-har). + +**Usage** + +```java +Tracing.stopHar(); +``` + +**Returns** +- [void]# + [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" diff --git a/java/versioned_docs/version-stable/api/class-weberror.mdx b/java/versioned_docs/version-stable/api/class-weberror.mdx index 0364bbda61..13b9c9abee 100644 --- a/java/versioned_docs/version-stable/api/class-weberror.mdx +++ b/java/versioned_docs/version-stable/api/class-weberror.mdx @@ -41,6 +41,30 @@ WebError.error(); --- +### location {#web-error-location} + +Added in: v1.60webError.location + +**Usage** + +```java +WebError.location(); +``` + +**Returns** +- Location# + - `url` [String] + + URL of the resource. + - `line` [int] + + 0-based line number in the resource. + - `column` [int] + + 0-based column number in the resource. + +--- + ### page {#web-error-page} Added in: v1.38webError.page diff --git a/java/versioned_docs/version-stable/api/class-websocketroute.mdx b/java/versioned_docs/version-stable/api/class-websocketroute.mdx index 19e441275d..714143dbeb 100644 --- a/java/versioned_docs/version-stable/api/class-websocketroute.mdx +++ b/java/versioned_docs/version-stable/api/class-websocketroute.mdx @@ -180,6 +180,31 @@ WebSocketRoute.onMessage(handler); --- +### protocols {#web-socket-route-protocols} + +Added in: v1.60webSocketRoute.protocols + +The list of WebSocket subprotocols requested by the page, as passed via the second argument to the [`WebSocket` constructor](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket). Corresponds to the `Sec-WebSocket-Protocol` request header. + +Returns an empty array if no protocols were specified. + +**Usage** + +```java +page.routeWebSocket("wss://example.com/ws", ws -> { + if (ws.protocols().contains("chat.v2")) { + ws.onMessage(frame -> ws.send("v2:" + frame.text())); + } else { + ws.close(1002, "Unsupported protocol"); + } +}); +``` + +**Returns** +- [List]<[String]># + +--- + ### send {#web-socket-route-send} Added in: v1.48webSocketRoute.send diff --git a/java/versioned_docs/version-stable/aria-snapshots.mdx b/java/versioned_docs/version-stable/aria-snapshots.mdx index b0470d7ea1..8982b4980d 100644 --- a/java/versioned_docs/version-stable/aria-snapshots.mdx +++ b/java/versioned_docs/version-stable/aria-snapshots.mdx @@ -14,7 +14,7 @@ With Playwright's Snapshot testing you can assert the accessibility tree of a pa ```java page.navigate("https://playwright.dev/"); -assertThat(page.locator("banner")).matchesAriaSnapshot(""" +assertThat(page).matchesAriaSnapshot(""" - banner: - heading /Playwright enables reliable end-to-end/ [level=1] - link "Get started": @@ -90,7 +90,7 @@ These values are derived from ARIA attributes or calculated based on HTML semant ## Snapshot matching -The [assertThat(locator).matchesAriaSnapshot()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the locator scope with a predefined aria snapshot template, helping validate the page's state against testing requirements. +The [assertThat(page).matchesAriaSnapshot()](/api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the page with a predefined aria snapshot template, helping validate the page's state against testing requirements. You can also use [assertThat(locator).matchesAriaSnapshot()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) to match a specific part of the page. For the following DOM: @@ -101,7 +101,7 @@ For the following DOM: You can match it using the following snapshot template: ```java -assertThat(page.locator("body")).matchesAriaSnapshot(""" +assertThat(page).matchesAriaSnapshot(""" - heading "title" """); ``` @@ -225,14 +225,14 @@ If you're using Playwright's [Code Generator](./codegen.mdx), generating aria sn - **"Assert snapshot" Action**: In the code generator, you can use the "Assert snapshot" action to automatically create a snapshot assertion for the selected elements. This is a quick way to capture the aria snapshot as part of your recorded test flow. - **"Aria snapshot" Tab**: The "Aria snapshot" tab within the code generator interface visually represents the aria snapshot for a selected locator, letting you explore, inspect, and verify element roles, attributes, and accessible names to aid snapshot creation and review. -### Using the `Locator.ariaSnapshot` method +### Using [Page.ariaSnapshot()](/api/class-page.mdx#page-aria-snapshot) and [Locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) -The [Locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) method allows you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. +Methods [Page.ariaSnapshot()](/api/class-page.mdx#page-aria-snapshot) and [Locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) allow you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. **Example**: ```java -String snapshot = page.locator("body").ariaSnapshot(); +String snapshot = page.ariaSnapshot(); System.out.println(snapshot); ``` diff --git a/java/versioned_docs/version-stable/getting-started-cli.mdx b/java/versioned_docs/version-stable/getting-started-cli.mdx index 2dd5b6b15d..d111e62480 100644 --- a/java/versioned_docs/version-stable/getting-started-cli.mdx +++ b/java/versioned_docs/version-stable/getting-started-cli.mdx @@ -166,7 +166,8 @@ playwright-cli tab-close [index] # close a tab ### Network ```bash -playwright-cli network # list network requests since page load +playwright-cli requests # list network requests since page load +playwright-cli request # show full details of a single request playwright-cli route [opts] # mock network requests playwright-cli route-list # list active routes playwright-cli unroute [pattern] # remove routes @@ -281,7 +282,7 @@ The CLI also loads `.playwright/cli.config.json` automatically if present. The c Connect to your existing browser tabs instead of launching a new browser: ```bash -playwright-cli open --extension +playwright-cli attach --extension ``` This requires the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md) to be installed. diff --git a/java/versioned_docs/version-stable/getting-started-mcp.mdx b/java/versioned_docs/version-stable/getting-started-mcp.mdx index 595a7c625b..337b94958c 100644 --- a/java/versioned_docs/version-stable/getting-started-mcp.mdx +++ b/java/versioned_docs/version-stable/getting-started-mcp.mdx @@ -105,7 +105,7 @@ Playwright MCP provides tools for all common browser interactions: ### Running Playwright code -For complex interactions that go beyond individual tool calls, use the `browser_run_code` tool to execute Playwright scripts directly: +For complex interactions that go beyond individual tool calls, use the `browser_run_code_unsafe` tool to execute Playwright scripts directly. This tool runs arbitrary JavaScript in the Playwright server process and is RCE-equivalent — only enable it for trusted MCP clients: ```txt Run this Playwright code to verify the todo count: @@ -172,7 +172,7 @@ Supported values: `chrome`, `firefox`, `webkit`, `msedge`. ### User profile Playwright MCP supports three profile modes: -- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-profile` in your platform's cache directory. Override with `--user-data-dir`. +- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-{workspace-hash}` in your platform's cache directory, so different projects get separate profiles automatically. Override with `--user-data-dir`. - **Isolated**: Each session starts fresh. Pass `--isolated` to enable. You can load initial state with `--storage-state`. - **Browser extension**: Connect to your existing browser tabs with the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md). Pass `--extension` to enable. diff --git a/java/versioned_docs/version-stable/intro.mdx b/java/versioned_docs/version-stable/intro.mdx index c9f89ff8c0..4891ca3823 100644 --- a/java/versioned_docs/version-stable/intro.mdx +++ b/java/versioned_docs/version-stable/intro.mdx @@ -129,7 +129,7 @@ By default browsers launched with Playwright run headless, meaning no browser UI ## System requirements - Java 8 or higher. - Windows 11+, Windows Server 2019+ or Windows Subsystem for Linux (WSL). -- macOS 14 Ventura, or later. +- macOS 14 Sonoma, or later. - Debian 12, Debian 13, Ubuntu 22.04, Ubuntu 24.04, on x86-64 and arm64 architecture. ## What's next diff --git a/nodejs/versioned_docs/version-stable/accessibility-testing.mdx b/nodejs/versioned_docs/version-stable/accessibility-testing.mdx index b3dbee5104..812c0bb4ed 100644 --- a/nodejs/versioned_docs/version-stable/accessibility-testing.mdx +++ b/nodejs/versioned_docs/version-stable/accessibility-testing.mdx @@ -333,11 +333,6 @@ test('example using custom fixture', async ({ page, makeAxeBuilder }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -354,8 +349,6 @@ test('example using custom fixture', async ({ page, makeAxeBuilder }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -385,6 +378,13 @@ test('example using custom fixture', async ({ page, makeAxeBuilder }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/actionability.mdx b/nodejs/versioned_docs/version-stable/actionability.mdx index aa5e7b4ca7..e6f1a43fd8 100644 --- a/nodejs/versioned_docs/version-stable/actionability.mdx +++ b/nodejs/versioned_docs/version-stable/actionability.mdx @@ -123,11 +123,6 @@ For example, consider a scenario where Playwright will click `Sign Up` button re [Receives Events]: #receives-events "Receives Events" -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -144,8 +139,6 @@ For example, consider a scenario where Playwright will click `Sign Up` button re [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -175,6 +168,13 @@ For example, consider a scenario where Playwright will click `Sign Up` button re [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api-testing.mdx b/nodejs/versioned_docs/version-stable/api-testing.mdx index d49a7170cd..7a3af73f09 100644 --- a/nodejs/versioned_docs/version-stable/api-testing.mdx +++ b/nodejs/versioned_docs/version-stable/api-testing.mdx @@ -374,11 +374,6 @@ test('global context request has isolated cookie storage', async ({ ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -395,8 +390,6 @@ test('global context request has isolated cookie storage', async ({ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -426,6 +419,13 @@ test('global context request has isolated cookie storage', async ({ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-android.mdx b/nodejs/versioned_docs/version-stable/api/class-android.mdx index 9c8043213d..073464576d 100644 --- a/nodejs/versioned_docs/version-stable/api/class-android.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-android.mdx @@ -205,7 +205,7 @@ const { _android } = require('playwright'); Optional device serial number to launch the browser on. If not specified, it will throw if multiple devices are connected. - `host` [string] *(optional)* Added in: v1.45# - Host to use for the web socket. It is optional and if it is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available, or the unspecified IPv4 address (0.0.0.0) otherwise. Consider hardening it with picking a specific interface. + Host to use for the web socket. It is optional and defaults to `localhost`, accepting connections only from the loopback interface. Pass an explicit address (e.g. `0.0.0.0`) to accept connections from the network — be aware this exposes the device RPC to anything that can reach the listening port. - `omitDriverInstall` [boolean] *(optional)*# Prevents automatic playwright driver installation on attach. Assumes that the drivers have been installed already. @@ -244,11 +244,6 @@ android.setDefaultTimeout(timeout); Maximum time in milliseconds -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -265,8 +260,6 @@ android.setDefaultTimeout(timeout); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -296,6 +289,13 @@ android.setDefaultTimeout(timeout); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-androiddevice.mdx b/nodejs/versioned_docs/version-stable/api/class-androiddevice.mdx index 00fc63052c..5e88b81d47 100644 --- a/nodejs/versioned_docs/version-stable/api/class-androiddevice.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-androiddevice.mdx @@ -374,24 +374,6 @@ await androidDevice.launchBrowser(options); - `userAgent` [string] *(optional)*# Specific user agent to use in this context. - - `videoSize` [Object] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-androiddevice.mdx#android-device-launch-browser-option-record-video) instead. - ::: - - - `width` [number] - - Video frame width. - - `height` [number] - - Video frame height. - - `videosPath` [string] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-androiddevice.mdx#android-device-launch-browser-option-record-video) instead. - ::: - - `viewport` [null] | [Object] *(optional)*# - `width` [number] @@ -952,11 +934,6 @@ androidDevice.on('webview', data => {}); - [AndroidWebView] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -973,8 +950,6 @@ androidDevice.on('webview', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1004,6 +979,13 @@ androidDevice.on('webview', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-androidinput.mdx b/nodejs/versioned_docs/version-stable/api/class-androidinput.mdx index 681ccf6187..0aa881da65 100644 --- a/nodejs/versioned_docs/version-stable/api/class-androidinput.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-androidinput.mdx @@ -158,11 +158,6 @@ await androidInput.type(text); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -179,8 +174,6 @@ await androidInput.type(text); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -210,6 +203,13 @@ await androidInput.type(text); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-androidsocket.mdx b/nodejs/versioned_docs/version-stable/api/class-androidsocket.mdx index 56374bd8e6..cadc138201 100644 --- a/nodejs/versioned_docs/version-stable/api/class-androidsocket.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-androidsocket.mdx @@ -85,11 +85,6 @@ androidSocket.on('data', data => {}); - [Buffer] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -106,8 +101,6 @@ androidSocket.on('data', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -137,6 +130,13 @@ androidSocket.on('data', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-androidwebview.mdx b/nodejs/versioned_docs/version-stable/api/class-androidwebview.mdx index 9d6f7d1482..5f4e00bd09 100644 --- a/nodejs/versioned_docs/version-stable/api/class-androidwebview.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-androidwebview.mdx @@ -80,11 +80,6 @@ androidWebView.on('close', data => {}); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -101,8 +96,6 @@ androidWebView.on('close', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -132,6 +125,13 @@ androidWebView.on('close', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-apirequest.mdx b/nodejs/versioned_docs/version-stable/api/class-apirequest.mdx index f874d845e9..a58b143d7e 100644 --- a/nodejs/versioned_docs/version-stable/api/class-apirequest.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-apirequest.mdx @@ -168,11 +168,6 @@ await apiRequest.newContext(options); - [Promise]<[APIRequestContext]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -189,8 +184,6 @@ await apiRequest.newContext(options); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -220,6 +213,13 @@ await apiRequest.newContext(options); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-apirequestcontext.mdx b/nodejs/versioned_docs/version-stable/api/class-apirequestcontext.mdx index 6a0b78185f..11f1fdebc5 100644 --- a/nodejs/versioned_docs/version-stable/api/class-apirequestcontext.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-apirequestcontext.mdx @@ -9,13 +9,17 @@ import HTMLCard from '@site/src/components/HTMLCard'; 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](/api/class-browsercontext.mdx#browser-context-request) or [page.request](/api/class-page.mdx#page-request). It is also possible to create a new APIRequestContext instance manually by calling [apiRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). +Each Playwright browser context has an associated [APIRequestContext], accessible via [browserContext.request](/api/class-browsercontext.mdx#browser-context-request) or [page.request](/api/class-page.mdx#page-request) (these return the + +**same instance** — `page.request` is a shortcut for `page.context().request`). You can also create a standalone, isolated instance with [apiRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). **Cookie management** -[APIRequestContext] returned by [browserContext.request](/api/class-browsercontext.mdx#browser-context-request) and [page.request](/api/class-page.mdx#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. +The [APIRequestContext] returned by [browserContext.request](/api/class-browsercontext.mdx#browser-context-request) and + +[page.request](/api/class-page.mdx#page-request) uses the same cookie jar as its [BrowserContext]: -If you want API requests to not interfere with the browser cookies you should create a new [APIRequestContext] by calling [apiRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. +If you want API requests that do **not** share cookies with the browser, create an isolated context via [apiRequest.newContext()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. --- @@ -623,13 +627,24 @@ await apiRequestContext.storageState(options); +--- + +## Properties + +### tracing {#api-request-context-tracing} + +Added in: v1.60apiRequestContext.tracing + +**Usage** + +```js +apiRequestContext.tracing +``` + +**Type** +- [Tracing] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -646,8 +661,6 @@ await apiRequestContext.storageState(options); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -677,6 +690,13 @@ await apiRequestContext.storageState(options); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-apiresponse.mdx b/nodejs/versioned_docs/version-stable/api/class-apiresponse.mdx index 177ac3b2b5..d4d11e32b7 100644 --- a/nodejs/versioned_docs/version-stable/api/class-apiresponse.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-apiresponse.mdx @@ -191,11 +191,6 @@ apiResponse.url(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -212,8 +207,6 @@ apiResponse.url(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -243,6 +236,13 @@ apiResponse.url(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-apiresponseassertions.mdx b/nodejs/versioned_docs/version-stable/api/class-apiresponseassertions.mdx index bebc63bdbb..0cc65a9450 100644 --- a/nodejs/versioned_docs/version-stable/api/class-apiresponseassertions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-apiresponseassertions.mdx @@ -61,11 +61,6 @@ await expect(response).not.toBeOK(); - [APIResponseAssertions] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -82,8 +77,6 @@ await expect(response).not.toBeOK(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -113,6 +106,13 @@ await expect(response).not.toBeOK(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-browser.mdx b/nodejs/versioned_docs/version-stable/api/class-browser.mdx index 9e35ed9804..7b0dc4a986 100644 --- a/nodejs/versioned_docs/version-stable/api/class-browser.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-browser.mdx @@ -454,24 +454,6 @@ If directly using this method to create [BrowserContext]s, it is best practice t - `userAgent` [string] *(optional)*# Specific user agent to use in this context. - - `videoSize` [Object] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-browser.mdx#browser-new-context-option-record-video) instead. - ::: - - - `width` [number] - - Video frame width. - - `height` [number] - - Video frame height. - - `videosPath` [string] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-browser.mdx#browser-new-context-option-record-video) instead. - ::: - - `viewport` [null] | [Object] *(optional)*# - `width` [number] @@ -760,24 +742,6 @@ await browser.newPage(options); - `userAgent` [string] *(optional)*# Specific user agent to use in this context. - - `videoSize` [Object] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-browser.mdx#browser-new-page-option-record-video) instead. - ::: - - - `width` [number] - - Video frame width. - - `height` [number] - - Video frame height. - - `videosPath` [string] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-browser.mdx#browser-new-page-option-record-video) instead. - ::: - - `viewport` [null] | [Object] *(optional)*# - `width` [number] @@ -923,6 +887,23 @@ browser.version(); ## Events +### on('context') {#browser-event-context} + +Added in: v1.60browser.on('context') + +Emitted when a new browser context is created. + +**Usage** + +```js +browser.on('context', data => {}); +``` + +**Event data** +- [BrowserContext] + +--- + ### on('disconnected') {#browser-event-disconnected} Added before v1.9browser.on('disconnected') @@ -941,11 +922,6 @@ browser.on('disconnected', data => {}); - [Browser] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -962,8 +938,6 @@ browser.on('disconnected', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -993,6 +967,13 @@ browser.on('disconnected', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-browsercontext.mdx b/nodejs/versioned_docs/version-stable/api/class-browsercontext.mdx index 3a226f0e95..2aa93596a6 100644 --- a/nodejs/versioned_docs/version-stable/api/class-browsercontext.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-browsercontext.mdx @@ -318,15 +318,6 @@ const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. - `callback` [function]# Callback function that will be called in the Playwright's context. -- `options` [Object] *(optional)* - - `handle` [boolean] *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Promise]<[Disposable]># @@ -1205,6 +1196,74 @@ When no [page.on('dialog')](/api/class-page.mdx#page-event-dialog) or [browserCo --- +### on('download') {#browser-context-event-download} + +Added in: v1.60browserContext.on('download') + +Emitted when attachment download started in any page belonging to this context. User can access basic file operations on downloaded content via the passed [Download] instance. See also [page.on('download')](/api/class-page.mdx#page-event-download) to receive events about a specific page. + +**Usage** + +```js +browserContext.on('download', data => {}); +``` + +**Event data** +- [Download] + +--- + +### on('frameattached') {#browser-context-event-frame-attached} + +Added in: v1.60browserContext.on('frameattached') + +Emitted when a frame is attached in any page belonging to this context. See also [page.on('frameattached')](/api/class-page.mdx#page-event-frame-attached) to receive events about a specific page. + +**Usage** + +```js +browserContext.on('frameattached', data => {}); +``` + +**Event data** +- [Frame] + +--- + +### on('framedetached') {#browser-context-event-frame-detached} + +Added in: v1.60browserContext.on('framedetached') + +Emitted when a frame is detached in any page belonging to this context. See also [page.on('framedetached')](/api/class-page.mdx#page-event-frame-detached) to receive events about a specific page. + +**Usage** + +```js +browserContext.on('framedetached', data => {}); +``` + +**Event data** +- [Frame] + +--- + +### on('framenavigated') {#browser-context-event-frame-navigated} + +Added in: v1.60browserContext.on('framenavigated') + +Emitted when a frame is navigated to a new url in any page belonging to this context. See also [page.on('framenavigated')](/api/class-page.mdx#page-event-frame-navigated) to receive events about navigations in a specific page. + +**Usage** + +```js +browserContext.on('framenavigated', data => {}); +``` + +**Event data** +- [Frame] + +--- + ### on('page') {#browser-context-event-page} Added before v1.9browserContext.on('page') @@ -1235,6 +1294,40 @@ browserContext.on('page', data => {}); --- +### on('pageclose') {#browser-context-event-page-close} + +Added in: v1.60browserContext.on('pageclose') + +Emitted when a page in this context is closed. See also [page.on('close')](/api/class-page.mdx#page-event-close) to receive events about a specific page. + +**Usage** + +```js +browserContext.on('pageclose', data => {}); +``` + +**Event data** +- [Page] + +--- + +### on('pageload') {#browser-context-event-page-load} + +Added in: v1.60browserContext.on('pageload') + +Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched in any page belonging to this context. See also [page.on('load')](/api/class-page.mdx#page-event-load) to receive events about a specific page. + +**Usage** + +```js +browserContext.on('pageload', data => {}); +``` + +**Event data** +- [Page] + +--- + ### on('request') {#browser-context-event-request} Added in: v1.12browserContext.on('request') @@ -1428,11 +1521,6 @@ await browserContext.setHTTPCredentials(httpCredentials); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -1449,8 +1537,6 @@ await browserContext.setHTTPCredentials(httpCredentials); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1480,6 +1566,13 @@ await browserContext.setHTTPCredentials(httpCredentials); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-browserserver.mdx b/nodejs/versioned_docs/version-stable/api/class-browserserver.mdx index a015b13e4c..c98887c36d 100644 --- a/nodejs/versioned_docs/version-stable/api/class-browserserver.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-browserserver.mdx @@ -71,8 +71,6 @@ Browser websocket url. Browser websocket endpoint which can be used as an argument to [browserType.connect()](/api/class-browsertype.mdx#browser-type-connect) to establish connection to the browser. -Note that if the listen `host` option in `launchServer` options is not specified, localhost will be output anyway, even if the actual listening address is an unspecified address. - **Usage** ```js @@ -99,11 +97,6 @@ browserServer.on('close', data => {}); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -120,8 +113,6 @@ browserServer.on('close', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -151,6 +142,13 @@ browserServer.on('close', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-browsertype.mdx b/nodejs/versioned_docs/version-stable/api/class-browsertype.mdx index 4dca4f3938..12f61cd1ee 100644 --- a/nodejs/versioned_docs/version-stable/api/class-browsertype.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-browsertype.mdx @@ -65,14 +65,6 @@ await browserType.connect(endpoint, options); - `headers` [Object]<[string], [string]> *(optional)* Added in: v1.11# Additional HTTP headers to be sent with web socket connect request. Optional. - - `logger` [Logger] *(optional)* Added in: v1.14# - - :::warning[Deprecated] - The logs received by the logger are incomplete. Please use tracing instead. - ::: - - - Logger sink for Playwright logging. Optional. - `slowMo` [number] *(optional)* Added in: v1.10# Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to 0. @@ -127,14 +119,9 @@ const page = defaultContext.pages()[0]; - `isLocal` [boolean] *(optional)* Added in: v1.58# Tells Playwright that it runs on the same host as the CDP server. It will enable certain optimizations that rely upon the file system being the same between Playwright and the Browser. - - `logger` [Logger] *(optional)* Added in: v1.14# - - :::warning[Deprecated] - The logs received by the logger are incomplete. Please use tracing instead. - ::: + - `noDefaults` [boolean] *(optional)* Added in: v1.60# - - Logger sink for Playwright logging. Optional. + When true, Playwright will not apply its default overrides to the existing default browser context. Specifically, [acceptDownloads](/api/class-browser.mdx#browser-new-context-option-accept-downloads) is left at the browser's setting, focus emulation is not enabled, and media emulation options (such as [colorScheme](/api/class-browser.mdx#browser-new-context-option-color-scheme), [reducedMotion](/api/class-browser.mdx#browser-new-context-option-reduced-motion), [forcedColors](/api/class-browser.mdx#browser-new-context-option-forced-colors), and [contrast](/api/class-browser.mdx#browser-new-context-option-contrast)) are not applied. Useful when attaching to a user's daily-driver browser where these overrides would interfere with existing browser state. New contexts created via [browser.newContext()](/api/class-browser.mdx#browser-new-context) are not affected. Defaults to `false`. - `slowMo` [number] *(optional)* Added in: v1.11# Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to 0. @@ -567,24 +554,6 @@ await browserType.launchPersistentContext(userDataDir, options); - `userAgent` [string] *(optional)*# Specific user agent to use in this context. - - `videoSize` [Object] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-browsertype.mdx#browser-type-launch-persistent-context-option-record-video) instead. - ::: - - - `width` [number] - - Video frame width. - - `height` [number] - - Video frame height. - - `videosPath` [string] *(optional)*# - - :::warning[Deprecated] - Use [recordVideo](/api/class-browsertype.mdx#browser-type-launch-persistent-context-option-record-video) instead. - ::: - - `viewport` [null] | [Object] *(optional)*# - `width` [number] @@ -677,7 +646,7 @@ const { chromium } = require('playwright'); // Or 'webkit' or 'firefox'. Whether to run browser in headless mode. More details for [Chromium](https://developers.google.com/web/updates/2017/04/headless-chrome) and [Firefox](https://hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/). Defaults to `true`. - `host` [string] *(optional)* Added in: v1.45# - Host to use for the web socket. It is optional and if it is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available, or the unspecified IPv4 address (0.0.0.0) otherwise. Consider hardening it with picking a specific interface. + Host to use for the web socket. It is optional and defaults to `localhost`, accepting connections only from the loopback interface. Pass an explicit address (e.g. `0.0.0.0`) to accept connections from the network — be aware this exposes the browser RPC to anything that can reach the listening port. - `ignoreDefaultArgs` [boolean] | [Array]<[string]> *(optional)*# If `true`, Playwright does not pass its own configurations args and only uses the ones from [args](/api/class-browsertype.mdx#browser-type-launch-server-option-args). If an array is given, then filters out the given default arguments. Dangerous option; use with care. Defaults to `false`. @@ -743,11 +712,6 @@ browserType.name(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -764,8 +728,6 @@ browserType.name(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -795,6 +757,13 @@ browserType.name(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-cdpsession.mdx b/nodejs/versioned_docs/version-stable/api/class-cdpsession.mdx index 97eb8610cb..904b7be342 100644 --- a/nodejs/versioned_docs/version-stable/api/class-cdpsession.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-cdpsession.mdx @@ -115,11 +115,6 @@ session.on('event', ({ name, params }) => { CDP event parameters. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -136,8 +131,6 @@ session.on('event', ({ name, params }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -167,6 +160,13 @@ session.on('event', ({ name, params }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-clock.mdx b/nodejs/versioned_docs/version-stable/api/class-clock.mdx index 5726baa164..73c83820d9 100644 --- a/nodejs/versioned_docs/version-stable/api/class-clock.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-clock.mdx @@ -199,11 +199,6 @@ await page.clock.setSystemTime('2020-02-02'); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -220,8 +215,6 @@ await page.clock.setSystemTime('2020-02-02'); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -251,6 +244,13 @@ await page.clock.setSystemTime('2020-02-02'); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-consolemessage.mdx b/nodejs/versioned_docs/version-stable/api/class-consolemessage.mdx index b92106e53b..758f506a53 100644 --- a/nodejs/versioned_docs/version-stable/api/class-consolemessage.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-consolemessage.mdx @@ -68,12 +68,18 @@ consoleMessage.location(); - `url` [string] URL of the resource. - - `lineNumber` [number] + - `line` [number] 0-based line number in the resource. - - `columnNumber` [number] + - `column` [number] 0-based column number in the resource. + - `lineNumber` [number] + + 0-based line number in the resource. Deprecated, use `line` instead. + - `columnNumber` [number] + + 0-based column number in the resource. Deprecated, use `column` instead. --- @@ -159,11 +165,6 @@ consoleMessage.worker(); - [null] | [Worker]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -180,8 +181,6 @@ consoleMessage.worker(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -211,6 +210,13 @@ consoleMessage.worker(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-coverage.mdx b/nodejs/versioned_docs/version-stable/api/class-coverage.mdx index 051d378667..01293a5d28 100644 --- a/nodejs/versioned_docs/version-stable/api/class-coverage.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-coverage.mdx @@ -183,11 +183,6 @@ await coverage.stopJSCoverage(); V8-specific coverage format. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -204,8 +199,6 @@ await coverage.stopJSCoverage(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -235,6 +228,13 @@ await coverage.stopJSCoverage(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-debugger.mdx b/nodejs/versioned_docs/version-stable/api/class-debugger.mdx index 750141f073..62db8a0a48 100644 --- a/nodejs/versioned_docs/version-stable/api/class-debugger.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-debugger.mdx @@ -144,11 +144,6 @@ debugger.on('pausedstatechanged', data => {}); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -165,8 +160,6 @@ debugger.on('pausedstatechanged', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -196,6 +189,13 @@ debugger.on('pausedstatechanged', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-dialog.mdx b/nodejs/versioned_docs/version-stable/api/class-dialog.mdx index a4bdfcafe4..ff66d95aaf 100644 --- a/nodejs/versioned_docs/version-stable/api/class-dialog.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-dialog.mdx @@ -142,11 +142,6 @@ dialog.type(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -163,8 +158,6 @@ dialog.type(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -194,6 +187,13 @@ dialog.type(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-disposable.mdx b/nodejs/versioned_docs/version-stable/api/class-disposable.mdx index 08eda2aa41..f78d6e6a56 100644 --- a/nodejs/versioned_docs/version-stable/api/class-disposable.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-disposable.mdx @@ -30,11 +30,6 @@ await disposable.dispose(); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -51,8 +46,6 @@ await disposable.dispose(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -82,6 +75,13 @@ await disposable.dispose(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-download.mdx b/nodejs/versioned_docs/version-stable/api/class-download.mdx index 53b3a63f6a..c5074ec492 100644 --- a/nodejs/versioned_docs/version-stable/api/class-download.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-download.mdx @@ -192,11 +192,6 @@ download.url(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -213,8 +208,6 @@ download.url(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -244,6 +237,13 @@ download.url(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-electron.mdx b/nodejs/versioned_docs/version-stable/api/class-electron.mdx index 6d3432abae..c3dc1f6524 100644 --- a/nodejs/versioned_docs/version-stable/api/class-electron.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-electron.mdx @@ -198,11 +198,6 @@ await electron.launch(options); - [Promise]<[ElectronApplication]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -219,8 +214,6 @@ await electron.launch(options); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -250,6 +243,13 @@ await electron.launch(options); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-electronapplication.mdx b/nodejs/versioned_docs/version-stable/api/class-electronapplication.mdx index faf5b15364..2bc03bc1d7 100644 --- a/nodejs/versioned_docs/version-stable/api/class-electronapplication.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-electronapplication.mdx @@ -311,11 +311,6 @@ electronApplication.on('window', data => {}); - [Page] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -332,8 +327,6 @@ electronApplication.on('window', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -363,6 +356,13 @@ electronApplication.on('window', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-elementhandle.mdx b/nodejs/versioned_docs/version-stable/api/class-elementhandle.mdx index 0c515a8929..b0e0aed2ca 100644 --- a/nodejs/versioned_docs/version-stable/api/class-elementhandle.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-elementhandle.mdx @@ -1592,11 +1592,6 @@ This method does not work across navigations, use [page.waitForSelector()](/api/ - [Promise]<[null] | [ElementHandle]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -1613,8 +1608,6 @@ This method does not work across navigations, use [page.waitForSelector()](/api/ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1644,6 +1637,13 @@ This method does not work across navigations, use [page.waitForSelector()](/api/ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-filechooser.mdx b/nodejs/versioned_docs/version-stable/api/class-filechooser.mdx index 79af166527..63b6cabdcf 100644 --- a/nodejs/versioned_docs/version-stable/api/class-filechooser.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-filechooser.mdx @@ -114,11 +114,6 @@ await fileChooser.setFiles(files, options); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -135,8 +130,6 @@ await fileChooser.setFiles(files, options); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -166,6 +159,13 @@ await fileChooser.setFiles(files, options); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-fixtures.mdx b/nodejs/versioned_docs/version-stable/api/class-fixtures.mdx index c16839120e..b2d17ad523 100644 --- a/nodejs/versioned_docs/version-stable/api/class-fixtures.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-fixtures.mdx @@ -147,11 +147,6 @@ test('basic test', async ({ request }) => { - [APIRequestContext] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -168,8 +163,6 @@ test('basic test', async ({ request }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -199,6 +192,13 @@ test('basic test', async ({ request }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-frame.mdx b/nodejs/versioned_docs/version-stable/api/class-frame.mdx index eeb9c6ea4d..765706564a 100644 --- a/nodejs/versioned_docs/version-stable/api/class-frame.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-frame.mdx @@ -487,6 +487,11 @@ await page.getByRole('button', { name: /submit/i }).click(); An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `description` [string] | [RegExp] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [exact](/api/class-frame.mdx#frame-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `disabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -498,7 +503,7 @@ await page.getByRole('button', { name: /submit/i }).click(); - `exact` [boolean] *(optional)* Added in: v1.28# - Whether [name](/api/class-frame.mdx#frame-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [name](/api/class-frame.mdx#frame-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [name](/api/class-frame.mdx#frame-get-by-role-option-name) and [description](/api/class-frame.mdx#frame-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `expanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -2654,11 +2659,6 @@ await frame.waitForTimeout(timeout); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -2675,8 +2675,6 @@ await frame.waitForTimeout(timeout); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -2706,6 +2704,13 @@ await frame.waitForTimeout(timeout); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-framelocator.mdx b/nodejs/versioned_docs/version-stable/api/class-framelocator.mdx index b46f39750d..c616f5c12f 100644 --- a/nodejs/versioned_docs/version-stable/api/class-framelocator.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-framelocator.mdx @@ -203,6 +203,11 @@ await page.getByRole('button', { name: /submit/i }).click(); An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `description` [string] | [RegExp] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [exact](/api/class-framelocator.mdx#frame-locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `disabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -214,7 +219,7 @@ await page.getByRole('button', { name: /submit/i }).click(); - `exact` [boolean] *(optional)* Added in: v1.28# - Whether [name](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [name](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [name](/api/class-framelocator.mdx#frame-locator-get-by-role-option-name) and [description](/api/class-framelocator.mdx#frame-locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `expanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -536,11 +541,6 @@ frameLocator.nth(index); - [FrameLocator]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -557,8 +557,6 @@ frameLocator.nth(index); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -588,6 +586,13 @@ frameLocator.nth(index); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-fullconfig.mdx b/nodejs/versioned_docs/version-stable/api/class-fullconfig.mdx index 45003f6938..6b8b0a8bfd 100644 --- a/nodejs/versioned_docs/version-stable/api/class-fullconfig.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-fullconfig.mdx @@ -422,11 +422,6 @@ fullConfig.workers - [number] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -443,8 +438,6 @@ fullConfig.workers [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -474,6 +467,13 @@ fullConfig.workers [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-fullproject.mdx b/nodejs/versioned_docs/version-stable/api/class-fullproject.mdx index 52665c95fc..2a0800cad0 100644 --- a/nodejs/versioned_docs/version-stable/api/class-fullproject.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-fullproject.mdx @@ -285,11 +285,6 @@ fullProject.use - [Fixtures] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -306,8 +301,6 @@ fullProject.use [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -337,6 +330,13 @@ fullProject.use [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-genericassertions.mdx b/nodejs/versioned_docs/version-stable/api/class-genericassertions.mdx index bc477f1439..c4fadbf64a 100644 --- a/nodejs/versioned_docs/version-stable/api/class-genericassertions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-genericassertions.mdx @@ -833,11 +833,6 @@ expect(value).resolves - [GenericAssertions] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -854,8 +849,6 @@ expect(value).resolves [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -885,6 +878,13 @@ expect(value).resolves [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-jshandle.mdx b/nodejs/versioned_docs/version-stable/api/class-jshandle.mdx index da7a0976e5..9ae30aa04b 100644 --- a/nodejs/versioned_docs/version-stable/api/class-jshandle.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-jshandle.mdx @@ -185,11 +185,6 @@ await jsHandle.jsonValue(); - [Promise]<[Serializable]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -206,8 +201,6 @@ await jsHandle.jsonValue(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -237,6 +230,13 @@ await jsHandle.jsonValue(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-keyboard.mdx b/nodejs/versioned_docs/version-stable/api/class-keyboard.mdx index cc70b2c4d7..d9caaf1141 100644 --- a/nodejs/versioned_docs/version-stable/api/class-keyboard.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-keyboard.mdx @@ -226,11 +226,6 @@ await keyboard.up(key); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -247,8 +242,6 @@ await keyboard.up(key); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -278,6 +271,13 @@ await keyboard.up(key); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-location.mdx b/nodejs/versioned_docs/version-stable/api/class-location.mdx index 0450285e4a..ac39f91155 100644 --- a/nodejs/versioned_docs/version-stable/api/class-location.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-location.mdx @@ -64,11 +64,6 @@ location.line - [number] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -85,8 +80,6 @@ location.line [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -116,6 +109,13 @@ location.line [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-locator.mdx b/nodejs/versioned_docs/version-stable/api/class-locator.mdx index 8b748b7d81..4f56c2d43d 100644 --- a/nodejs/versioned_docs/version-stable/api/class-locator.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-locator.mdx @@ -125,6 +125,9 @@ await page.getByRole('link').ariaSnapshot(); **Arguments** - `options` [Object] *(optional)* + - `boxes` [boolean] *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `depth` [number] *(optional)* Added in: v1.59# When specified, limits the depth of the snapshot. @@ -708,6 +711,75 @@ This method drags the locator to another target locator or target position. It w --- +### drop {#locator-drop} + +Added in: v1.60locator.drop + +Simulate an external drag-and-drop of files or clipboard-like data onto this locator. + +**Usage** + +Drop a file buffer onto an upload area: + +```js +await page.locator('#dropzone').drop({ + files: { name: 'note.txt', mimeType: 'text/plain', buffer: Buffer.from('hello') }, +}); +``` + +Drop plain text and a URL together: + +```js +await page.locator('#dropzone').drop({ + data: { + 'text/plain': 'hello world', + 'text/uri-list': 'https://example.com', + }, +}); +``` + +**Arguments** +- `payload` [Object]# + - `files` [string] | [Array]<[string]> | [Object] | [Array]<[Object]> *(optional)* + - `name` [string] + + File name + - `mimeType` [string] + + File type + - `buffer` [Buffer] + + File content + + + - `data` [Object]<[string], [string]> *(optional)* + + + Data to drop onto the target. Provide `files` (file paths or in-memory buffers), `data` (a mime-type → string map for clipboard-like content such as `text/plain`, `text/html`, `text/uri-list`), or both. +- `options` [Object] *(optional)* + - `position` [Object] *(optional)*# + - `x` [number] + + + - `y` [number] + + + A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of the element. + - `timeout` [number] *(optional)*# + + Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout` option in the config, or by using the [browserContext.setDefaultTimeout()](/api/class-browsercontext.mdx#browser-context-set-default-timeout) or [page.setDefaultTimeout()](/api/class-page.mdx#page-set-default-timeout) methods. + +**Returns** +- [Promise]<[void]># + +**Details** + +Dispatches the native `dragenter`, `dragover`, and `drop` events at the center of the target element with a synthetic [DataTransfer] carrying the provided files and/or data entries. Works cross-browser by constructing the [DataTransfer] in the page context. + +If the target element's `dragover` listener does not call `preventDefault()`, the target is considered to have rejected the drop: Playwright dispatches `dragleave` and this method throws. + +--- + ### evaluate {#locator-evaluate} Added in: v1.14locator.evaluate @@ -1155,6 +1227,11 @@ await page.getByRole('button', { name: /submit/i }).click(); An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `description` [string] | [RegExp] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [exact](/api/class-locator.mdx#locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `disabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1166,7 +1243,7 @@ await page.getByRole('button', { name: /submit/i }).click(); - `exact` [boolean] *(optional)* Added in: v1.28# - Whether [name](/api/class-locator.mdx#locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [name](/api/class-locator.mdx#locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [name](/api/class-locator.mdx#locator-get-by-role-option-name) and [description](/api/class-locator.mdx#locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `expanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1344,6 +1421,23 @@ await expect(page.getByTitle('Issues count')).toHaveText('25 issues'); --- +### hideHighlight {#locator-hide-highlight} + +Added in: v1.60locator.hideHighlight + +Hides the element highlight previously added by [locator.highlight()](/api/class-locator.mdx#locator-highlight). + +**Usage** + +```js +await locator.hideHighlight(); +``` + +**Returns** +- [Promise]<[void]># + +--- + ### highlight {#locator-highlight} Added in: v1.20locator.highlight @@ -1354,10 +1448,22 @@ Highlight the corresponding element(s) on the screen. Useful for debugging, don' ```js await locator.highlight(); +await locator.highlight(options); ``` +**Arguments** +- `options` [Object] *(optional)* + - `style` [string] | [Object]<[string], [string] | [number]> *(optional)* Added in: v1.60# + + Inline CSS applied to the highlight overlay, e.g. + + ```js + await locator.highlight({ style: 'outline: 2px dashed red' }); + await locator.highlight({ style: { color: 'red' } }); + ``` + **Returns** -- [Promise]<[void]># +- [Promise]<[Disposable]># --- @@ -2562,11 +2668,6 @@ To press a special key, like `Control` or `ArrowDown`, use [locator.press()](/ap - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -2583,8 +2684,6 @@ To press a special key, like `Control` or `ArrowDown`, use [locator.press()](/ap [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -2614,6 +2713,13 @@ To press a special key, like `Control` or `ArrowDown`, use [locator.press()](/ap [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-locatorassertions.mdx b/nodejs/versioned_docs/version-stable/api/class-locatorassertions.mdx index b97935f16e..752c443ebf 100644 --- a/nodejs/versioned_docs/version-stable/api/class-locatorassertions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-locatorassertions.mdx @@ -655,6 +655,9 @@ await expect(locator).toHaveCSS('display', 'flex'); CSS property value. - `options` [Object] *(optional)* + - `pseudo` "before" | "after" *(optional)* Added in: v1.60# + + Pseudo-element to read computed styles from. - `timeout` [number] *(optional)* Added in: v1.18# Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`. @@ -1088,11 +1091,6 @@ await expect(locator).not.toContainText('error'); - [LocatorAssertions] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -1109,8 +1107,6 @@ await expect(locator).not.toContainText('error'); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1140,6 +1136,13 @@ await expect(locator).not.toContainText('error'); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-logger.mdx b/nodejs/versioned_docs/version-stable/api/class-logger.mdx index b452c7ad99..8393c3d77b 100644 --- a/nodejs/versioned_docs/version-stable/api/class-logger.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-logger.mdx @@ -85,11 +85,6 @@ logger.log(name, severity, message, args, hints); optional formatting hints -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -106,8 +101,6 @@ logger.log(name, severity, message, args, hints); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -137,6 +130,13 @@ logger.log(name, severity, message, args, hints); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-mouse.mdx b/nodejs/versioned_docs/version-stable/api/class-mouse.mdx index e7dee23d7c..96af6da2b4 100644 --- a/nodejs/versioned_docs/version-stable/api/class-mouse.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-mouse.mdx @@ -214,11 +214,6 @@ await mouse.wheel(deltaX, deltaY); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -235,8 +230,6 @@ await mouse.wheel(deltaX, deltaY); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -266,6 +259,13 @@ await mouse.wheel(deltaX, deltaY); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-page.mdx b/nodejs/versioned_docs/version-stable/api/class-page.mdx index 758e843c2b..cd77135d07 100644 --- a/nodejs/versioned_docs/version-stable/api/class-page.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-page.mdx @@ -272,6 +272,9 @@ await page.ariaSnapshot(options); **Arguments** - `options` [Object] *(optional)* + - `boxes` [boolean] *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `depth` [number] *(optional)*# When specified, limits the depth of the snapshot. @@ -719,15 +722,6 @@ const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. - `callback` [function]# Callback function that will be called in the Playwright's context. -- `options` [Object] *(optional)* - - `handle` [boolean] *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Promise]<[Disposable]># @@ -1005,6 +999,11 @@ await page.getByRole('button', { name: /submit/i }).click(); An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). + - `description` [string] | [RegExp] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [exact](/api/class-page.mdx#page-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `disabled` [boolean] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1016,7 +1015,7 @@ await page.getByRole('button', { name: /submit/i }).click(); - `exact` [boolean] *(optional)* Added in: v1.28# - Whether [name](/api/class-page.mdx#page-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [name](/api/class-page.mdx#page-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [name](/api/class-page.mdx#page-get-by-role-option-name) and [description](/api/class-page.mdx#page-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `expanded` [boolean] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1315,6 +1314,23 @@ await page.goto(url, options); --- +### hideHighlight {#page-hide-highlight} + +Added in: v1.60page.hideHighlight + +Hide all locator highlight overlays previously added by [locator.highlight()](/api/class-locator.mdx#locator-highlight) on this page. + +**Usage** + +```js +await page.hideHighlight(); +``` + +**Returns** +- [Promise]<[void]># + +--- + ### isClosed {#page-is-closed} Added before v1.9page.isClosed @@ -4633,11 +4649,6 @@ await page.waitForTimeout(1000); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -4654,8 +4665,6 @@ await page.waitForTimeout(1000); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -4685,6 +4694,13 @@ await page.waitForTimeout(1000); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-pageassertions.mdx b/nodejs/versioned_docs/version-stable/api/class-pageassertions.mdx index 001c6b923c..a676394e53 100644 --- a/nodejs/versioned_docs/version-stable/api/class-pageassertions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-pageassertions.mdx @@ -254,6 +254,63 @@ await expect(page).toHaveURL(url => { --- +### toMatchAriaSnapshot(expected) {#page-assertions-to-match-aria-snapshot} + +Added in: v1.60pageAssertions.toMatchAriaSnapshot(expected) + +Asserts that the page body matches the given [accessibility snapshot](../aria-snapshots.mdx). + +**Usage** + +```js +await page.goto('https://demo.playwright.dev/todomvc/'); +await expect(page).toMatchAriaSnapshot(` + - heading "todos" + - textbox "What needs to be done?" +`); +``` + +**Arguments** +- `expected` [string]# +- `options` [Object] *(optional)* + - `timeout` [number] *(optional)*# + + Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`. + +**Returns** +- [Promise]<[void]># + +--- + +### toMatchAriaSnapshot(options) {#page-assertions-to-match-aria-snapshot-2} + +Added in: v1.60pageAssertions.toMatchAriaSnapshot(options) + +Asserts that the page body matches the given [accessibility snapshot](../aria-snapshots.mdx). + +Snapshot is stored in a separate `.aria.yml` file in a location configured by `expect.toMatchAriaSnapshot.pathTemplate` and/or `snapshotPathTemplate` properties in the configuration file. + +**Usage** + +```js +await expect(page).toMatchAriaSnapshot(); +await expect(page).toMatchAriaSnapshot({ name: 'home.aria.yml' }); +``` + +**Arguments** +- `options` [Object] *(optional)* + - `name` [string] *(optional)*# + + Name of the snapshot to store in the snapshot folder corresponding to this test. Generates sequential names if not specified. + - `timeout` [number] *(optional)*# + + Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`. + +**Returns** +- [Promise]<[void]># + +--- + ## Properties ### not {#page-assertions-not} @@ -274,11 +331,6 @@ await expect(page).not.toHaveURL('error'); - [PageAssertions] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -295,8 +347,6 @@ await expect(page).not.toHaveURL('error'); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -326,6 +376,13 @@ await expect(page).not.toHaveURL('error'); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-playwright.mdx b/nodejs/versioned_docs/version-stable/api/class-playwright.mdx index 8bc8dc34b9..2263eb6fb2 100644 --- a/nodejs/versioned_docs/version-stable/api/class-playwright.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-playwright.mdx @@ -177,11 +177,6 @@ playwright.webkit - [BrowserType] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -198,8 +193,6 @@ playwright.webkit [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -229,6 +222,13 @@ playwright.webkit [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-playwrightassertions.mdx b/nodejs/versioned_docs/version-stable/api/class-playwrightassertions.mdx index a220534b3a..0dc9c93edc 100644 --- a/nodejs/versioned_docs/version-stable/api/class-playwrightassertions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-playwrightassertions.mdx @@ -105,11 +105,6 @@ Creates a [PageAssertions] object for the given [Page]. - [PageAssertions]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -126,8 +121,6 @@ Creates a [PageAssertions] object for the given [Page]. [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -157,6 +150,13 @@ Creates a [PageAssertions] object for the given [Page]. [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-reporter.mdx b/nodejs/versioned_docs/version-stable/api/class-reporter.mdx index 67d4be278a..65a6422735 100644 --- a/nodejs/versioned_docs/version-stable/api/class-reporter.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-reporter.mdx @@ -190,12 +190,16 @@ Called on some global error, for example unhandled exception in the worker proce ```js reporter.onError(error); +reporter.onError(error, workerInfo); ``` **Arguments** - `error` [TestError]# The error. +- `workerInfo` [WorkerInfo] *(optional)* Added in: v1.60# + + Contains information about the worker that produced this error. `undefined` for errors that are not associated with a specific worker. --- @@ -376,11 +380,6 @@ reporter.printsToStdio(); - [boolean]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -397,8 +396,6 @@ reporter.printsToStdio(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -428,6 +425,13 @@ reporter.printsToStdio(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-request.mdx b/nodejs/versioned_docs/version-stable/api/class-request.mdx index 91c8f99767..c2891e14b1 100644 --- a/nodejs/versioned_docs/version-stable/api/class-request.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-request.mdx @@ -468,11 +468,6 @@ request.url(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -489,8 +484,6 @@ request.url(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -520,6 +513,13 @@ request.url(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-response.mdx b/nodejs/versioned_docs/version-stable/api/class-response.mdx index 1d84a6ae98..a427242dad 100644 --- a/nodejs/versioned_docs/version-stable/api/class-response.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-response.mdx @@ -374,11 +374,6 @@ response.url(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -395,8 +390,6 @@ response.url(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -426,6 +419,13 @@ response.url(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-route.mdx b/nodejs/versioned_docs/version-stable/api/class-route.mdx index 91fba2af2c..00f41de1b2 100644 --- a/nodejs/versioned_docs/version-stable/api/class-route.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-route.mdx @@ -312,11 +312,6 @@ route.request(); - [Request]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -333,8 +328,6 @@ route.request(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -364,6 +357,13 @@ route.request(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-screencast.mdx b/nodejs/versioned_docs/version-stable/api/class-screencast.mdx index 5a811d9674..708334be8d 100644 --- a/nodejs/versioned_docs/version-stable/api/class-screencast.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-screencast.mdx @@ -170,7 +170,9 @@ await page.screencast.stop(); ```js // Capture frames await page.screencast.start({ - onFrame: ({ data }) => console.log(`frame size: ${data.length}`), + onFrame: ({ data, viewportWidth, viewportHeight }) => { + console.log(`frame size: ${data.length} (${viewportWidth}x${viewportHeight})`); + }, size: { width: 800, height: 600 }, }); // ... perform actions ... @@ -183,8 +185,14 @@ await page.screencast.stop(); - `data` [Buffer] JPEG-encoded frame data. + - `viewportWidth` [number] + + Width of the page viewport at the time the frame was captured. + - `viewportHeight` [number] + + Height of the page viewport at the time the frame was captured. - Callback that receives JPEG-encoded frame data. + Callback that receives JPEG-encoded frame data along with the page viewport size at the time of capture. - `path` [string] *(optional)*# Path where the video should be saved when the screencast is stopped. When provided, video recording is started. @@ -222,11 +230,6 @@ await screencast.stop(); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -243,8 +246,6 @@ await screencast.stop(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -274,6 +275,13 @@ await screencast.stop(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-selectors.mdx b/nodejs/versioned_docs/version-stable/api/class-selectors.mdx index 0baf16dadd..e36d80e4b5 100644 --- a/nodejs/versioned_docs/version-stable/api/class-selectors.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-selectors.mdx @@ -100,11 +100,6 @@ selectors.setTestIdAttribute(attributeName); Test id attribute name. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -121,8 +116,6 @@ selectors.setTestIdAttribute(attributeName); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -152,6 +145,13 @@ selectors.setTestIdAttribute(attributeName); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-snapshotassertions.mdx b/nodejs/versioned_docs/version-stable/api/class-snapshotassertions.mdx index 0645798c98..1727f70af1 100644 --- a/nodejs/versioned_docs/version-stable/api/class-snapshotassertions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-snapshotassertions.mdx @@ -118,11 +118,6 @@ Note that matching snapshots only work with Playwright test runner. An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same pixel in compared images, between zero (strict) and one (lax), default is configurable with `TestConfig.expect`. Defaults to `0.2`. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -139,8 +134,6 @@ Note that matching snapshots only work with Playwright test runner. [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -170,6 +163,13 @@ Note that matching snapshots only work with Playwright test runner. [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-suite.mdx b/nodejs/versioned_docs/version-stable/api/class-suite.mdx index 16339670ea..86c8b2f575 100644 --- a/nodejs/versioned_docs/version-stable/api/class-suite.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-suite.mdx @@ -204,11 +204,6 @@ suite.type - "root" | "project" | "file" | "describe" -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -225,8 +220,6 @@ suite.type [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -256,6 +249,13 @@ suite.type [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-test.mdx b/nodejs/versioned_docs/version-stable/api/class-test.mdx index f3e6db23a4..6e19842a2b 100644 --- a/nodejs/versioned_docs/version-stable/api/class-test.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-test.mdx @@ -119,6 +119,33 @@ Learn more about [test annotations](../test-annotations.mdx). --- +### test.abort {#test-abort} + +Added in: v1.60test.test.abort + +Aborts the currently running test by throwing an error. The test is immediately marked as failed and execution stops. This is useful from inside a fixture or a route handler when you have detected an unrecoverable misuse and want to fail the test right away. + +**Usage** + +```js +import { test, expect } from '@playwright/test'; + +test('does not publish to shared page', async ({ page }) => { + await page.route('**/publish', route => { + test.abort('Tests must not publish to the shared page. Use the `clone` option.'); + return route.abort(); + }); + // ... +}); +``` + +**Arguments** +- `message` [string] *(optional)*# + + Optional message describing the reason for the abort. It will be included in the failure error. + +--- + ### test.afterAll {#test-after-all} Added in: v1.10test.test.afterAll @@ -1877,11 +1904,6 @@ test.describe.serial.only(() => { A callback that is run immediately when calling [test.describe.serial.only()](/api/class-test.mdx#test-describe-serial-only). Any tests added in this callback will belong to the group. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -1898,8 +1920,6 @@ test.describe.serial.only(() => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1929,6 +1949,13 @@ test.describe.serial.only(() => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testcase.mdx b/nodejs/versioned_docs/version-stable/api/class-testcase.mdx index 4b1ace5cdf..c854f276b6 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testcase.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testcase.mdx @@ -290,11 +290,6 @@ testCase.type - "test" -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -311,8 +306,6 @@ testCase.type [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -342,6 +335,13 @@ testCase.type [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testconfig.mdx b/nodejs/versioned_docs/version-stable/api/class-testconfig.mdx index 3769e008f7..e86caed870 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testconfig.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testconfig.mdx @@ -776,6 +776,8 @@ The list of supported tokens: * Value: `/home/playwright/tests` (absolute path since `testDir` is resolved relative to directory with config) * `{testFileDir}` - Directories in relative path from `testDir` to **test file**. * Value: `page` +* `{testFileBaseName}` - Test file name without the last extension. + * Value: `page-click.spec` * `{testFileName}` - Test file name with extension. * Value: `page-click.spec.ts` * `{testFilePath}` - Relative path from `testDir` to **test file**. @@ -1226,11 +1228,6 @@ The directory for each test can be accessed by [testInfo.snapshotDir](/api/class This path will serve as the base directory for each test file snapshot directory. Setting `snapshotDir` to `'snapshots'`, the [testInfo.snapshotDir](/api/class-testinfo.mdx#test-info-snapshot-dir) would resolve to `snapshots/a.spec.js-snapshots`. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -1247,8 +1244,6 @@ This path will serve as the base directory for each test file snapshot directory [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1278,6 +1273,13 @@ This path will serve as the base directory for each test file snapshot directory [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testerror.mdx b/nodejs/versioned_docs/version-stable/api/class-testerror.mdx index e6ae142080..0f7a85b447 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testerror.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testerror.mdx @@ -115,11 +115,6 @@ testError.value - [string] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -136,8 +131,6 @@ testError.value [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -167,6 +160,13 @@ testError.value [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testinfo.mdx b/nodejs/versioned_docs/version-stable/api/class-testinfo.mdx index 03ee77792e..c4d1d27a36 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testinfo.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testinfo.mdx @@ -861,11 +861,6 @@ testInfo.workerIndex - [number] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -882,8 +877,6 @@ testInfo.workerIndex [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -913,6 +906,13 @@ testInfo.workerIndex [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testinfoerror.mdx b/nodejs/versioned_docs/version-stable/api/class-testinfoerror.mdx index 58f19372d2..4d7c2946de 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testinfoerror.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testinfoerror.mdx @@ -31,6 +31,23 @@ testInfoError.cause --- +### errorContext {#test-info-error-error-context} + +Added in: v1.60testInfoError.errorContext + +Additional context for the error, such as the aria snapshot of the receiver at the time of an `expect(...)` matcher failure. + +**Usage** + +```js +testInfoError.errorContext +``` + +**Type** +- [string] + +--- + ### message {#test-info-error-message} Added in: v1.10testInfoError.message @@ -81,11 +98,6 @@ testInfoError.value - [string] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -102,8 +114,6 @@ testInfoError.value [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -133,6 +143,13 @@ testInfoError.value [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testoptions.mdx b/nodejs/versioned_docs/version-stable/api/class-testoptions.mdx index 34a31d1eb8..493766bcc3 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testoptions.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testoptions.mdx @@ -1112,11 +1112,6 @@ export default defineConfig({ page height in pixels. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -1133,8 +1128,6 @@ export default defineConfig({ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -1164,6 +1157,13 @@ export default defineConfig({ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testproject.mdx b/nodejs/versioned_docs/version-stable/api/class-testproject.mdx index 00ce135024..55ef2f6a38 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testproject.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testproject.mdx @@ -494,6 +494,8 @@ The list of supported tokens: * Value: `/home/playwright/tests` (absolute path since `testDir` is resolved relative to directory with config) * `{testFileDir}` - Directories in relative path from `testDir` to **test file**. * Value: `page` +* `{testFileBaseName}` - Test file name without the last extension. + * Value: `page-click.spec` * `{testFileName}` - Test file name with extension. * Value: `page-click.spec.ts` * `{testFilePath}` - Relative path from `testDir` to **test file**. @@ -768,11 +770,6 @@ export default defineConfig({ - [number] | [string] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -789,8 +786,6 @@ export default defineConfig({ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -820,6 +815,13 @@ export default defineConfig({ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-testresult.mdx b/nodejs/versioned_docs/version-stable/api/class-testresult.mdx index f29bc2c071..5ba851d866 100644 --- a/nodejs/versioned_docs/version-stable/api/class-testresult.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-testresult.mdx @@ -266,11 +266,6 @@ testResult.workerIndex - [number] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -287,8 +282,6 @@ testResult.workerIndex [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -318,6 +311,13 @@ testResult.workerIndex [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-teststep.mdx b/nodejs/versioned_docs/version-stable/api/class-teststep.mdx index 665bc658bb..87b713efaa 100644 --- a/nodejs/versioned_docs/version-stable/api/class-teststep.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-teststep.mdx @@ -229,11 +229,6 @@ testStep.title - [string] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -250,8 +245,6 @@ testStep.title [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -281,6 +274,13 @@ testStep.title [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-teststepinfo.mdx b/nodejs/versioned_docs/version-stable/api/class-teststepinfo.mdx index 4191e8c885..d5e10b5279 100644 --- a/nodejs/versioned_docs/version-stable/api/class-teststepinfo.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-teststepinfo.mdx @@ -160,11 +160,6 @@ testStepInfo.titlePath - [Array]<[string]> -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -181,8 +176,6 @@ testStepInfo.titlePath [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -212,6 +205,13 @@ testStepInfo.titlePath [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-timeouterror.mdx b/nodejs/versioned_docs/version-stable/api/class-timeouterror.mdx index c6e9103325..cf59bbc090 100644 --- a/nodejs/versioned_docs/version-stable/api/class-timeouterror.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-timeouterror.mdx @@ -31,11 +31,6 @@ const playwright = require('playwright'); -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -52,8 +47,6 @@ const playwright = require('playwright'); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -83,6 +76,13 @@ const playwright = require('playwright'); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-touchscreen.mdx b/nodejs/versioned_docs/version-stable/api/class-touchscreen.mdx index f14883902e..6ae12c38fa 100644 --- a/nodejs/versioned_docs/version-stable/api/class-touchscreen.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-touchscreen.mdx @@ -45,11 +45,6 @@ await touchscreen.tap(x, y); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -66,8 +61,6 @@ await touchscreen.tap(x, y); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -97,6 +90,13 @@ await touchscreen.tap(x, y); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-tracing.mdx b/nodejs/versioned_docs/version-stable/api/class-tracing.mdx index ae3b6105de..9771b2d4cb 100644 --- a/nodejs/versioned_docs/version-stable/api/class-tracing.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-tracing.mdx @@ -181,6 +181,46 @@ await context.tracing.stopChunk({ path: 'trace2.zip' }); --- +### startHar {#tracing-start-har} + +Added in: v1.60tracing.startHar + +Start recording a HAR (HTTP Archive) of network activity in this context. The HAR file is written to disk when [tracing.stopHar()](/api/class-tracing.mdx#tracing-stop-har) is called, or when the returned [Disposable] is disposed. + +Only one HAR recording can be active at a time per [BrowserContext]. + +**Usage** + +```js +await context.tracing.startHar('trace.har'); +const page = await context.newPage(); +await page.goto('https://playwright.dev'); +await context.tracing.stopHar(); +``` + +**Arguments** +- `path` [string]# + + Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, the HAR is saved as a zip archive with response bodies attached as separate files. +- `options` [Object] *(optional)* + - `content` "omit" | "embed" | "attach" *(optional)*# + + Optional setting to control resource content management. If `omit` is specified, content is not persisted. If `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output files and to `embed` for all other file extensions. + - `mode` "full" | "minimal" *(optional)*# + + When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page, cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`. + - `resourcesDir` [string] *(optional)*# + + Only used together with `content: 'attach'`. When set, response bodies are placed in this directory instead of next to the HAR file. Not compatible with a `.zip` HAR file. + - `urlFilter` [string] | [RegExp] *(optional)*# + + A glob or regex pattern to filter requests that are stored in the HAR. Defaults to none. + +**Returns** +- [Promise]<[Disposable]># + +--- + ### stop {#tracing-stop} Added in: v1.12tracing.stop @@ -227,12 +267,24 @@ await tracing.stopChunk(options); **Returns** - [Promise]<[void]># +--- + +### stopHar {#tracing-stop-har} + +Added in: v1.60tracing.stopHar + +Stop HAR recording and save the HAR file to the path given to [tracing.startHar()](/api/class-tracing.mdx#tracing-start-har). + +**Usage** + +```js +await tracing.stopHar(); +``` + +**Returns** +- [Promise]<[void]># + -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -249,8 +301,6 @@ await tracing.stopChunk(options); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -280,6 +330,13 @@ await tracing.stopChunk(options); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-video.mdx b/nodejs/versioned_docs/version-stable/api/class-video.mdx index 8295e87b11..3029f4249a 100644 --- a/nodejs/versioned_docs/version-stable/api/class-video.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-video.mdx @@ -73,11 +73,6 @@ await video.saveAs(path); - [Promise]<[void]># -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -94,8 +89,6 @@ await video.saveAs(path); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -125,6 +118,13 @@ await video.saveAs(path); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-weberror.mdx b/nodejs/versioned_docs/version-stable/api/class-weberror.mdx index 3e0086c558..663283712f 100644 --- a/nodejs/versioned_docs/version-stable/api/class-weberror.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-weberror.mdx @@ -41,6 +41,30 @@ webError.error(); --- +### location {#web-error-location} + +Added in: v1.60webError.location + +**Usage** + +```js +webError.location(); +``` + +**Returns** +- [Object]# + - `url` [string] + + URL of the resource. + - `line` [number] + + 0-based line number in the resource. + - `column` [number] + + 0-based column number in the resource. + +--- + ### page {#web-error-page} Added in: v1.38webError.page @@ -57,11 +81,6 @@ webError.page(); - [null] | [Page]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -78,8 +97,6 @@ webError.page(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -109,6 +126,13 @@ webError.page(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-websocket.mdx b/nodejs/versioned_docs/version-stable/api/class-websocket.mdx index bfbd6aede6..a1c9ac4f04 100644 --- a/nodejs/versioned_docs/version-stable/api/class-websocket.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-websocket.mdx @@ -161,11 +161,6 @@ webSocket.on('socketerror', data => {}); - [string] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -182,8 +177,6 @@ webSocket.on('socketerror', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -213,6 +206,13 @@ webSocket.on('socketerror', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-websocketroute.mdx b/nodejs/versioned_docs/version-stable/api/class-websocketroute.mdx index 765a3dd687..ff7e89592d 100644 --- a/nodejs/versioned_docs/version-stable/api/class-websocketroute.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-websocketroute.mdx @@ -177,6 +177,30 @@ webSocketRoute.onMessage(handler); --- +### protocols {#web-socket-route-protocols} + +Added in: v1.60webSocketRoute.protocols + +The list of WebSocket subprotocols requested by the page, as passed via the second argument to the [`WebSocket` constructor](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket). Corresponds to the `Sec-WebSocket-Protocol` request header. + +Returns an empty array if no protocols were specified. + +**Usage** + +```js +await page.routeWebSocket('wss://example.com/ws', ws => { + if (ws.protocols().includes('chat.v2')) + ws.onMessage(message => ws.send(JSON.stringify({ version: 2, echo: message }))); + else + ws.close({ code: 1002, reason: 'Unsupported protocol' }); +}); +``` + +**Returns** +- [Array]<[string]># + +--- + ### send {#web-socket-route-send} Added in: v1.48webSocketRoute.send @@ -212,11 +236,6 @@ webSocketRoute.url(); - [string]# -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -233,8 +252,6 @@ webSocketRoute.url(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -264,6 +281,13 @@ webSocketRoute.url(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-worker.mdx b/nodejs/versioned_docs/version-stable/api/class-worker.mdx index 58022f1dd9..4246aced53 100644 --- a/nodejs/versioned_docs/version-stable/api/class-worker.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-worker.mdx @@ -173,11 +173,6 @@ worker.on('console', data => {}); - [ConsoleMessage] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -194,8 +189,6 @@ worker.on('console', data => {}); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -225,6 +218,13 @@ worker.on('console', data => {}); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/api/class-workerinfo.mdx b/nodejs/versioned_docs/version-stable/api/class-workerinfo.mdx index c16d699e10..a87e340847 100644 --- a/nodejs/versioned_docs/version-stable/api/class-workerinfo.mdx +++ b/nodejs/versioned_docs/version-stable/api/class-workerinfo.mdx @@ -85,11 +85,6 @@ workerInfo.workerIndex - [number] -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -106,8 +101,6 @@ workerInfo.workerIndex [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -137,6 +130,13 @@ workerInfo.workerIndex [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/aria-snapshots.mdx b/nodejs/versioned_docs/version-stable/aria-snapshots.mdx index 55a0b6b78e..949f13f84a 100644 --- a/nodejs/versioned_docs/version-stable/aria-snapshots.mdx +++ b/nodejs/versioned_docs/version-stable/aria-snapshots.mdx @@ -14,7 +14,7 @@ With Playwright's Snapshot testing you can assert the accessibility tree of a pa ```js await page.goto('https://playwright.dev/'); -await expect(page.getByRole('banner')).toMatchAriaSnapshot(` +await expect(page).toMatchAriaSnapshot(` - banner: - heading /Playwright enables reliable end-to-end/ [level=1] - link "Get started": @@ -90,7 +90,7 @@ These values are derived from ARIA attributes or calculated based on HTML semant ## Snapshot matching -The [expect(locator).toMatchAriaSnapshot()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the locator scope with a predefined aria snapshot template, helping validate the page's state against testing requirements. +The [expect(page).toMatchAriaSnapshot()](/api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the page with a predefined aria snapshot template, helping validate the page's state against testing requirements. You can also use [expect(locator).toMatchAriaSnapshot()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) to match a specific part of the page. For the following DOM: @@ -101,7 +101,7 @@ For the following DOM: You can match it using the following snapshot template: ```js -await expect(page.locator('body')).toMatchAriaSnapshot(` +await expect(page).toMatchAriaSnapshot(` - heading "title" `); ``` @@ -292,14 +292,14 @@ export default defineConfig({ }); ``` -### Using the `Locator.ariaSnapshot` method +### Using [page.ariaSnapshot()](/api/class-page.mdx#page-aria-snapshot) and [locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) -The [locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) method allows you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. +Methods [page.ariaSnapshot()](/api/class-page.mdx#page-aria-snapshot) and [locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) allow you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. **Example**: ```js -const snapshot = await page.locator('body').ariaSnapshot(); +const snapshot = await page.ariaSnapshot(); console.log(snapshot); ``` @@ -438,11 +438,6 @@ Commonly used ARIA attributes, like `checked`, `disabled`, `expanded`, `level`, ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -459,8 +454,6 @@ Commonly used ARIA attributes, like `checked`, `disabled`, `expanded`, `level`, [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -490,6 +483,13 @@ Commonly used ARIA attributes, like `checked`, `disabled`, `expanded`, `level`, [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/auth.mdx b/nodejs/versioned_docs/version-stable/auth.mdx index 7aa56ae0db..e72cb15a1e 100644 --- a/nodejs/versioned_docs/version-stable/auth.mdx +++ b/nodejs/versioned_docs/version-stable/auth.mdx @@ -527,11 +527,6 @@ test('not signed in test', async ({ page }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -548,8 +543,6 @@ test('not signed in test', async ({ page }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -579,6 +572,13 @@ test('not signed in test', async ({ page }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/best-practices.mdx b/nodejs/versioned_docs/version-stable/best-practices.mdx index fc192d432a..de1155cacd 100644 --- a/nodejs/versioned_docs/version-stable/best-practices.mdx +++ b/nodejs/versioned_docs/version-stable/best-practices.mdx @@ -187,7 +187,7 @@ await expect(page.getByText('welcome')).toBeVisible(); #### Local debugging -For local debugging we recommend you [debug your tests live in VSCode.](./getting-started-vscode.mdx#debugging-your-tests) by installing the [VS Code extension](./getting-started-vscode.mdx). You can run tests in debug mode by right-clicking on the line next to the test you want to run which will open a browser window and pause at where the breakpoint is set. +For local debugging we recommend you [debug your tests live in VS Code](./getting-started-vscode.mdx#debugging-your-tests) by installing the [VS Code extension](./getting-started-vscode.mdx). You can run tests in debug mode by right-clicking on the line next to the test you want to run which will open a browser window and pause at where the breakpoint is set. debugging tests in vscode @@ -511,11 +511,6 @@ await page.getByRole('link', { name: 'next page' }).click(); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -532,8 +527,6 @@ await page.getByRole('link', { name: 'next page' }).click(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -563,6 +556,13 @@ await page.getByRole('link', { name: 'next page' }).click(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/browser-contexts.mdx b/nodejs/versioned_docs/version-stable/browser-contexts.mdx index 172c978637..68875d839b 100644 --- a/nodejs/versioned_docs/version-stable/browser-contexts.mdx +++ b/nodejs/versioned_docs/version-stable/browser-contexts.mdx @@ -115,11 +115,6 @@ const userPage = await userContext.newPage(); -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -136,8 +131,6 @@ const userPage = await userContext.newPage(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -167,6 +160,13 @@ const userPage = await userContext.newPage(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/browsers.mdx b/nodejs/versioned_docs/version-stable/browsers.mdx index 9bd6531362..65d6086fdc 100644 --- a/nodejs/versioned_docs/version-stable/browsers.mdx +++ b/nodejs/versioned_docs/version-stable/browsers.mdx @@ -639,11 +639,6 @@ npx playwright uninstall --all ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -660,8 +655,6 @@ npx playwright uninstall --all [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -691,6 +684,13 @@ npx playwright uninstall --all [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/canary-releases.mdx b/nodejs/versioned_docs/version-stable/canary-releases.mdx index 3814d81baa..fbf6147c1a 100644 --- a/nodejs/versioned_docs/version-stable/canary-releases.mdx +++ b/nodejs/versioned_docs/version-stable/canary-releases.mdx @@ -41,11 +41,6 @@ npm install -D @playwright/test@next The stable and the `next` documentation is published on [playwright.dev](https://playwright.dev). To see the `next` documentation, press Shift on the keyboard `5` times. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -62,8 +57,6 @@ The stable and the `next` documentation is published on [playwright.dev](https:/ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -93,6 +86,13 @@ The stable and the `next` documentation is published on [playwright.dev](https:/ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/chrome-extensions.mdx b/nodejs/versioned_docs/version-stable/chrome-extensions.mdx index fe1ea383b0..2dd26e8a89 100644 --- a/nodejs/versioned_docs/version-stable/chrome-extensions.mdx +++ b/nodejs/versioned_docs/version-stable/chrome-extensions.mdx @@ -116,11 +116,6 @@ test('popup page', async ({ page, extensionId }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -137,8 +132,6 @@ test('popup page', async ({ page, extensionId }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -168,6 +161,13 @@ test('popup page', async ({ page, extensionId }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/ci-intro.mdx b/nodejs/versioned_docs/version-stable/ci-intro.mdx index 2026a35942..22764f5c8a 100644 --- a/nodejs/versioned_docs/version-stable/ci-intro.mdx +++ b/nodejs/versioned_docs/version-stable/ci-intro.mdx @@ -164,11 +164,6 @@ Artifacts like trace files, HTML reports or even the console logs contain inform - [Learn more about running tests on other CI providers](/ci.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -185,8 +180,6 @@ Artifacts like trace files, HTML reports or even the console logs contain inform [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -216,6 +209,13 @@ Artifacts like trace files, HTML reports or even the console logs contain inform [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/ci.mdx b/nodejs/versioned_docs/version-stable/ci.mdx index 86b60e015a..22c62aef55 100644 --- a/nodejs/versioned_docs/version-stable/ci.mdx +++ b/nodejs/versioned_docs/version-stable/ci.mdx @@ -506,11 +506,6 @@ xvfb-run npx playwright test ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -527,8 +522,6 @@ xvfb-run npx playwright test [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -558,6 +551,13 @@ xvfb-run npx playwright test [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/clock.mdx b/nodejs/versioned_docs/version-stable/clock.mdx index 5440269911..82b826a42c 100644 --- a/nodejs/versioned_docs/version-stable/clock.mdx +++ b/nodejs/versioned_docs/version-stable/clock.mdx @@ -177,11 +177,6 @@ await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:00:02 AM -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -198,8 +193,6 @@ await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:00:02 AM [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -229,6 +222,13 @@ await expect(page.getByTestId('current-time')).toHaveText('2/2/2024, 10:00:02 AM [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/codegen-intro.mdx b/nodejs/versioned_docs/version-stable/codegen-intro.mdx index e37916edf8..acf4aace2f 100644 --- a/nodejs/versioned_docs/version-stable/codegen-intro.mdx +++ b/nodejs/versioned_docs/version-stable/codegen-intro.mdx @@ -63,11 +63,6 @@ You can generate tests using emulation for specific viewports, devices, color sc - [See a trace of your tests](./trace-viewer-intro.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -84,8 +79,6 @@ You can generate tests using emulation for specific viewports, devices, color sc [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -115,6 +108,13 @@ You can generate tests using emulation for specific viewports, devices, color sc [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/codegen.mdx b/nodejs/versioned_docs/version-stable/codegen.mdx index 9378221c54..8d5742e3d5 100644 --- a/nodejs/versioned_docs/version-stable/codegen.mdx +++ b/nodejs/versioned_docs/version-stable/codegen.mdx @@ -219,11 +219,6 @@ const { chromium } = require('@playwright/test'); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -240,8 +235,6 @@ const { chromium } = require('@playwright/test'); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -271,6 +264,13 @@ const { chromium } = require('@playwright/test'); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/debug.mdx b/nodejs/versioned_docs/version-stable/debug.mdx index b68e2a69fe..9a2c2553bb 100644 --- a/nodejs/versioned_docs/version-stable/debug.mdx +++ b/nodejs/versioned_docs/version-stable/debug.mdx @@ -316,11 +316,6 @@ await chromium.launch({ headless: false, slowMo: 100 }); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -337,8 +332,6 @@ await chromium.launch({ headless: false, slowMo: 100 }); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -368,6 +361,13 @@ await chromium.launch({ headless: false, slowMo: 100 }); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/dialogs.mdx b/nodejs/versioned_docs/version-stable/dialogs.mdx index 83fb0d9ecf..5aa3902aac 100644 --- a/nodejs/versioned_docs/version-stable/dialogs.mdx +++ b/nodejs/versioned_docs/version-stable/dialogs.mdx @@ -69,11 +69,6 @@ await page.waitForFunction('window.waitForPrintDialog'); This will wait for the print dialog to be opened after the button is clicked. Make sure to evaluate the script before clicking the button / after the page is loaded. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -90,8 +85,6 @@ This will wait for the print dialog to be opened after the button is clicked. Ma [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -121,6 +114,13 @@ This will wait for the print dialog to be opened after the button is clicked. Ma [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/docker.mdx b/nodejs/versioned_docs/version-stable/docker.mdx index b8790d8ce0..0cc4806c78 100644 --- a/nodejs/versioned_docs/version-stable/docker.mdx +++ b/nodejs/versioned_docs/version-stable/docker.mdx @@ -168,11 +168,6 @@ RUN npx -y playwright@1.59.1 install --with-deps ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -189,8 +184,6 @@ RUN npx -y playwright@1.59.1 install --with-deps [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -220,6 +213,13 @@ RUN npx -y playwright@1.59.1 install --with-deps [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/downloads.mdx b/nodejs/versioned_docs/version-stable/downloads.mdx index 387f92c8ae..cac130fef1 100644 --- a/nodejs/versioned_docs/version-stable/downloads.mdx +++ b/nodejs/versioned_docs/version-stable/downloads.mdx @@ -45,11 +45,6 @@ For uploading files, see the [uploading files](./input.mdx#upload-files) section ::: -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -66,8 +61,6 @@ For uploading files, see the [uploading files](./input.mdx#upload-files) section [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -97,6 +90,13 @@ For uploading files, see the [uploading files](./input.mdx#upload-files) section [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/emulation.mdx b/nodejs/versioned_docs/version-stable/emulation.mdx index 3b46066eb3..36124bf7f9 100644 --- a/nodejs/versioned_docs/version-stable/emulation.mdx +++ b/nodejs/versioned_docs/version-stable/emulation.mdx @@ -606,11 +606,6 @@ const context = await browser.newContext({ -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -627,8 +622,6 @@ const context = await browser.newContext({ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -658,6 +651,13 @@ const context = await browser.newContext({ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/evaluating.mdx b/nodejs/versioned_docs/version-stable/evaluating.mdx index 664b85c8fe..6ed0e592a2 100644 --- a/nodejs/versioned_docs/version-stable/evaluating.mdx +++ b/nodejs/versioned_docs/version-stable/evaluating.mdx @@ -138,11 +138,6 @@ test.beforeEach(async ({ page }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -159,8 +154,6 @@ test.beforeEach(async ({ page }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -190,6 +183,13 @@ test.beforeEach(async ({ page }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/events.mdx b/nodejs/versioned_docs/version-stable/events.mdx index 3619bfaf26..22f3b85dbb 100644 --- a/nodejs/versioned_docs/version-stable/events.mdx +++ b/nodejs/versioned_docs/version-stable/events.mdx @@ -58,11 +58,6 @@ await page.evaluate("prompt('Enter a number:')"); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -79,8 +74,6 @@ await page.evaluate("prompt('Enter a number:')"); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -110,6 +103,13 @@ await page.evaluate("prompt('Enter a number:')"); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/extensibility.mdx b/nodejs/versioned_docs/version-stable/extensibility.mdx index d5fbdc99d3..91bc9af60b 100644 --- a/nodejs/versioned_docs/version-stable/extensibility.mdx +++ b/nodejs/versioned_docs/version-stable/extensibility.mdx @@ -65,11 +65,6 @@ test('selector engine test', async ({ page }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -86,8 +81,6 @@ test('selector engine test', async ({ page }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -117,6 +110,13 @@ test('selector engine test', async ({ page }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/frames.mdx b/nodejs/versioned_docs/version-stable/frames.mdx index f4440f2952..9ccad48c16 100644 --- a/nodejs/versioned_docs/version-stable/frames.mdx +++ b/nodejs/versioned_docs/version-stable/frames.mdx @@ -34,11 +34,6 @@ await frame.fill('#username-input', 'John'); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -55,8 +50,6 @@ await frame.fill('#username-input', 'John'); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -86,6 +79,13 @@ await frame.fill('#username-input', 'John'); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/getting-started-cli.mdx b/nodejs/versioned_docs/version-stable/getting-started-cli.mdx index 4c3ad41b7f..0896a54e6c 100644 --- a/nodejs/versioned_docs/version-stable/getting-started-cli.mdx +++ b/nodejs/versioned_docs/version-stable/getting-started-cli.mdx @@ -166,7 +166,8 @@ playwright-cli tab-close [index] # close a tab ### Network ```bash -playwright-cli network # list network requests since page load +playwright-cli requests # list network requests since page load +playwright-cli request # show full details of a single request playwright-cli route [opts] # mock network requests playwright-cli route-list # list active routes playwright-cli unroute [pattern] # remove routes @@ -281,7 +282,7 @@ The CLI also loads `.playwright/cli.config.json` automatically if present. The c Connect to your existing browser tabs instead of launching a new browser: ```bash -playwright-cli open --extension +playwright-cli attach --extension ``` This requires the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md) to be installed. @@ -307,11 +308,6 @@ This requires the [Playwright Extension](https://github.com/microsoft/playwright - [Learn more about the Trace Viewer](./trace-viewer.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -328,8 +324,6 @@ This requires the [Playwright Extension](https://github.com/microsoft/playwright [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -359,6 +353,13 @@ This requires the [Playwright Extension](https://github.com/microsoft/playwright [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/getting-started-mcp.mdx b/nodejs/versioned_docs/version-stable/getting-started-mcp.mdx index ebbdd3736b..67b32c0d35 100644 --- a/nodejs/versioned_docs/version-stable/getting-started-mcp.mdx +++ b/nodejs/versioned_docs/version-stable/getting-started-mcp.mdx @@ -105,7 +105,7 @@ Playwright MCP provides tools for all common browser interactions: ### Running Playwright code -For complex interactions that go beyond individual tool calls, use the `browser_run_code` tool to execute Playwright scripts directly: +For complex interactions that go beyond individual tool calls, use the `browser_run_code_unsafe` tool to execute Playwright scripts directly. This tool runs arbitrary JavaScript in the Playwright server process and is RCE-equivalent — only enable it for trusted MCP clients: ```txt Run this Playwright code to verify the todo count: @@ -172,7 +172,7 @@ Supported values: `chrome`, `firefox`, `webkit`, `msedge`. ### User profile Playwright MCP supports three profile modes: -- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-profile` in your platform's cache directory. Override with `--user-data-dir`. +- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-{workspace-hash}` in your platform's cache directory, so different projects get separate profiles automatically. Override with `--user-data-dir`. - **Isolated**: Each session starts fresh. Pass `--isolated` to enable. You can load initial state with `--storage-state`. - **Browser extension**: Connect to your existing browser tabs with the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md). Pass `--extension` to enable. @@ -226,11 +226,6 @@ Then point your MCP client to the HTTP endpoint: - [Learn more about the Trace Viewer](./trace-viewer.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -247,8 +242,6 @@ Then point your MCP client to the HTTP endpoint: [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -278,6 +271,13 @@ Then point your MCP client to the HTTP endpoint: [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/getting-started-vscode.mdx b/nodejs/versioned_docs/version-stable/getting-started-vscode.mdx index f71f0dbffd..748565b2ce 100644 --- a/nodejs/versioned_docs/version-stable/getting-started-vscode.mdx +++ b/nodejs/versioned_docs/version-stable/getting-started-vscode.mdx @@ -144,11 +144,6 @@ If you have multiple `playwright.config.ts` files, you can switch between them u - [Learn more about the Trace Viewer](./trace-viewer.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -165,8 +160,6 @@ If you have multiple `playwright.config.ts` files, you can switch between them u [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -196,6 +189,13 @@ If you have multiple `playwright.config.ts` files, you can switch between them u [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/handles.mdx b/nodejs/versioned_docs/version-stable/handles.mdx index a4ff21b40c..509865f5d8 100644 --- a/nodejs/versioned_docs/version-stable/handles.mdx +++ b/nodejs/versioned_docs/version-stable/handles.mdx @@ -118,11 +118,6 @@ await locator.click(); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -139,8 +134,6 @@ await locator.click(); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -170,6 +163,13 @@ await locator.click(); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/input.mdx b/nodejs/versioned_docs/version-stable/input.mdx index 54b7385a0b..2e9006bb32 100644 --- a/nodejs/versioned_docs/version-stable/input.mdx +++ b/nodejs/versioned_docs/version-stable/input.mdx @@ -265,11 +265,6 @@ await page.getByTestId('scrolling-container').evaluate(e => e.scrollTop += 100); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -286,8 +281,6 @@ await page.getByTestId('scrolling-container').evaluate(e => e.scrollTop += 100); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -317,6 +310,13 @@ await page.getByTestId('scrolling-container').evaluate(e => e.scrollTop += 100); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/intro.mdx b/nodejs/versioned_docs/version-stable/intro.mdx index 49570bca51..93ff7efafd 100644 --- a/nodejs/versioned_docs/version-stable/intro.mdx +++ b/nodejs/versioned_docs/version-stable/intro.mdx @@ -260,7 +260,7 @@ pnpm exec playwright --version ## System requirements - Node.js: latest 20.x, 22.x or 24.x. - Windows 11+, Windows Server 2019+ or Windows Subsystem for Linux (WSL). -- macOS 14 (Ventura) or later. +- macOS 14 (Sonoma) or later. - Debian 12 / 13, Ubuntu 22.04 / 24.04 (x86-64 or arm64). ## What's next @@ -270,11 +270,6 @@ pnpm exec playwright --version - [View a trace of your tests](./trace-viewer-intro.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -291,8 +286,6 @@ pnpm exec playwright --version [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -322,6 +315,13 @@ pnpm exec playwright --version [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/languages.mdx b/nodejs/versioned_docs/version-stable/languages.mdx index b00e2473ea..e7fdbeb2ac 100644 --- a/nodejs/versioned_docs/version-stable/languages.mdx +++ b/nodejs/versioned_docs/version-stable/languages.mdx @@ -35,11 +35,6 @@ Playwright for .NET comes with MSTest, NUnit, xUnit, and xUnit v3 [base classes] * [GitHub repo](https://github.com/microsoft/playwright-dotnet) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -56,8 +51,6 @@ Playwright for .NET comes with MSTest, NUnit, xUnit, and xUnit v3 [base classes] [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -87,6 +80,13 @@ Playwright for .NET comes with MSTest, NUnit, xUnit, and xUnit v3 [base classes] [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/library.mdx b/nodejs/versioned_docs/version-stable/library.mdx index bbf08defeb..782140966b 100644 --- a/nodejs/versioned_docs/version-stable/library.mdx +++ b/nodejs/versioned_docs/version-stable/library.mdx @@ -422,11 +422,6 @@ let page: import('playwright').Page; ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -443,8 +438,6 @@ let page: import('playwright').Page; [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -474,6 +467,13 @@ let page: import('playwright').Page; [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/locators.mdx b/nodejs/versioned_docs/version-stable/locators.mdx index 24873319b8..ef24eb6d5e 100644 --- a/nodejs/versioned_docs/version-stable/locators.mdx +++ b/nodejs/versioned_docs/version-stable/locators.mdx @@ -916,11 +916,6 @@ You can explicitly opt-out from strictness check by telling Playwright which ele For less commonly used locators, look at the [other locators](./other-locators.mdx) guide. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -937,8 +932,6 @@ For less commonly used locators, look at the [other locators](./other-locators.m [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -968,6 +961,13 @@ For less commonly used locators, look at the [other locators](./other-locators.m [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/mock-browser.mdx b/nodejs/versioned_docs/version-stable/mock-browser.mdx index d0a23e70f2..e9b23f03df 100644 --- a/nodejs/versioned_docs/version-stable/mock-browser.mdx +++ b/nodejs/versioned_docs/version-stable/mock-browser.mdx @@ -165,11 +165,6 @@ test('update battery status (no golden)', async ({ page }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -186,8 +181,6 @@ test('update battery status (no golden)', async ({ page }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -217,6 +210,13 @@ test('update battery status (no golden)', async ({ page }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/mock.mdx b/nodejs/versioned_docs/version-stable/mock.mdx index f106550709..84aadd0a5e 100644 --- a/nodejs/versioned_docs/version-stable/mock.mdx +++ b/nodejs/versioned_docs/version-stable/mock.mdx @@ -178,11 +178,6 @@ await page.routeWebSocket('wss://example.com/ws', ws => { For more details, see [WebSocketRoute]. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -199,8 +194,6 @@ For more details, see [WebSocketRoute]. [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -230,6 +223,13 @@ For more details, see [WebSocketRoute]. [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/navigations.mdx b/nodejs/versioned_docs/version-stable/navigations.mdx index b5d03cf85e..0091fa57d2 100644 --- a/nodejs/versioned_docs/version-stable/navigations.mdx +++ b/nodejs/versioned_docs/version-stable/navigations.mdx @@ -77,11 +77,6 @@ Playwright splits the process of showing a new document in a page into **navigat - page executes dynamically loaded scripts -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -98,8 +93,6 @@ Playwright splits the process of showing a new document in a page into **navigat [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -129,6 +122,13 @@ Playwright splits the process of showing a new document in a page into **navigat [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/network.mdx b/nodejs/versioned_docs/version-stable/network.mdx index d090317087..c4ad75e968 100644 --- a/nodejs/versioned_docs/version-stable/network.mdx +++ b/nodejs/versioned_docs/version-stable/network.mdx @@ -342,11 +342,6 @@ It might be that you are using a mock tool such as Mock Service Worker (MSW). Wh If you're interested in not solely using Service Workers for testing and network mocking, but in routing and listening for requests made by Service Workers themselves, please see [this guide](./service-workers.mdx). -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -363,8 +358,6 @@ If you're interested in not solely using Service Workers for testing and network [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -394,6 +387,13 @@ If you're interested in not solely using Service Workers for testing and network [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/other-locators.mdx b/nodejs/versioned_docs/version-stable/other-locators.mdx index 6e54e48da4..f00870cbe1 100644 --- a/nodejs/versioned_docs/version-stable/other-locators.mdx +++ b/nodejs/versioned_docs/version-stable/other-locators.mdx @@ -405,11 +405,6 @@ By default, chained selectors resolve to an element queried by the last selector For example, `css=article >> text=Hello` captures the element with the text `Hello`, and `*css=article >> text=Hello` (note the `*`) captures the `article` element that contains some element with the text `Hello`. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -426,8 +421,6 @@ For example, `css=article >> text=Hello` captures the element with the text `Hel [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -457,6 +450,13 @@ For example, `css=article >> text=Hello` captures the element with the text `Hel [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/pages.mdx b/nodejs/versioned_docs/version-stable/pages.mdx index 775aebe047..dd32cb3b6c 100644 --- a/nodejs/versioned_docs/version-stable/pages.mdx +++ b/nodejs/versioned_docs/version-stable/pages.mdx @@ -91,11 +91,6 @@ page.on('popup', async popup => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -112,8 +107,6 @@ page.on('popup', async popup => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -143,6 +136,13 @@ page.on('popup', async popup => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/pom.mdx b/nodejs/versioned_docs/version-stable/pom.mdx index 0e69a5bd68..1ea2dc8144 100644 --- a/nodejs/versioned_docs/version-stable/pom.mdx +++ b/nodejs/versioned_docs/version-stable/pom.mdx @@ -167,11 +167,6 @@ await expect(playwrightDev.tocList).toHaveText([ -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -188,8 +183,6 @@ await expect(playwrightDev.tocList).toHaveText([ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -219,6 +212,13 @@ await expect(playwrightDev.tocList).toHaveText([ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/protractor.mdx b/nodejs/versioned_docs/version-stable/protractor.mdx index cc501e2e39..ab7d9bd140 100644 --- a/nodejs/versioned_docs/version-stable/protractor.mdx +++ b/nodejs/versioned_docs/version-stable/protractor.mdx @@ -167,11 +167,6 @@ Learn more about Playwright Test runner: [`waitForAngular`]: https://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.waitForAngular -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -188,8 +183,6 @@ Learn more about Playwright Test runner: [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -219,6 +212,13 @@ Learn more about Playwright Test runner: [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/puppeteer.mdx b/nodejs/versioned_docs/version-stable/puppeteer.mdx index d4674bee60..de630d0835 100644 --- a/nodejs/versioned_docs/version-stable/puppeteer.mdx +++ b/nodejs/versioned_docs/version-stable/puppeteer.mdx @@ -172,11 +172,6 @@ Learn more about Playwright Test runner: - [Auto-waiting](./actionability) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -193,8 +188,6 @@ Learn more about Playwright Test runner: [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -224,6 +217,13 @@ Learn more about Playwright Test runner: [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/release-notes.mdx b/nodejs/versioned_docs/version-stable/release-notes.mdx index 6775aa9977..67ee1ffec0 100644 --- a/nodejs/versioned_docs/version-stable/release-notes.mdx +++ b/nodejs/versioned_docs/version-stable/release-notes.mdx @@ -9,6 +9,102 @@ import HTMLCard from '@site/src/components/HTMLCard'; import LiteYouTube from '@site/src/components/LiteYouTube'; +## Version 1.60 + +### 🌐 HAR recording on Tracing + +[tracing.startHar()](/api/class-tracing.mdx#tracing-start-har) / [tracing.stopHar()](/api/class-tracing.mdx#tracing-stop-har) expose HAR recording as a first-class tracing API, with the same `content`, `mode` and `urlFilter` options as `recordHar`. The returned [Disposable] makes it easy to scope a recording with `await using`: + +```js +await using har = await context.tracing.startHar('trace.har'); +const page = await context.newPage(); +await page.goto('https://playwright.dev'); +// HAR is finalized when `har` goes out of scope. +``` + +### 🪝 Drop API + +New [locator.drop()](/api/class-locator.mdx#locator-drop) simulates an external drag-and-drop of files or clipboard-like data onto an element. Playwright dispatches `dragenter`, `dragover`, and `drop` with a synthetic [DataTransfer] in the page context — works cross-browser and is great for testing upload zones: + +```js +await page.locator('#dropzone').drop({ + files: { name: 'note.txt', mimeType: 'text/plain', buffer: Buffer.from('hello') }, +}); + +await page.locator('#dropzone').drop({ + data: { + 'text/plain': 'hello world', + 'text/uri-list': 'https://example.com', + }, +}); +``` + +### 🎯 Aria snapshots +- [expect(page).toMatchAriaSnapshot()](/api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot) now works on a [Page], in addition to a [Locator] — equivalent to asserting against `page.locator('body')`. +- New `boxes` option on [locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) / [page.ariaSnapshot()](/api/class-page.mdx#page-aria-snapshot) appends each element's bounding box as `[box=x,y,width,height]`, useful for AI consumption. + +### 🛑 test.abort() + +New [test.abort()](/api/class-test.mdx#test-abort) aborts the currently running test from a fixture, hook, or route handler with an optional message. Use it when you have detected an unrecoverable misuse and want to fail the test right away: + +```js +test('does not publish to the shared page', async ({ page }) => { + await page.route('**/publish', route => { + test.abort('Tests must not publish to the shared page. Use the `clone` option.'); + return route.abort(); + }); + // ... +}); +``` + +### New APIs + +#### Browser, Context and Page +- Event [browser.on('context')](/api/class-browser.mdx#browser-event-context) — fired when a new context is created on the browser. +- [BrowserContext] now mirrors lifecycle events from its pages: [browserContext.on('download')](/api/class-browsercontext.mdx#browser-context-event-download), [browserContext.on('frameattached')](/api/class-browsercontext.mdx#browser-context-event-frame-attached), [browserContext.on('framedetached')](/api/class-browsercontext.mdx#browser-context-event-frame-detached), [browserContext.on('framenavigated')](/api/class-browsercontext.mdx#browser-context-event-frame-navigated), [browserContext.on('pageclose')](/api/class-browsercontext.mdx#browser-context-event-page-close), [browserContext.on('pageload')](/api/class-browsercontext.mdx#browser-context-event-page-load). + +#### Locators and Assertions +- New option `description` in [page.getByRole()](/api/class-page.mdx#page-get-by-role) / [locator.getByRole()](/api/class-locator.mdx#locator-get-by-role) / [frame.getByRole()](/api/class-frame.mdx#frame-get-by-role) / [frameLocator.getByRole()](/api/class-framelocator.mdx#frame-locator-get-by-role) for matching the [accessible description](https://www.w3.org/TR/wai-aria-1.2/#dfn-accessible-description). +- New option `pseudo` in [expect(locator).toHaveCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) reads computed styles from `::before` or `::after`. +- New option `style` in [locator.highlight()](/api/class-locator.mdx#locator-highlight) applies extra inline CSS to the highlight overlay, plus new [page.hideHighlight()](/api/class-page.mdx#page-hide-highlight) to clear all highlights. + +#### Network +- [webSocketRoute.protocols()](/api/class-websocketroute.mdx#web-socket-route-protocols) returns the WebSocket subprotocols requested by the page. +- New option `noDefaults` in [browserType.connectOverCDP()](/api/class-browsertype.mdx#browser-type-connect-over-cdp) disables Playwright's default overrides on the default context (download behavior, focus emulation, media emulation), so attaching to a user's daily-driver browser doesn't disturb its state. + +#### Errors and Reporting +- New [webError.location()](/api/class-weberror.mdx#web-error-location) mirrors [consoleMessage.location()](/api/class-consolemessage.mdx#console-message-location). +- [consoleMessage.location()](/api/class-consolemessage.mdx#console-message-location) now exposes `line` / `column` properties (`lineNumber` / `columnNumber` are deprecated). +- New [testInfoError.errorContext](/api/class-testinfoerror.mdx#test-info-error-error-context) surfaces additional diagnostic context, such as the aria snapshot of the receiver at the time of an `expect(...)` matcher failure. +- [reporter.onError()](/api/class-reporter.mdx#reporter-on-error) now receives a `workerInfo` argument with details about the worker for fixture teardown errors. + +#### Test runner +- New `{testFileBaseName}` token in [testProject.snapshotPathTemplate](/api/class-testproject.mdx#test-project-snapshot-path-template) — file name without extension. +- Test runner now errors when a config tries to override a non-option fixture, and rejects `workers: 0` or negative values. + +### 🛠️ Other improvements +- HTML reporter: + - `npx playwright show-report` accepts `.zip` files directly — no need to unzip first. + - Steps that contain attachments inside nested children show an indicator on the parent step. + - The `repeatEachIndex` is shown in the test header when non-zero. +- Trace Viewer adds a pretty-print toggle for JSON / form request and response bodies in the network details panel. + +### Breaking Changes ⚠️ +- Removed long-deprecated APIs: + - `Locator.ariaRef()` — use the standard [locator.ariaSnapshot()](/api/class-locator.mdx#locator-aria-snapshot) pipeline. + - `handle` option on `BrowserContext.exposeBinding` and `Page.exposeBinding`. + - `logger` option on `BrowserType.connect` and `BrowserType.connectOverCDP` — use [tracing](./trace-viewer.mdx) instead. + - Context options `videosPath` / `videoSize` — use `recordVideo` instead. + +### Browser Versions +- Chromium 148.0.7778.96 +- Mozilla Firefox 150.0.2 +- WebKit 26.4 + +This version was also tested against the following stable channels: +- Google Chrome 147 +- Microsoft Edge 147 + ## Version 1.59 ### 🎬 Screencast @@ -3439,11 +3535,6 @@ This version of Playwright was also tested against the following stable channels - WebKit 14.1 -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -3460,8 +3551,6 @@ This version of Playwright was also tested against the following stable channels [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -3491,6 +3580,13 @@ This version of Playwright was also tested against the following stable channels [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/running-tests.mdx b/nodejs/versioned_docs/version-stable/running-tests.mdx index 6db1b2d12d..d74a38f338 100644 --- a/nodejs/versioned_docs/version-stable/running-tests.mdx +++ b/nodejs/versioned_docs/version-stable/running-tests.mdx @@ -172,11 +172,6 @@ You can filter and search for tests as well as click on each test to see the tes - [Run your tests on CI with GitHub Actions](./ci-intro.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -193,8 +188,6 @@ You can filter and search for tests as well as click on each test to see the tes [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -224,6 +217,13 @@ You can filter and search for tests as well as click on each test to see the tes [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/screenshots.mdx b/nodejs/versioned_docs/version-stable/screenshots.mdx index 791de90eac..eb0e4840e1 100644 --- a/nodejs/versioned_docs/version-stable/screenshots.mdx +++ b/nodejs/versioned_docs/version-stable/screenshots.mdx @@ -42,11 +42,6 @@ await page.locator('.header').screenshot({ path: 'screenshot.png' }); ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -63,8 +58,6 @@ await page.locator('.header').screenshot({ path: 'screenshot.png' }); [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -94,6 +87,13 @@ await page.locator('.header').screenshot({ path: 'screenshot.png' }); [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/selenium-grid.mdx b/nodejs/versioned_docs/version-stable/selenium-grid.mdx index fde20bc020..2782a8c2eb 100644 --- a/nodejs/versioned_docs/version-stable/selenium-grid.mdx +++ b/nodejs/versioned_docs/version-stable/selenium-grid.mdx @@ -124,11 +124,6 @@ Internally, Playwright connects to the browser using [Chrome DevTools Protocol]( This means that Selenium 3 is supported in a best-effort manner, where Playwright tries to connect to the grid node directly. Grid nodes must be directly accessible from the machine that runs Playwright. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -145,8 +140,6 @@ This means that Selenium 3 is supported in a best-effort manner, where Playwrigh [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -176,6 +169,13 @@ This means that Selenium 3 is supported in a best-effort manner, where Playwrigh [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/service-workers.mdx b/nodejs/versioned_docs/version-stable/service-workers.mdx index 8e8be7721b..07dc916dc5 100644 --- a/nodejs/versioned_docs/version-stable/service-workers.mdx +++ b/nodejs/versioned_docs/version-stable/service-workers.mdx @@ -130,11 +130,6 @@ await context.route('**', async route => { Requests for updated Service Worker main script code currently cannot be routed (https://github.com/microsoft/playwright/issues/14711). -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -151,8 +146,6 @@ Requests for updated Service Worker main script code currently cannot be routed [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -182,6 +175,13 @@ Requests for updated Service Worker main script code currently cannot be routed [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-agents.mdx b/nodejs/versioned_docs/version-stable/test-agents.mdx index 3279a18675..9fbf5da0d6 100644 --- a/nodejs/versioned_docs/version-stable/test-agents.mdx +++ b/nodejs/versioned_docs/version-stable/test-agents.mdx @@ -254,11 +254,6 @@ Generated Playwright tests, aligned one-to-one with specs wherever feasible. Seed tests provide a ready-to-use `page` context to bootstrap execution. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -275,8 +270,6 @@ Seed tests provide a ready-to-use `page` context to bootstrap execution. [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -306,6 +299,13 @@ Seed tests provide a ready-to-use `page` context to bootstrap execution. [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-annotations.mdx b/nodejs/versioned_docs/version-stable/test-annotations.mdx index cda2677447..91bfc3e6c2 100644 --- a/nodejs/versioned_docs/version-stable/test-annotations.mdx +++ b/nodejs/versioned_docs/version-stable/test-annotations.mdx @@ -318,11 +318,6 @@ test('example test', async ({ page, browser }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -339,8 +334,6 @@ test('example test', async ({ page, browser }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -370,6 +363,13 @@ test('example test', async ({ page, browser }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-assertions.mdx b/nodejs/versioned_docs/version-stable/test-assertions.mdx index 696e245ee8..43ff0f9c57 100644 --- a/nodejs/versioned_docs/version-stable/test-assertions.mdx +++ b/nodejs/versioned_docs/version-stable/test-assertions.mdx @@ -56,6 +56,7 @@ The following assertions will retry until the assertion passes, or the assertion | [await expect(locator).toHaveValue()](./api/class-locatorassertions.mdx#locator-assertions-to-have-value) | Input has a value | | [await expect(locator).toHaveValues()](./api/class-locatorassertions.mdx#locator-assertions-to-have-values) | Select has options selected | | [await expect(locator).toMatchAriaSnapshot()](./api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) | Element matches the Aria snapshot | +| [await expect(page).toMatchAriaSnapshot()](./api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot) | Page matches the Aria snapshot | | [await expect(page).toHaveScreenshot()](./api/class-pageassertions.mdx#page-assertions-to-have-screenshot-1) | Page has a screenshot | | [await expect(page).toHaveTitle()](./api/class-pageassertions.mdx#page-assertions-to-have-title) | Page has a title | | [await expect(page).toHaveURL()](./api/class-pageassertions.mdx#page-assertions-to-have-url) | Page has a URL | @@ -360,11 +361,6 @@ test('passes', async ({ database }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -381,8 +377,6 @@ test('passes', async ({ database }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -412,6 +406,13 @@ test('passes', async ({ database }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-cli.mdx b/nodejs/versioned_docs/version-stable/test-cli.mdx index 59af546ae6..c15c943373 100644 --- a/nodejs/versioned_docs/version-stable/test-cli.mdx +++ b/nodejs/versioned_docs/version-stable/test-cli.mdx @@ -226,7 +226,7 @@ npx playwright install --with-deps | Option | Description | | :--- | :--- | -| `--dry-run` | Don't perform installation, just print information | +| `--dry-run` | Don't modify the system. On Linux, simulates the install via apt-get and exits with a non-zero code if any required packages are missing — useful for non-interactive verification scripts. On Windows, prints the install command. | ## Generation & Debugging Tools @@ -330,11 +330,6 @@ npx playwright clear-cache ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -351,8 +346,6 @@ npx playwright clear-cache [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -382,6 +375,13 @@ npx playwright clear-cache [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-components.mdx b/nodejs/versioned_docs/version-stable/test-components.mdx index 7ff9e136d4..dc9c1f6922 100644 --- a/nodejs/versioned_docs/version-stable/test-components.mdx +++ b/nodejs/versioned_docs/version-stable/test-components.mdx @@ -253,6 +253,29 @@ Here is how component testing works: Playwright is using [Vite](https://vitejs.dev/) to create the components bundle and serve it. +## Best practices and pitfalls + +Component tests are most reliable when they embrace the fact that the test runs in Node.js while the mounted component runs in the browser. + +### Prefer mounting inside each test + +Keep `mount()` close to the assertions that use it. Mounting in `beforeEach` makes it harder to see which component state belongs to which test and tends to hide accidental coupling between tests. + +```js +test('renders the product name', async ({ mount }) => { + const component = await mount(); + await expect(component).toContainText('Playwright'); +}); +``` + +### Module mocks do not cross the Node/browser boundary + +Module-level mocks such as `vi.mock()` or `jest.mock()` run in the test process. The component bundle runs in the browser, so those mocks do not automatically affect what the component imports at runtime. Prefer passing test-specific behavior through [`hooksConfig`](#hooks) and configuring it in `playwright/index.{js,ts,jsx,tsx}` with `beforeMount`. + +### Reset browser state when a component depends on globals + +Component testing may reuse the browser `context` and `page` between tests as a performance optimization. If a component depends on global browser state such as `localStorage`, cookies, singleton services, or router state, reset that state in your test setup or in [`beforeMount`](#hooks) so each test starts from a known baseline. + ## API reference ### props @@ -758,11 +781,6 @@ test('override initialState ', async ({ mount }) => { Accessing a component's internal methods or its instance within test code is neither recommended nor supported. Instead, focus on observing and interacting with the component from a user's perspective, typically by clicking or verifying if something is visible on the page. Tests become less fragile and more valuable when they avoid interacting with internal implementation details, such as the component instance or its methods. Keep in mind that if a test fails when run from a user’s perspective, it likely means the automated test has uncovered a genuine bug in your code. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -779,8 +797,6 @@ Accessing a component's internal methods or its instance within test code is nei [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -810,6 +826,13 @@ Accessing a component's internal methods or its instance within test code is nei [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-configuration.mdx b/nodejs/versioned_docs/version-stable/test-configuration.mdx index d8280dcd18..1ee6d9899a 100644 --- a/nodejs/versioned_docs/version-stable/test-configuration.mdx +++ b/nodejs/versioned_docs/version-stable/test-configuration.mdx @@ -154,11 +154,6 @@ export default defineConfig({ | [expect(value).toMatchSnapshot()](/api/class-snapshotassertions.mdx#snapshot-assertions-to-match-snapshot-1)| Configuration for the `expect(locator).toMatchSnapshot()` method.| -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -175,8 +170,6 @@ export default defineConfig({ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -206,6 +199,13 @@ export default defineConfig({ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-fixtures.mdx b/nodejs/versioned_docs/version-stable/test-fixtures.mdx index f5cfbc9d1d..b1e73cfee4 100644 --- a/nodejs/versioned_docs/version-stable/test-fixtures.mdx +++ b/nodejs/versioned_docs/version-stable/test-fixtures.mdx @@ -857,11 +857,6 @@ test('basic', async ({ }) => { Note that the fixtures will still run once per [worker process](./test-parallel.mdx#worker-processes), but you don't need to redeclare them in every file. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -878,8 +873,6 @@ Note that the fixtures will still run once per [worker process](./test-parallel. [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -909,6 +902,13 @@ Note that the fixtures will still run once per [worker process](./test-parallel. [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-global-setup-teardown.mdx b/nodejs/versioned_docs/version-stable/test-global-setup-teardown.mdx index da75f61b92..fef86f7f8a 100644 --- a/nodejs/versioned_docs/version-stable/test-global-setup-teardown.mdx +++ b/nodejs/versioned_docs/version-stable/test-global-setup-teardown.mdx @@ -275,11 +275,6 @@ export default globalSetup; ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -296,8 +291,6 @@ export default globalSetup; [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -327,6 +320,13 @@ export default globalSetup; [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-parallel.mdx b/nodejs/versioned_docs/version-stable/test-parallel.mdx index 4f03daf798..6882dea254 100644 --- a/nodejs/versioned_docs/version-stable/test-parallel.mdx +++ b/nodejs/versioned_docs/version-stable/test-parallel.mdx @@ -283,11 +283,6 @@ Do not define your tests directly in a helper file. This could lead to unexpecte ::: -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -304,8 +299,6 @@ Do not define your tests directly in a helper file. This could lead to unexpecte [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -335,6 +328,13 @@ Do not define your tests directly in a helper file. This could lead to unexpecte [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-parameterize.mdx b/nodejs/versioned_docs/version-stable/test-parameterize.mdx index 0963a89200..9c52a721da 100644 --- a/nodejs/versioned_docs/version-stable/test-parameterize.mdx +++ b/nodejs/versioned_docs/version-stable/test-parameterize.mdx @@ -420,11 +420,6 @@ for (const record of records) { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -441,8 +436,6 @@ for (const record of records) { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -472,6 +465,13 @@ for (const record of records) { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-projects.mdx b/nodejs/versioned_docs/version-stable/test-projects.mdx index f672d2783c..415d1d4d62 100644 --- a/nodejs/versioned_docs/version-stable/test-projects.mdx +++ b/nodejs/versioned_docs/version-stable/test-projects.mdx @@ -227,11 +227,6 @@ You can pass `--no-deps` command line option to ignore all dependencies and tear Projects can be also used to parametrize tests with your custom configuration - take a look at [this separate guide](./test-parameterize.mdx#parameterized-projects). -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -248,8 +243,6 @@ Projects can be also used to parametrize tests with your custom configuration - [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -279,6 +272,13 @@ Projects can be also used to parametrize tests with your custom configuration - [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-reporters.mdx b/nodejs/versioned_docs/version-stable/test-reporters.mdx index 1ebe6f4e2b..d3ed91f538 100644 --- a/nodejs/versioned_docs/version-stable/test-reporters.mdx +++ b/nodejs/versioned_docs/version-stable/test-reporters.mdx @@ -242,6 +242,12 @@ Or if there is a custom folder name: npx playwright show-report my-report ``` +You can also pass a `.zip` archive — for example one downloaded from a CI artifact. The archive must contain `index.html` at its top level. Playwright will extract it to a temporary directory and serve the report: + +```bash +npx playwright show-report playwright-report.zip +``` + HTML report supports the following configuration options and environment variables: | Environment Variable Name | Reporter Config Option| Description | Default @@ -499,11 +505,6 @@ Here's a short list of open source reporter implementations that you can take a * [Monocart](https://github.com/cenfun/monocart-reporter) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -520,8 +521,6 @@ Here's a short list of open source reporter implementations that you can take a [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -551,6 +550,13 @@ Here's a short list of open source reporter implementations that you can take a [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-retries.mdx b/nodejs/versioned_docs/version-stable/test-retries.mdx index 9f78e4a1df..21d087f6c7 100644 --- a/nodejs/versioned_docs/version-stable/test-retries.mdx +++ b/nodejs/versioned_docs/version-stable/test-retries.mdx @@ -243,11 +243,6 @@ test('runs second', async () => { -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -264,8 +259,6 @@ test('runs second', async () => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -295,6 +288,13 @@ test('runs second', async () => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-sharding.mdx b/nodejs/versioned_docs/version-stable/test-sharding.mdx index 2dd4710fa5..d2f57ac01d 100644 --- a/nodejs/versioned_docs/version-stable/test-sharding.mdx +++ b/nodejs/versioned_docs/version-stable/test-sharding.mdx @@ -210,11 +210,6 @@ Supported options: -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -231,8 +226,6 @@ Supported options: [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -262,6 +255,13 @@ Supported options: [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-snapshots.mdx b/nodejs/versioned_docs/version-stable/test-snapshots.mdx index 08303cda18..75803c1382 100644 --- a/nodejs/versioned_docs/version-stable/test-snapshots.mdx +++ b/nodejs/versioned_docs/version-stable/test-snapshots.mdx @@ -140,11 +140,6 @@ test('example test', async ({ page }) => { Snapshots are stored next to the test file, in a separate directory. For example, `my.spec.ts` file will produce and store snapshots in the `my.spec.ts-snapshots` directory. You should commit this directory to your version control (e.g. `git`), and review any changes to it. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -161,8 +156,6 @@ Snapshots are stored next to the test file, in a separate directory. For example [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -192,6 +185,13 @@ Snapshots are stored next to the test file, in a separate directory. For example [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-timeouts.mdx b/nodejs/versioned_docs/version-stable/test-timeouts.mdx index 5aa9dc9a4f..7cc3820729 100644 --- a/nodejs/versioned_docs/version-stable/test-timeouts.mdx +++ b/nodejs/versioned_docs/version-stable/test-timeouts.mdx @@ -211,11 +211,6 @@ test('example test', async ({ slowFixture }) => { API reference: [test.extend()](/api/class-test.mdx#test-extend). -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -232,8 +227,6 @@ API reference: [test.extend()](/api/class-test.mdx#test-extend). [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -263,6 +256,13 @@ API reference: [test.extend()](/api/class-test.mdx#test-extend). [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-typescript.mdx b/nodejs/versioned_docs/version-stable/test-typescript.mdx index cf551fba00..9a01c508ac 100644 --- a/nodejs/versioned_docs/version-stable/test-typescript.mdx +++ b/nodejs/versioned_docs/version-stable/test-typescript.mdx @@ -139,11 +139,6 @@ The `pretest` script runs typescript on the tests. `test` will run the tests tha Then `npm run test` will build the tests and run them. -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -160,8 +155,6 @@ Then `npm run test` will build the tests and run them. [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -191,6 +184,13 @@ Then `npm run test` will build the tests and run them. [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-ui-mode.mdx b/nodejs/versioned_docs/version-stable/test-ui-mode.mdx index b0cf088429..6652fdfabe 100644 --- a/nodejs/versioned_docs/version-stable/test-ui-mode.mdx +++ b/nodejs/versioned_docs/version-stable/test-ui-mode.mdx @@ -133,11 +133,6 @@ Be aware that when specifying the `--ui-host=0.0.0.0` flag, UI Mode with your tr ::: -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -154,8 +149,6 @@ Be aware that when specifying the `--ui-host=0.0.0.0` flag, UI Mode with your tr [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -185,6 +178,13 @@ Be aware that when specifying the `--ui-host=0.0.0.0` flag, UI Mode with your tr [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-use-options.mdx b/nodejs/versioned_docs/version-stable/test-use-options.mdx index 41dfe39990..e32f311b87 100644 --- a/nodejs/versioned_docs/version-stable/test-use-options.mdx +++ b/nodejs/versioned_docs/version-stable/test-use-options.mdx @@ -348,11 +348,6 @@ test('no base url', async ({ page }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -369,8 +364,6 @@ test('no base url', async ({ page }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -400,6 +393,13 @@ test('no base url', async ({ page }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/test-webserver.mdx b/nodejs/versioned_docs/version-stable/test-webserver.mdx index 8157529a9b..87c1a9d4c6 100644 --- a/nodejs/versioned_docs/version-stable/test-webserver.mdx +++ b/nodejs/versioned_docs/version-stable/test-webserver.mdx @@ -132,11 +132,6 @@ export default defineConfig({ ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -153,8 +148,6 @@ export default defineConfig({ [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -184,6 +177,13 @@ export default defineConfig({ [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/testing-library.mdx b/nodejs/versioned_docs/version-stable/testing-library.mdx index ee60aaba6a..fd25d5e692 100644 --- a/nodejs/versioned_docs/version-stable/testing-library.mdx +++ b/nodejs/versioned_docs/version-stable/testing-library.mdx @@ -155,11 +155,6 @@ Learn more about Playwright Test runner: - [Auto-waiting](./actionability) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -176,8 +171,6 @@ Learn more about Playwright Test runner: [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -207,6 +200,13 @@ Learn more about Playwright Test runner: [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/touch-events.mdx b/nodejs/versioned_docs/version-stable/touch-events.mdx index e2f742a7f9..1916fbfdf4 100644 --- a/nodejs/versioned_docs/version-stable/touch-events.mdx +++ b/nodejs/versioned_docs/version-stable/touch-events.mdx @@ -143,11 +143,6 @@ test(`pinch in gesture to zoom out the map`, async ({ page }) => { ``` -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -164,8 +159,6 @@ test(`pinch in gesture to zoom out the map`, async ({ page }) => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -195,6 +188,13 @@ test(`pinch in gesture to zoom out the map`, async ({ page }) => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/trace-viewer-intro.mdx b/nodejs/versioned_docs/version-stable/trace-viewer-intro.mdx index 98d6c62d3a..223cde781c 100644 --- a/nodejs/versioned_docs/version-stable/trace-viewer-intro.mdx +++ b/nodejs/versioned_docs/version-stable/trace-viewer-intro.mdx @@ -75,11 +75,6 @@ To learn more about traces, check out our detailed guide on [Trace Viewer](/trac - [Learn more about Trace Viewer](/trace-viewer.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -96,8 +91,6 @@ To learn more about traces, check out our detailed guide on [Trace Viewer](/trac [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -127,6 +120,13 @@ To learn more about traces, check out our detailed guide on [Trace Viewer](/trac [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/trace-viewer.mdx b/nodejs/versioned_docs/version-stable/trace-viewer.mdx index 2f31618988..2f13aeea44 100644 --- a/nodejs/versioned_docs/version-stable/trace-viewer.mdx +++ b/nodejs/versioned_docs/version-stable/trace-viewer.mdx @@ -212,11 +212,6 @@ The "Attachments" tab allows you to explore attachments. If you're doing [visual attachments tab in trace viewer -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -233,8 +228,6 @@ The "Attachments" tab allows you to explore attachments. If you're doing [visual [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -264,6 +257,13 @@ The "Attachments" tab allows you to explore attachments. If you're doing [visual [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/videos.mdx b/nodejs/versioned_docs/version-stable/videos.mdx index 3b8ca14b28..461f33e95f 100644 --- a/nodejs/versioned_docs/version-stable/videos.mdx +++ b/nodejs/versioned_docs/version-stable/videos.mdx @@ -94,11 +94,6 @@ Note that the video is only available after the page or browser context is close ::: -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -115,8 +110,6 @@ Note that the video is only available after the page or browser context is close [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -146,6 +139,13 @@ Note that the video is only available after the page or browser context is close [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/webview2.mdx b/nodejs/versioned_docs/version-stable/webview2.mdx index a653ca4d96..c061ce43f3 100644 --- a/nodejs/versioned_docs/version-stable/webview2.mdx +++ b/nodejs/versioned_docs/version-stable/webview2.mdx @@ -118,11 +118,6 @@ Inside your webview2 control, you can just right-click to open the context menu For debugging tests, see the Playwright [Debugging guide](./debug). -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -139,8 +134,6 @@ For debugging tests, see the Playwright [Debugging guide](./debug). [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -170,6 +163,13 @@ For debugging tests, see the Playwright [Debugging guide](./debug). [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/nodejs/versioned_docs/version-stable/writing-tests.mdx b/nodejs/versioned_docs/version-stable/writing-tests.mdx index f47968b190..e10f677bbc 100644 --- a/nodejs/versioned_docs/version-stable/writing-tests.mdx +++ b/nodejs/versioned_docs/version-stable/writing-tests.mdx @@ -171,11 +171,6 @@ test.describe('navigation', () => { - [Run tests on CI with GitHub Actions](./ci-intro.mdx) -[Android]: /api/class-android.mdx "Android" -[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" -[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" -[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" -[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" [APIResponse]: /api/class-apiresponse.mdx "APIResponse" @@ -192,8 +187,6 @@ test.describe('navigation', () => { [Dialog]: /api/class-dialog.mdx "Dialog" [Disposable]: /api/class-disposable.mdx "Disposable" [Download]: /api/class-download.mdx "Download" -[Electron]: /api/class-electron.mdx "Electron" -[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [FileChooser]: /api/class-filechooser.mdx "FileChooser" [Frame]: /api/class-frame.mdx "Frame" @@ -223,6 +216,13 @@ test.describe('navigation', () => { [WebSocket]: /api/class-websocket.mdx "WebSocket" [WebSocketRoute]: /api/class-websocketroute.mdx "WebSocketRoute" [Worker]: /api/class-worker.mdx "Worker" +[Electron]: /api/class-electron.mdx "Electron" +[ElectronApplication]: /api/class-electronapplication.mdx "ElectronApplication" +[Android]: /api/class-android.mdx "Android" +[AndroidDevice]: /api/class-androiddevice.mdx "AndroidDevice" +[AndroidInput]: /api/class-androidinput.mdx "AndroidInput" +[AndroidSocket]: /api/class-androidsocket.mdx "AndroidSocket" +[AndroidWebView]: /api/class-androidwebview.mdx "AndroidWebView" [Fixtures]: /api/class-fixtures.mdx "Fixtures" [FullConfig]: /api/class-fullconfig.mdx "FullConfig" [FullProject]: /api/class-fullproject.mdx "FullProject" diff --git a/python/versioned_docs/version-stable/actionability.mdx b/python/versioned_docs/version-stable/actionability.mdx index 9b6a9463f5..1884b0ff9a 100644 --- a/python/versioned_docs/version-stable/actionability.mdx +++ b/python/versioned_docs/version-stable/actionability.mdx @@ -139,6 +139,7 @@ For example, consider a scenario where Playwright will click `Sign Up` button re [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api-testing.mdx b/python/versioned_docs/version-stable/api-testing.mdx index b633090274..562a8d48ee 100644 --- a/python/versioned_docs/version-stable/api-testing.mdx +++ b/python/versioned_docs/version-stable/api-testing.mdx @@ -299,6 +299,7 @@ context = browser.new_context(storage_state=state) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-apirequest.mdx b/python/versioned_docs/version-stable/api/class-apirequest.mdx index 6cbbb65efd..6b52b21065 100644 --- a/python/versioned_docs/version-stable/api/class-apirequest.mdx +++ b/python/versioned_docs/version-stable/api/class-apirequest.mdx @@ -183,6 +183,7 @@ api_request.new_context(**kwargs) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-apirequestcontext.mdx b/python/versioned_docs/version-stable/api/class-apirequestcontext.mdx index a6f467308c..d805cdf9f5 100644 --- a/python/versioned_docs/version-stable/api/class-apirequestcontext.mdx +++ b/python/versioned_docs/version-stable/api/class-apirequestcontext.mdx @@ -9,13 +9,17 @@ import HTMLCard from '@site/src/components/HTMLCard'; 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 [browser_context.request](/api/class-browsercontext.mdx#browser-context-request) or [page.request](/api/class-page.mdx#page-request). It is also possible to create a new APIRequestContext instance manually by calling [api_request.new_context()](/api/class-apirequest.mdx#api-request-new-context). +Each Playwright browser context has an associated [APIRequestContext], accessible via [browser_context.request](/api/class-browsercontext.mdx#browser-context-request) or [page.request](/api/class-page.mdx#page-request) (these return the + +**same instance** — `page.request` is a shortcut for `page.context().request`). You can also create a standalone, isolated instance with [api_request.new_context()](/api/class-apirequest.mdx#api-request-new-context). **Cookie management** -[APIRequestContext] returned by [browser_context.request](/api/class-browsercontext.mdx#browser-context-request) and [page.request](/api/class-page.mdx#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. +The [APIRequestContext] returned by [browser_context.request](/api/class-browsercontext.mdx#browser-context-request) and + +[page.request](/api/class-page.mdx#page-request) uses the same cookie jar as its [BrowserContext]: -If you want API requests to not interfere with the browser cookies you should create a new [APIRequestContext] by calling [api_request.new_context()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. +If you want API requests that do **not** share cookies with the browser, create an isolated context via [api_request.new_context()](/api/class-apirequest.mdx#api-request-new-context). Such `APIRequestContext` object will have its own isolated cookie storage. **Arguments** +- `boxes` [bool] *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `depth` [int] *(optional)* Added in: v1.59# When specified, limits the depth of the snapshot. @@ -968,6 +971,59 @@ This method drags the locator to another target locator or target position. It w --- +### drop {#locator-drop} + +Added in: v1.60locator.drop + +Simulate an external drag-and-drop of files or clipboard-like data onto this locator. + +**Usage** + +Drop a file buffer onto an upload area: + +Drop plain text and a URL together: + +**Arguments** +- `payload` [Dict]# + - `files` [Union]\[[str], [pathlib.Path]\] | [List]\[[Union]\[[str], [pathlib.Path]\]\] | [Dict] | [List]\[[Dict]\] *(optional)* + - `name` [str] + + File name + - `mimeType` [str] + + File type + - `buffer` [bytes] + + File content + + + - `data` [Dict]\[[str], [str]\] *(optional)* + + + Data to drop onto the target. Provide `files` (file paths or in-memory buffers), `data` (a mime-type → string map for clipboard-like content such as `text/plain`, `text/html`, `text/uri-list`), or both. +- `position` [Dict] *(optional)*# + - `x` [float] + + + - `y` [float] + + + A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of the element. +- `timeout` [float] *(optional)*# + + Maximum time in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout. The default value can be changed by using the [browser_context.set_default_timeout()](/api/class-browsercontext.mdx#browser-context-set-default-timeout) or [page.set_default_timeout()](/api/class-page.mdx#page-set-default-timeout) methods. + +**Returns** +- [NoneType]# + +**Details** + +Dispatches the native `dragenter`, `dragover`, and `drop` events at the center of the target element with a synthetic [DataTransfer] carrying the provided files and/or data entries. Works cross-browser by constructing the [DataTransfer] in the page context. + +If the target element's `dragover` listener does not call `preventDefault()`, the target is considered to have rejected the drop: Playwright dispatches `dragleave` and this method throws. + +--- + ### evaluate {#locator-evaluate} Added in: v1.14locator.evaluate @@ -1576,6 +1632,11 @@ await page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). +- `description` [str] | [Pattern] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [exact](/api/class-locator.mdx#locator-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `disabled` [bool] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1587,7 +1648,7 @@ await page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click - `exact` [bool] *(optional)* Added in: v1.28# - Whether [name](/api/class-locator.mdx#locator-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [name](/api/class-locator.mdx#locator-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [name](/api/class-locator.mdx#locator-get-by-role-option-name) and [description](/api/class-locator.mdx#locator-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `expanded` [bool] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -1825,6 +1886,23 @@ await expect(page.get_by_title("Issues count")).to_have_text("25 issues") --- +### hide_highlight {#locator-hide-highlight} + +Added in: v1.60locator.hide_highlight + +Hides the element highlight previously added by [locator.highlight()](/api/class-locator.mdx#locator-highlight). + +**Usage** + +```python +locator.hide_highlight() +``` + +**Returns** +- [NoneType]# + +--- + ### highlight {#locator-highlight} Added in: v1.20locator.highlight @@ -1835,10 +1913,16 @@ Highlight the corresponding element(s) on the screen. Useful for debugging, don' ```python locator.highlight() +locator.highlight(**kwargs) ``` +**Arguments** +- `style` [str] *(optional)* Added in: v1.60# + + Additional inline CSS applied to the highlight overlay, e.g. `"outline: 2px dashed red"`. + **Returns** -- [NoneType]# +- [Disposable]# --- @@ -3574,6 +3658,7 @@ To press a special key, like `Control` or `ArrowDown`, use [locator.press()](/ap [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-locatorassertions.mdx b/python/versioned_docs/version-stable/api/class-locatorassertions.mdx index e755869b5b..35245daadf 100644 --- a/python/versioned_docs/version-stable/api/class-locatorassertions.mdx +++ b/python/versioned_docs/version-stable/api/class-locatorassertions.mdx @@ -1867,6 +1867,9 @@ await expect(locator).to_have_css("display", "flex") - `value` [str] | [Pattern] Added in: v1.18# CSS property value. +- `pseudo` "before" | "after" *(optional)* Added in: v1.60# + + Pseudo-element to read computed styles from. - `timeout` [float] *(optional)* Added in: v1.18# Time to retry the assertion for in milliseconds. Defaults to `5000`. @@ -2344,6 +2347,7 @@ await expect(page.locator('body')).to_match_aria_snapshot(''' [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-mouse.mdx b/python/versioned_docs/version-stable/api/class-mouse.mdx index 5192953ccf..95406d371e 100644 --- a/python/versioned_docs/version-stable/api/class-mouse.mdx +++ b/python/versioned_docs/version-stable/api/class-mouse.mdx @@ -252,6 +252,7 @@ mouse.wheel(delta_x, delta_y) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-page.mdx b/python/versioned_docs/version-stable/api/class-page.mdx index ad6b43fd08..011641fb15 100644 --- a/python/versioned_docs/version-stable/api/class-page.mdx +++ b/python/versioned_docs/version-stable/api/class-page.mdx @@ -418,6 +418,9 @@ page.aria_snapshot(**kwargs) ``` **Arguments** +- `boxes` [bool] *(optional)* Added in: v1.60# + + When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are relative to the viewport, in CSS pixels, as returned by [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). Defaults to `false`. - `depth` [int] *(optional)*# When specified, limits the depth of the snapshot. @@ -1455,14 +1458,6 @@ asyncio.run(main()) - `callback` [Callable]# Callback function that will be called in the Playwright's context. -- `handle` [bool] *(optional)*# - - :::warning[Deprecated] - This option will be removed in the future. - ::: - - - Whether to pass the argument as a handle, instead of passing by value. When passing a handle, only one argument is supported. When passing by value, multiple arguments are supported. **Returns** - [Disposable]# @@ -1876,6 +1871,11 @@ await page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click An attribute that is usually set by `aria-checked` or native `` controls. Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked). +- `description` [str] | [Pattern] *(optional)* Added in: v1.60# + + Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By default, matching is case-insensitive and searches for a substring, use [exact](/api/class-page.mdx#page-get-by-role-option-exact) to control this behavior. + + Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). - `disabled` [bool] *(optional)*# An attribute that is usually set by `aria-disabled` or `disabled`. @@ -1887,7 +1887,7 @@ await page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click - `exact` [bool] *(optional)* Added in: v1.28# - Whether [name](/api/class-page.mdx#page-get-by-role-option-name) is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when [name](/api/class-page.mdx#page-get-by-role-option-name) is a regular expression. Note that exact match still trims whitespace. + Whether [name](/api/class-page.mdx#page-get-by-role-option-name) and [description](/api/class-page.mdx#page-get-by-role-option-description) are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note that exact match still trims whitespace. - `expanded` [bool] *(optional)*# An attribute that is usually set by `aria-expanded`. @@ -2243,6 +2243,23 @@ page.goto(url, **kwargs) --- +### hide_highlight {#page-hide-highlight} + +Added in: v1.60page.hide_highlight + +Hide all locator highlight overlays previously added by [locator.highlight()](/api/class-locator.mdx#locator-highlight) on this page. + +**Usage** + +```python +page.hide_highlight() +``` + +**Returns** +- [NoneType]# + +--- + ### locator {#page-locator} Added in: v1.14page.locator @@ -6049,6 +6066,7 @@ await page.wait_for_timeout(1000) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-pageassertions.mdx b/python/versioned_docs/version-stable/api/class-pageassertions.mdx index bb1037e318..bdc5cf598e 100644 --- a/python/versioned_docs/version-stable/api/class-pageassertions.mdx +++ b/python/versioned_docs/version-stable/api/class-pageassertions.mdx @@ -105,6 +105,30 @@ expect(page).not_to_have_url(url_or_reg_exp, **kwargs) --- +### not_to_match_aria_snapshot {#page-assertions-not-to-match-aria-snapshot} + +Added in: v1.60pageAssertions.not_to_match_aria_snapshot + +The opposite of [expect(page).to_match_aria_snapshot()](/api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot). + +**Usage** + +```python +expect(page).not_to_match_aria_snapshot(expected) +expect(page).not_to_match_aria_snapshot(expected, **kwargs) +``` + +**Arguments** +- `expected` [str]# +- `timeout` [float] *(optional)*# + + Time to retry the assertion for in milliseconds. Defaults to `5000`. + +**Returns** +- [NoneType]# + +--- + ### to_have_title {#page-assertions-to-have-title} Added in: v1.20pageAssertions.to_have_title @@ -212,6 +236,57 @@ await expect(page).to_have_url(re.compile(".*checkout")) **Returns** - [NoneType]# +--- + +### to_match_aria_snapshot {#page-assertions-to-match-aria-snapshot} + +Added in: v1.60pageAssertions.to_match_aria_snapshot + +Asserts that the page body matches the given [accessibility snapshot](../aria-snapshots.mdx). + +**Usage** + + + + +```py +page.goto("https://demo.playwright.dev/todomvc/") +expect(page).to_match_aria_snapshot(''' + - heading "todos" + - textbox "What needs to be done?" +''') +``` + + + + +```py +await page.goto("https://demo.playwright.dev/todomvc/") +await expect(page).to_match_aria_snapshot(''' + - heading "todos" + - textbox "What needs to be done?" +''') +``` + + + + +**Arguments** +- `expected` [str]# +- `timeout` [float] *(optional)*# + + Time to retry the assertion for in milliseconds. Defaults to `5000`. + +**Returns** +- [NoneType]# + [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" @@ -229,6 +304,7 @@ await expect(page).to_have_url(re.compile(".*checkout")) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-playwright.mdx b/python/versioned_docs/version-stable/api/class-playwright.mdx index 5761ac552d..79ae989899 100644 --- a/python/versioned_docs/version-stable/api/class-playwright.mdx +++ b/python/versioned_docs/version-stable/api/class-playwright.mdx @@ -266,6 +266,7 @@ playwright.webkit [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-request.mdx b/python/versioned_docs/version-stable/api/class-request.mdx index 1aad76db01..e9f3105ea4 100644 --- a/python/versioned_docs/version-stable/api/class-request.mdx +++ b/python/versioned_docs/version-stable/api/class-request.mdx @@ -537,6 +537,7 @@ request.url [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-response.mdx b/python/versioned_docs/version-stable/api/class-response.mdx index d1be8688c4..6dbfac165f 100644 --- a/python/versioned_docs/version-stable/api/class-response.mdx +++ b/python/versioned_docs/version-stable/api/class-response.mdx @@ -392,6 +392,7 @@ response.url [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-route.mdx b/python/versioned_docs/version-stable/api/class-route.mdx index 30c0e63b3f..564e1e6568 100644 --- a/python/versioned_docs/version-stable/api/class-route.mdx +++ b/python/versioned_docs/version-stable/api/class-route.mdx @@ -502,6 +502,7 @@ route.request [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-screencast.mdx b/python/versioned_docs/version-stable/api/class-screencast.mdx index aa78fc2eb7..1a5f944619 100644 --- a/python/versioned_docs/version-stable/api/class-screencast.mdx +++ b/python/versioned_docs/version-stable/api/class-screencast.mdx @@ -162,8 +162,14 @@ Starts the screencast. When [path](/api/class-screencast.mdx#screencast-start-op - `data` [bytes] JPEG-encoded frame data. + - `viewportWidth` [int] + + Width of the page viewport at the time the frame was captured. + - `viewportHeight` [int] + + Height of the page viewport at the time the frame was captured. - Callback that receives JPEG-encoded frame data. + Callback that receives JPEG-encoded frame data along with the page viewport size at the time of capture. - `path` [Union]\[[str], [pathlib.Path]\] *(optional)*# Path where the video should be saved when the screencast is stopped. When provided, video recording is started. @@ -208,6 +214,7 @@ screencast.stop() [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-selectors.mdx b/python/versioned_docs/version-stable/api/class-selectors.mdx index 32a5083414..f50bb416f3 100644 --- a/python/versioned_docs/version-stable/api/class-selectors.mdx +++ b/python/versioned_docs/version-stable/api/class-selectors.mdx @@ -167,6 +167,7 @@ selectors.set_test_id_attribute(attribute_name) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-timeouterror.mdx b/python/versioned_docs/version-stable/api/class-timeouterror.mdx index 2c71afa18f..3d26a66d4f 100644 --- a/python/versioned_docs/version-stable/api/class-timeouterror.mdx +++ b/python/versioned_docs/version-stable/api/class-timeouterror.mdx @@ -77,6 +77,7 @@ asyncio.run(main()) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-touchscreen.mdx b/python/versioned_docs/version-stable/api/class-touchscreen.mdx index 6be7302c7c..203de6bc86 100644 --- a/python/versioned_docs/version-stable/api/class-touchscreen.mdx +++ b/python/versioned_docs/version-stable/api/class-touchscreen.mdx @@ -61,6 +61,7 @@ touchscreen.tap(x, y) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-tracing.mdx b/python/versioned_docs/version-stable/api/class-tracing.mdx index eb74fc096c..dcc20443ff 100644 --- a/python/versioned_docs/version-stable/api/class-tracing.mdx +++ b/python/versioned_docs/version-stable/api/class-tracing.mdx @@ -283,6 +283,65 @@ await context.tracing.stop_chunk(path = "trace2.zip") --- +### start_har {#tracing-start-har} + +Added in: v1.60tracing.start_har + +Start recording a HAR (HTTP Archive) of network activity in this context. The HAR file is written to disk when [tracing.stop_har()](/api/class-tracing.mdx#tracing-stop-har) is called, or when the returned [Disposable] is disposed. + +Only one HAR recording can be active at a time per [BrowserContext]. + +**Usage** + + + + +```py +context.tracing.start_har("trace.har") +page = context.new_page() +page.goto("https://playwright.dev") +context.tracing.stop_har() +``` + + + + +```py +await context.tracing.start_har("trace.har") +page = await context.new_page() +await page.goto("https://playwright.dev") +await context.tracing.stop_har() +``` + + + + +**Arguments** +- `path` [Union]\[[str], [pathlib.Path]\]# + + Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, the HAR is saved as a zip archive with response bodies attached as separate files. +- `content` "omit" | "embed" | "attach" *(optional)*# + + Optional setting to control resource content management. If `omit` is specified, content is not persisted. If `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output files and to `embed` for all other file extensions. +- `mode` "full" | "minimal" *(optional)*# + + When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page, cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`. +- `url_filter` [str] | [Pattern] *(optional)*# + + A glob or regex pattern to filter requests that are stored in the HAR. Defaults to none. + +**Returns** +- [Disposable]# + +--- + ### stop {#tracing-stop} Added in: v1.12tracing.stop @@ -327,6 +386,23 @@ tracing.stop_chunk(**kwargs) **Returns** - [NoneType]# +--- + +### stop_har {#tracing-stop-har} + +Added in: v1.60tracing.stop_har + +Stop HAR recording and save the HAR file to the path given to [tracing.start_har()](/api/class-tracing.mdx#tracing-start-har). + +**Usage** + +```python +tracing.stop_har() +``` + +**Returns** +- [NoneType]# + [APIRequest]: /api/class-apirequest.mdx "APIRequest" [APIRequestContext]: /api/class-apirequestcontext.mdx "APIRequestContext" @@ -344,6 +420,7 @@ tracing.stop_chunk(**kwargs) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-video.mdx b/python/versioned_docs/version-stable/api/class-video.mdx index 85f0fc4360..f321b705ec 100644 --- a/python/versioned_docs/version-stable/api/class-video.mdx +++ b/python/versioned_docs/version-stable/api/class-video.mdx @@ -109,6 +109,7 @@ video.save_as(path) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-weberror.mdx b/python/versioned_docs/version-stable/api/class-weberror.mdx index 05e83bc56b..b91be9f22e 100644 --- a/python/versioned_docs/version-stable/api/class-weberror.mdx +++ b/python/versioned_docs/version-stable/api/class-weberror.mdx @@ -63,6 +63,30 @@ web_error.error --- +### location {#web-error-location} + +Added in: v1.60webError.location + +**Usage** + +```python +web_error.location +``` + +**Returns** +- [Dict]# + - `url` [str] + + URL of the resource. + - `line` [int] + + 0-based line number in the resource. + - `column` [int] + + 0-based column number in the resource. + +--- + ### page {#web-error-page} Added in: v1.38webError.page @@ -95,6 +119,7 @@ web_error.page [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-websocket.mdx b/python/versioned_docs/version-stable/api/class-websocket.mdx index 6f6ae8bc51..d485720f5a 100644 --- a/python/versioned_docs/version-stable/api/class-websocket.mdx +++ b/python/versioned_docs/version-stable/api/class-websocket.mdx @@ -200,6 +200,7 @@ web_socket.on("socketerror", handler) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-websocketroute.mdx b/python/versioned_docs/version-stable/api/class-websocketroute.mdx index 7b29e7cb48..16ce94b677 100644 --- a/python/versioned_docs/version-stable/api/class-websocketroute.mdx +++ b/python/versioned_docs/version-stable/api/class-websocketroute.mdx @@ -320,6 +320,57 @@ web_socket_route.connect_to_server --- +### protocols {#web-socket-route-protocols} + +Added in: v1.60webSocketRoute.protocols + +The list of WebSocket subprotocols requested by the page, as passed via the second argument to the [`WebSocket` constructor](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket). Corresponds to the `Sec-WebSocket-Protocol` request header. + +Returns an empty array if no protocols were specified. + +**Usage** + + + + +```py +def handler(ws: WebSocketRoute): + if "chat.v2" in ws.protocols: + ws.on_message(lambda message: ws.send(f"v2:{message}")) + else: + ws.close(code=1002, reason="Unsupported protocol") + +page.route_web_socket("wss://example.com/ws", handler) +``` + + + + +```py +async def handler(ws: WebSocketRoute): + if "chat.v2" in ws.protocols: + ws.on_message(lambda message: ws.send(f"v2:{message}")) + else: + await ws.close(code=1002, reason="Unsupported protocol") + +await page.route_web_socket("wss://example.com/ws", handler) +``` + + + + +**Returns** +- [List]\[[str]\]# + +--- + ### url {#web-socket-route-url} Added in: v1.48webSocketRoute.url @@ -352,6 +403,7 @@ web_socket_route.url [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/api/class-worker.mdx b/python/versioned_docs/version-stable/api/class-worker.mdx index e34daf8306..7ecb63f5b6 100644 --- a/python/versioned_docs/version-stable/api/class-worker.mdx +++ b/python/versioned_docs/version-stable/api/class-worker.mdx @@ -206,6 +206,7 @@ worker.on("console", handler) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/aria-snapshots.mdx b/python/versioned_docs/version-stable/aria-snapshots.mdx index e40d802bbf..ccc6c6b823 100644 --- a/python/versioned_docs/version-stable/aria-snapshots.mdx +++ b/python/versioned_docs/version-stable/aria-snapshots.mdx @@ -24,7 +24,7 @@ With Playwright's Snapshot testing you can assert the accessibility tree of a pa ```py page.goto('https://playwright.dev/') -expect(page.query_selector('banner')).to_match_aria_snapshot(""" +expect(page).to_match_aria_snapshot(""" - banner: - heading /Playwright enables reliable end-to-end/ [level=1] - link "Get started": @@ -40,7 +40,7 @@ expect(page.query_selector('banner')).to_match_aria_snapshot(""" ```py await page.goto('https://playwright.dev/') -await expect(page.query_selector('banner')).to_match_aria_snapshot(""" +await expect(page).to_match_aria_snapshot(""" - banner: - heading /Playwright enables reliable end-to-end/ [level=1] - link "Get started": @@ -119,7 +119,7 @@ These values are derived from ARIA attributes or calculated based on HTML semant ## Snapshot matching -The [expect(locator).to_match_aria_snapshot()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the locator scope with a predefined aria snapshot template, helping validate the page's state against testing requirements. +The [expect(page).to_match_aria_snapshot()](/api/class-pageassertions.mdx#page-assertions-to-match-aria-snapshot) assertion method in Playwright compares the accessible structure of the page with a predefined aria snapshot template, helping validate the page's state against testing requirements. You can also use [expect(locator).to_match_aria_snapshot()](/api/class-locatorassertions.mdx#locator-assertions-to-match-aria-snapshot) to match a specific part of the page. For the following DOM: @@ -140,7 +140,7 @@ You can match it using the following snapshot template: ```py -expect(page.locator("body")).to_match_aria_snapshot(""" +expect(page).to_match_aria_snapshot(""" - heading "title" """) ``` @@ -149,7 +149,7 @@ expect(page.locator("body")).to_match_aria_snapshot(""" ```py -await expect(page.locator("body")).to_match_aria_snapshot(""" +await expect(page).to_match_aria_snapshot(""" - heading "title" """) ``` @@ -276,9 +276,9 @@ If you're using Playwright's [Code Generator](./codegen.mdx), generating aria sn - **"Assert snapshot" Action**: In the code generator, you can use the "Assert snapshot" action to automatically create a snapshot assertion for the selected elements. This is a quick way to capture the aria snapshot as part of your recorded test flow. - **"Aria snapshot" Tab**: The "Aria snapshot" tab within the code generator interface visually represents the aria snapshot for a selected locator, letting you explore, inspect, and verify element roles, attributes, and accessible names to aid snapshot creation and review. -### Using the `Locator.ariaSnapshot` method +### Using [page.aria_snapshot()](/api/class-page.mdx#page-aria-snapshot) and [locator.aria_snapshot()](/api/class-locator.mdx#locator-aria-snapshot) -The [locator.aria_snapshot()](/api/class-locator.mdx#locator-aria-snapshot) method allows you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. +Methods [page.aria_snapshot()](/api/class-page.mdx#page-aria-snapshot) and [locator.aria_snapshot()](/api/class-locator.mdx#locator-aria-snapshot) allow you to programmatically create a YAML representation of accessible elements within a locator's scope, especially helpful for generating snapshots dynamically during test execution. **Example**: @@ -293,7 +293,7 @@ The [locator.aria_snapshot()](/api/class-locator.mdx#locator-aria-snapshot) meth ```py -snapshot = page.locator("body").aria_snapshot() +snapshot = page.aria_snapshot() print(snapshot) ``` @@ -301,7 +301,7 @@ print(snapshot) ```py -snapshot = await page.locator("body").aria_snapshot() +snapshot = await page.aria_snapshot() print(snapshot) ``` @@ -459,6 +459,7 @@ Commonly used ARIA attributes, like `checked`, `disabled`, `expanded`, `level`, [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/auth.mdx b/python/versioned_docs/version-stable/auth.mdx index 5a5708bc16..cf011468b8 100644 --- a/python/versioned_docs/version-stable/auth.mdx +++ b/python/versioned_docs/version-stable/auth.mdx @@ -220,6 +220,7 @@ await context.add_init_script("""(storage => { [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/browser-contexts.mdx b/python/versioned_docs/version-stable/browser-contexts.mdx index 4c3683e6a8..26fdbde992 100644 --- a/python/versioned_docs/version-stable/browser-contexts.mdx +++ b/python/versioned_docs/version-stable/browser-contexts.mdx @@ -133,6 +133,7 @@ asyncio.run(main()) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/browsers.mdx b/python/versioned_docs/version-stable/browsers.mdx index a21b8e5c98..2bc878d5c8 100644 --- a/python/versioned_docs/version-stable/browsers.mdx +++ b/python/versioned_docs/version-stable/browsers.mdx @@ -585,6 +585,7 @@ playwright uninstall --all [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/chrome-extensions.mdx b/python/versioned_docs/version-stable/chrome-extensions.mdx index 92dbfbbcb1..8338cdb87d 100644 --- a/python/versioned_docs/version-stable/chrome-extensions.mdx +++ b/python/versioned_docs/version-stable/chrome-extensions.mdx @@ -217,6 +217,7 @@ def test_popup_page(page: Page, extension_id: str) -> None: [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/ci-intro.mdx b/python/versioned_docs/version-stable/ci-intro.mdx index b6a7d3e91d..cacec445a1 100644 --- a/python/versioned_docs/version-stable/ci-intro.mdx +++ b/python/versioned_docs/version-stable/ci-intro.mdx @@ -116,6 +116,7 @@ Artifacts like trace files or console logs contain information about your test e [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/ci.mdx b/python/versioned_docs/version-stable/ci.mdx index bd124a8991..da419c80b2 100644 --- a/python/versioned_docs/version-stable/ci.mdx +++ b/python/versioned_docs/version-stable/ci.mdx @@ -284,6 +284,7 @@ xvfb-run pytest [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/clock.mdx b/python/versioned_docs/version-stable/clock.mdx index b0167b0554..b996bc6e0c 100644 --- a/python/versioned_docs/version-stable/clock.mdx +++ b/python/versioned_docs/version-stable/clock.mdx @@ -322,6 +322,7 @@ await expect(locator).to_have_text("2/2/2024, 10:00:02 AM") [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/codegen-intro.mdx b/python/versioned_docs/version-stable/codegen-intro.mdx index e434d89e8c..41a80b1b6b 100644 --- a/python/versioned_docs/version-stable/codegen-intro.mdx +++ b/python/versioned_docs/version-stable/codegen-intro.mdx @@ -79,6 +79,7 @@ You can generate tests using emulation for specific viewports, devices, color sc [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/codegen.mdx b/python/versioned_docs/version-stable/codegen.mdx index 5e220b600a..24192c67e6 100644 --- a/python/versioned_docs/version-stable/codegen.mdx +++ b/python/versioned_docs/version-stable/codegen.mdx @@ -220,6 +220,7 @@ asyncio.run(main()) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/debug.mdx b/python/versioned_docs/version-stable/debug.mdx index 071838c332..f4d395b074 100644 --- a/python/versioned_docs/version-stable/debug.mdx +++ b/python/versioned_docs/version-stable/debug.mdx @@ -337,6 +337,7 @@ await chromium.launch(headless=False, slow_mo=100) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/dialogs.mdx b/python/versioned_docs/version-stable/dialogs.mdx index b9d7e63aab..cc269a3e7b 100644 --- a/python/versioned_docs/version-stable/dialogs.mdx +++ b/python/versioned_docs/version-stable/dialogs.mdx @@ -180,6 +180,7 @@ This will wait for the print dialog to be opened after the button is clicked. Ma [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/docker.mdx b/python/versioned_docs/version-stable/docker.mdx index 25ccaafa5f..1ba0a30b4c 100644 --- a/python/versioned_docs/version-stable/docker.mdx +++ b/python/versioned_docs/version-stable/docker.mdx @@ -202,6 +202,7 @@ RUN pip install playwright==@1.59.0 && \ [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/downloads.mdx b/python/versioned_docs/version-stable/downloads.mdx index 74cbd45c54..9311fff874 100644 --- a/python/versioned_docs/version-stable/downloads.mdx +++ b/python/versioned_docs/version-stable/downloads.mdx @@ -111,6 +111,7 @@ For uploading files, see the [uploading files](./input.mdx#upload-files) section [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/emulation.mdx b/python/versioned_docs/version-stable/emulation.mdx index fc3bae6ca9..20c325b57c 100644 --- a/python/versioned_docs/version-stable/emulation.mdx +++ b/python/versioned_docs/version-stable/emulation.mdx @@ -515,6 +515,7 @@ context = await browser.new_context( [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/evaluating.mdx b/python/versioned_docs/version-stable/evaluating.mdx index e35940d09f..6efd66e775 100644 --- a/python/versioned_docs/version-stable/evaluating.mdx +++ b/python/versioned_docs/version-stable/evaluating.mdx @@ -303,6 +303,7 @@ await page.add_init_script(path="mocks/preload.js") [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/events.mdx b/python/versioned_docs/version-stable/events.mdx index d190b64e8e..42c97e1206 100644 --- a/python/versioned_docs/version-stable/events.mdx +++ b/python/versioned_docs/version-stable/events.mdx @@ -173,6 +173,7 @@ await page.evaluate("prompt('Enter a number:')") [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/extensibility.mdx b/python/versioned_docs/version-stable/extensibility.mdx index e83c3f4175..6c535d06b2 100644 --- a/python/versioned_docs/version-stable/extensibility.mdx +++ b/python/versioned_docs/version-stable/extensibility.mdx @@ -111,6 +111,7 @@ button_count = await page.locator("tag=button").count() [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/frames.mdx b/python/versioned_docs/version-stable/frames.mdx index 17f2ff59cb..1c46a05555 100644 --- a/python/versioned_docs/version-stable/frames.mdx +++ b/python/versioned_docs/version-stable/frames.mdx @@ -100,6 +100,7 @@ await frame.fill('#username-input', 'John') [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/getting-started-cli.mdx b/python/versioned_docs/version-stable/getting-started-cli.mdx index edefa3b051..173690796f 100644 --- a/python/versioned_docs/version-stable/getting-started-cli.mdx +++ b/python/versioned_docs/version-stable/getting-started-cli.mdx @@ -166,7 +166,8 @@ playwright-cli tab-close [index] # close a tab ### Network ```bash -playwright-cli network # list network requests since page load +playwright-cli requests # list network requests since page load +playwright-cli request # show full details of a single request playwright-cli route [opts] # mock network requests playwright-cli route-list # list active routes playwright-cli unroute [pattern] # remove routes @@ -281,7 +282,7 @@ The CLI also loads `.playwright/cli.config.json` automatically if present. The c Connect to your existing browser tabs instead of launching a new browser: ```bash -playwright-cli open --extension +playwright-cli attach --extension ``` This requires the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md) to be installed. @@ -323,6 +324,7 @@ This requires the [Playwright Extension](https://github.com/microsoft/playwright [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/getting-started-mcp.mdx b/python/versioned_docs/version-stable/getting-started-mcp.mdx index 1ea2a019f7..81f383b8d4 100644 --- a/python/versioned_docs/version-stable/getting-started-mcp.mdx +++ b/python/versioned_docs/version-stable/getting-started-mcp.mdx @@ -105,7 +105,7 @@ Playwright MCP provides tools for all common browser interactions: ### Running Playwright code -For complex interactions that go beyond individual tool calls, use the `browser_run_code` tool to execute Playwright scripts directly: +For complex interactions that go beyond individual tool calls, use the `browser_run_code_unsafe` tool to execute Playwright scripts directly. This tool runs arbitrary JavaScript in the Playwright server process and is RCE-equivalent — only enable it for trusted MCP clients: ```txt Run this Playwright code to verify the todo count: @@ -172,7 +172,7 @@ Supported values: `chrome`, `firefox`, `webkit`, `msedge`. ### User profile Playwright MCP supports three profile modes: -- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-profile` in your platform's cache directory. Override with `--user-data-dir`. +- **Persistent (default)**: Login state and cookies are preserved between sessions. The profile is stored in `ms-playwright/mcp-{channel}-{workspace-hash}` in your platform's cache directory, so different projects get separate profiles automatically. Override with `--user-data-dir`. - **Isolated**: Each session starts fresh. Pass `--isolated` to enable. You can load initial state with `--storage-state`. - **Browser extension**: Connect to your existing browser tabs with the [Playwright Extension](https://github.com/microsoft/playwright/blob/main/packages/extension/README.md). Pass `--extension` to enable. @@ -242,6 +242,7 @@ Then point your MCP client to the HTTP endpoint: [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/handles.mdx b/python/versioned_docs/version-stable/handles.mdx index 263e35789c..ff940e4588 100644 --- a/python/versioned_docs/version-stable/handles.mdx +++ b/python/versioned_docs/version-stable/handles.mdx @@ -262,6 +262,7 @@ await locator.click() [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/input.mdx b/python/versioned_docs/version-stable/input.mdx index fe07f8c139..d651ecdd4e 100644 --- a/python/versioned_docs/version-stable/input.mdx +++ b/python/versioned_docs/version-stable/input.mdx @@ -700,6 +700,7 @@ await page.get_by_test_id("scrolling-container").evaluate("e => e.scrollTop += 1 [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/intro.mdx b/python/versioned_docs/version-stable/intro.mdx index 5dc688ee65..93c6e8aa13 100644 --- a/python/versioned_docs/version-stable/intro.mdx +++ b/python/versioned_docs/version-stable/intro.mdx @@ -99,7 +99,7 @@ pip install pytest-playwright playwright -U ## System requirements - Python 3.8 or higher. - Windows 11+, Windows Server 2019+ or Windows Subsystem for Linux (WSL). -- macOS 14 Ventura, or later. +- macOS 14 Sonoma, or later. - Debian 12, Debian 13, Ubuntu 22.04, Ubuntu 24.04, on x86-64 and arm64 architecture. ## What's next @@ -125,6 +125,7 @@ pip install pytest-playwright playwright -U [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/languages.mdx b/python/versioned_docs/version-stable/languages.mdx index 5e4e8576dd..84a2746083 100644 --- a/python/versioned_docs/version-stable/languages.mdx +++ b/python/versioned_docs/version-stable/languages.mdx @@ -51,6 +51,7 @@ Playwright for .NET comes with MSTest, NUnit, xUnit, and xUnit v3 [base classes] [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/library.mdx b/python/versioned_docs/version-stable/library.mdx index 6fa641f8aa..5ee96dbae3 100644 --- a/python/versioned_docs/version-stable/library.mdx +++ b/python/versioned_docs/version-stable/library.mdx @@ -216,6 +216,7 @@ Playwright's API is not thread-safe. If you are using Playwright in a multi-thre [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/locators.mdx b/python/versioned_docs/version-stable/locators.mdx index f0c0127125..b73d9820b5 100644 --- a/python/versioned_docs/version-stable/locators.mdx +++ b/python/versioned_docs/version-stable/locators.mdx @@ -1878,6 +1878,7 @@ For less commonly used locators, look at the [other locators](./other-locators.m [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/mock.mdx b/python/versioned_docs/version-stable/mock.mdx index ad964e97a7..7d53061853 100644 --- a/python/versioned_docs/version-stable/mock.mdx +++ b/python/versioned_docs/version-stable/mock.mdx @@ -388,6 +388,7 @@ For more details, see [WebSocketRoute]. [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/navigations.mdx b/python/versioned_docs/version-stable/navigations.mdx index 1487568065..933bec760b 100644 --- a/python/versioned_docs/version-stable/navigations.mdx +++ b/python/versioned_docs/version-stable/navigations.mdx @@ -158,6 +158,7 @@ Playwright splits the process of showing a new document in a page into **navigat [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/network.mdx b/python/versioned_docs/version-stable/network.mdx index 5de3c28184..f4e626087d 100644 --- a/python/versioned_docs/version-stable/network.mdx +++ b/python/versioned_docs/version-stable/network.mdx @@ -520,6 +520,7 @@ It might be that you are using a mock tool such as Mock Service Worker (MSW). Wh [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/other-locators.mdx b/python/versioned_docs/version-stable/other-locators.mdx index 6dd89ff285..c5f49cfeed 100644 --- a/python/versioned_docs/version-stable/other-locators.mdx +++ b/python/versioned_docs/version-stable/other-locators.mdx @@ -881,6 +881,7 @@ For example, `css=article >> text=Hello` captures the element with the text `Hel [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/pages.mdx b/python/versioned_docs/version-stable/pages.mdx index 58e4202f42..382c192d70 100644 --- a/python/versioned_docs/version-stable/pages.mdx +++ b/python/versioned_docs/version-stable/pages.mdx @@ -269,6 +269,7 @@ page.on("popup", handle_popup) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/pom.mdx b/python/versioned_docs/version-stable/pom.mdx index 2326d68934..71769e6da4 100644 --- a/python/versioned_docs/version-stable/pom.mdx +++ b/python/versioned_docs/version-stable/pom.mdx @@ -117,6 +117,7 @@ await search_page.search("search query") [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/release-notes.mdx b/python/versioned_docs/version-stable/release-notes.mdx index 43e4b59284..505a9fc696 100644 --- a/python/versioned_docs/version-stable/release-notes.mdx +++ b/python/versioned_docs/version-stable/release-notes.mdx @@ -2119,6 +2119,7 @@ This version of Playwright was also tested against the following stable channels [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/running-tests.mdx b/python/versioned_docs/version-stable/running-tests.mdx index 2c9afe2eb7..c4bfb4c733 100644 --- a/python/versioned_docs/version-stable/running-tests.mdx +++ b/python/versioned_docs/version-stable/running-tests.mdx @@ -220,6 +220,7 @@ Check out our [debugging guide](./debug.mdx) to learn more about the [Playwright [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/screenshots.mdx b/python/versioned_docs/version-stable/screenshots.mdx index 25acd57b27..18d21b2e63 100644 --- a/python/versioned_docs/version-stable/screenshots.mdx +++ b/python/versioned_docs/version-stable/screenshots.mdx @@ -140,6 +140,7 @@ await page.locator(".header").screenshot(path="screenshot.png") [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/selenium-grid.mdx b/python/versioned_docs/version-stable/selenium-grid.mdx index 27665f71b6..3cc37ec6de 100644 --- a/python/versioned_docs/version-stable/selenium-grid.mdx +++ b/python/versioned_docs/version-stable/selenium-grid.mdx @@ -140,6 +140,7 @@ This means that Selenium 3 is supported in a best-effort manner, where Playwrigh [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/service-workers.mdx b/python/versioned_docs/version-stable/service-workers.mdx index e301ab73b9..770f1b85cd 100644 --- a/python/versioned_docs/version-stable/service-workers.mdx +++ b/python/versioned_docs/version-stable/service-workers.mdx @@ -206,6 +206,7 @@ Requests for updated Service Worker main script code currently cannot be routed [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/test-assertions.mdx b/python/versioned_docs/version-stable/test-assertions.mdx index c5dc340ca6..c08b62e86e 100644 --- a/python/versioned_docs/version-stable/test-assertions.mdx +++ b/python/versioned_docs/version-stable/test-assertions.mdx @@ -39,6 +39,22 @@ import HTMLCard from '@site/src/components/HTMLCard'; | [expect(page).to_have_url()](/api/class-pageassertions.mdx#page-assertions-to-have-url) | Page has a URL | | [expect(response).to_be_ok()](/api/class-apiresponseassertions.mdx#api-response-assertions-to-be-ok) | Response has an OK status | +## Soft assertions + +By default, failed assertion will terminate test execution. Playwright also supports *soft assertions*: failed soft assertions **do not** terminate test execution, but mark the test as failed. + +```python +# Make a few checks that will not stop the test when failed... +expect.soft(page.get_by_test_id("status")).to_have_text("Success") +expect.soft(page.get_by_test_id("eta")).to_have_text("1 day") + +# ... and continue the test to check more things. +page.get_by_role("link", name="next page").click() +expect.soft(page.get_by_role("heading", name="Make another order")).to_be_visible() +``` + +Note that soft assertions only work with the [`pytest-playwright`](https://pypi.org/project/pytest-playwright/) (or [`pytest-playwright-asyncio`](https://pypi.org/project/pytest-playwright-asyncio/)) plugin, version `0.7.3` or newer. + ## Custom Expect Message You can specify a custom expect message as a second argument to the `expect` function, for example: @@ -100,6 +116,7 @@ def test_foobar(page: Page) -> None: [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/test-runners.mdx b/python/versioned_docs/version-stable/test-runners.mdx index 39d4cf3cdf..14cd75e882 100644 --- a/python/versioned_docs/version-stable/test-runners.mdx +++ b/python/versioned_docs/version-stable/test-runners.mdx @@ -301,6 +301,7 @@ async def test_foo(page: Page): [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/touch-events.mdx b/python/versioned_docs/version-stable/touch-events.mdx index 922af336d9..9d6916f65c 100644 --- a/python/versioned_docs/version-stable/touch-events.mdx +++ b/python/versioned_docs/version-stable/touch-events.mdx @@ -323,6 +323,7 @@ asyncio.run(main()) [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/trace-viewer-intro.mdx b/python/versioned_docs/version-stable/trace-viewer-intro.mdx index b8bae9d375..810f4f977d 100644 --- a/python/versioned_docs/version-stable/trace-viewer-intro.mdx +++ b/python/versioned_docs/version-stable/trace-viewer-intro.mdx @@ -113,6 +113,7 @@ To learn more check out our detailed guide on [Trace Viewer](/trace-viewer.mdx). [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/trace-viewer.mdx b/python/versioned_docs/version-stable/trace-viewer.mdx index 60110823ce..fb9138a6f6 100644 --- a/python/versioned_docs/version-stable/trace-viewer.mdx +++ b/python/versioned_docs/version-stable/trace-viewer.mdx @@ -211,6 +211,7 @@ Next to the Actions tab you will find the Metadata tab which will show you more [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/videos.mdx b/python/versioned_docs/version-stable/videos.mdx index 897133e120..7e072b9a95 100644 --- a/python/versioned_docs/version-stable/videos.mdx +++ b/python/versioned_docs/version-stable/videos.mdx @@ -122,6 +122,7 @@ Note that the video is only available after the page or browser context is close [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/webview2.mdx b/python/versioned_docs/version-stable/webview2.mdx index 62260d1395..9fe3d09759 100644 --- a/python/versioned_docs/version-stable/webview2.mdx +++ b/python/versioned_docs/version-stable/webview2.mdx @@ -186,6 +186,7 @@ For debugging tests, see the Playwright [Debugging guide](./debug). [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle" diff --git a/python/versioned_docs/version-stable/writing-tests.mdx b/python/versioned_docs/version-stable/writing-tests.mdx index 3d5311c5f9..830e7cabe6 100644 --- a/python/versioned_docs/version-stable/writing-tests.mdx +++ b/python/versioned_docs/version-stable/writing-tests.mdx @@ -184,6 +184,7 @@ def test_main_navigation(page: Page): [ElementHandle]: /api/class-elementhandle.mdx "ElementHandle" [Error]: /api/class-error.mdx "Error" [FileChooser]: /api/class-filechooser.mdx "FileChooser" +[FormData]: /api/class-formdata.mdx "FormData" [Frame]: /api/class-frame.mdx "Frame" [FrameLocator]: /api/class-framelocator.mdx "FrameLocator" [JSHandle]: /api/class-jshandle.mdx "JSHandle"