From 5dd7a04b82e45d3fd1e2bd76f9bf4a581f982455 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Tue, 31 Mar 2026 11:58:10 +0100 Subject: [PATCH 1/2] chore: release notes for langs v1.59 --- docs/src/api/class-screencast.md | 2 +- docs/src/release-notes-js.md | 6 +++--- utils/doclint/generateDotnetApi.js | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/src/api/class-screencast.md b/docs/src/api/class-screencast.md index 3c201b5f45d4c..435dd5041c3c0 100644 --- a/docs/src/api/class-screencast.md +++ b/docs/src/api/class-screencast.md @@ -31,7 +31,7 @@ await page.screencast.stop(); ### option: Screencast.start.onFrame * since: v1.59 -- `onFrame` <[function]\([Object]\): [Promise]> +- `onFrame` <[function]\([Object=ScreencastFrame]\): [Promise]> - `data` <[Buffer]> JPEG-encoded frame data. Callback that receives JPEG-encoded frame data. diff --git a/docs/src/release-notes-js.md b/docs/src/release-notes-js.md index 435911d4243f1..083df54931d65 100644 --- a/docs/src/release-notes-js.md +++ b/docs/src/release-notes-js.md @@ -197,14 +197,14 @@ await using page = await context.newPage(); ### Browser Versions -- Chromium 146.0.7680.31 +- Chromium 147.0.7727.15 - Mozilla Firefox 148.0.2 - WebKit 26.0 This version was also tested against the following stable channels: -- Google Chrome 145 -- Microsoft Edge 145 +- Google Chrome 146 +- Microsoft Edge 146 ## Version 1.58 diff --git a/utils/doclint/generateDotnetApi.js b/utils/doclint/generateDotnetApi.js index 532e0a6b35118..426ddddb4dffa 100644 --- a/utils/doclint/generateDotnetApi.js +++ b/utils/doclint/generateDotnetApi.js @@ -87,6 +87,7 @@ classNameMap.set('URL', 'string'); classNameMap.set('RegExp', 'Regex'); classNameMap.set('Readable', 'Stream'); classNameMap.set('Disposable', 'IAsyncDisposable'); +classNameMap.set('Promise', 'Task'); /** * From da7c8178668143341cf469b898d32509078f1962 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Tue, 31 Mar 2026 13:01:58 +0100 Subject: [PATCH 2/2] langs --- docs/src/api/class-page.md | 1 - docs/src/release-notes-csharp.md | 120 +++++++++++++++++++++++++++++++ docs/src/release-notes-java.md | 117 ++++++++++++++++++++++++++++++ docs/src/release-notes-python.md | 120 +++++++++++++++++++++++++++++++ 4 files changed, 357 insertions(+), 1 deletion(-) diff --git a/docs/src/api/class-page.md b/docs/src/api/class-page.md index c06b6a58b6120..89a46e0f520cc 100644 --- a/docs/src/api/class-page.md +++ b/docs/src/api/class-page.md @@ -3876,7 +3876,6 @@ Handler function to route the WebSocket. ## property: Page.screencast * since: v1.59 -* langs: js - type: <[Screencast]> [Screencast] object associated with this page. diff --git a/docs/src/release-notes-csharp.md b/docs/src/release-notes-csharp.md index 60b7717fd9d42..beed46b9e2463 100644 --- a/docs/src/release-notes-csharp.md +++ b/docs/src/release-notes-csharp.md @@ -6,6 +6,126 @@ toc_max_heading_level: 2 import LiteYouTube from '@site/src/components/LiteYouTube'; +## Version 1.59 + +### 🎬 Screencast + +New [`property: Page.screencast`] API provides a unified interface for capturing page content — both as video recordings and as real-time frame streams. + +Demo + +**Video recording** — record video with precise start/stop control, as an alternative to the [`option: Browser.newContext.recordVideoDir`] option: + +```csharp +await page.Screencast.StartAsync(new() { Path = "video.webm" }); +// ... perform actions ... +await page.Screencast.StopAsync(); +``` + +**Real-time frame capture** — stream JPEG-encoded frames for custom processing like thumbnails, live previews, AI vision, and more: + +```csharp +await page.Screencast.StartAsync(new() { + OnFrame = frame => SendToVisionModel(frame.Data), +}); +``` + +**Action annotations** — enable built-in visual annotations that highlight interacted elements and display action titles during recording: + +```csharp +await page.Screencast.StartAsync(new() { + Path = "video.webm", + Annotate = new() { Position = "top-right" }, +}); +``` + +The `Annotate` option accepts `Position` (`"top-left"`, `"top"`, `"top-right"`, `"bottom-left"`, `"bottom"`, `"bottom-right"`), `Duration` (ms per annotation), and `FontSize` (px). + +**Visual overlays** — add chapter titles and custom HTML overlays on top of the page for richer narration: + +```csharp +await page.Screencast.ShowChapterAsync("Adding TODOs", new() { + Description = "Type and press enter for each TODO", + Duration = 1000, +}); + +await page.Screencast.ShowOverlayAsync("
Recording
"); +``` + +**Agentic video receipts** — coding agents can produce video evidence of their work. After completing a task, an agent can record a walkthrough video with rich annotations for human review: + +```csharp +await page.Screencast.StartAsync(new() { + Path = "receipt.webm", + Annotate = new() { Position = "top-right" }, +}); + +await page.Screencast.ShowChapterAsync("Verifying checkout flow", new() { + Description = "Added coupon code support per ticket #1234", +}); + +// Agent performs the verification steps... +await page.Locator("#coupon").FillAsync("SAVE20"); +await page.Locator("#apply-coupon").ClickAsync(); +await Expect(page.Locator(".discount")).ToContainTextAsync("20%"); + +await page.Screencast.ShowChapterAsync("Done", new() { + Description = "Coupon applied, discount reflected in total", +}); + +await page.Screencast.StopAsync(); +``` + +The resulting video serves as a receipt: chapter titles provide context, action annotations highlight each interaction, and the visual walkthrough is faster to review than text logs. + +### 🔍 Snapshots and Locators + +- Method [`method: Page.ariaSnapshot`] to capture the aria snapshot of the page — equivalent to `Page.Locator("body").AriaSnapshotAsync()`. +- Options `Depth` and `Mode` in [`method: Locator.ariaSnapshot`]. +- Method [`method: Locator.normalize`] converts a locator to follow best practices like test ids and aria roles. +- Method [`method: Page.pickLocator`] enters an interactive mode where hovering over elements highlights them and shows the corresponding locator. Click an element to get its [Locator] back. Use [`method: Page.cancelPickLocator`] to cancel. + +### New APIs + +#### Screencast + +- [`property: Page.screencast`] provides video recording, real-time frame streaming, and overlay management. +- Methods [`method: Screencast.start`] and [`method: Screencast.stop`] for recording and frame capture. +- Methods [`method: Screencast.showChapter`] and [`method: Screencast.showOverlay`] for visual annotations. +- Methods [`method: Screencast.showOverlays`] and [`method: Screencast.hideOverlays`] for overlay visibility control. + +#### Storage, Console and Errors + +- Method [`method: BrowserContext.setStorageState`] clears existing cookies, local storage, and IndexedDB for all origins and sets a new storage state — no need to create a new context. +- Methods [`method: Page.clearConsoleMessages`] and [`method: Page.clearPageErrors`] to clear stored messages and errors. +- Option `Filter` in [`method: Page.consoleMessages`] and [`method: Page.pageErrors`] controls which messages are returned. +- Method [`method: ConsoleMessage.timestamp`]. + +#### Miscellaneous + +- [`property: BrowserContext.debugger`] provides programmatic control over the Playwright debugger. +- Method [`method: BrowserContext.isClosed`]. +- Method [`method: Request.existingResponse`] returns the response without waiting. +- Method [`method: Response.httpVersion`] returns the HTTP version used by the response. +- Event [`event: CDPSession.close`] for CDP sessions. +- Option `Live` in [`method: Tracing.start`] for real-time trace updates. +- Option `ArtifactsDir` in [`method: BrowserType.launch`] to configure the artifacts directory. + +### Breaking Changes ⚠️ + +- Removed macOS 14 support for WebKit. We recommend upgrading your macOS version, or keeping an older Playwright version. + +### Browser Versions + +- Chromium 147.0.7727.15 +- Mozilla Firefox 148.0.2 +- WebKit 26.0 + +This version was also tested against the following stable channels: + +- Google Chrome 146 +- Microsoft Edge 146 + ## Version 1.58 ### UI Mode and Trace Viewer Improvements diff --git a/docs/src/release-notes-java.md b/docs/src/release-notes-java.md index 59f8db5c84edb..81c3c1f1a9fbc 100644 --- a/docs/src/release-notes-java.md +++ b/docs/src/release-notes-java.md @@ -6,6 +6,123 @@ toc_max_heading_level: 2 import LiteYouTube from '@site/src/components/LiteYouTube'; +## Version 1.59 + +### 🎬 Screencast + +New [`property: Page.screencast`] API provides a unified interface for capturing page content — both as video recordings and as real-time frame streams. + +Demo + +**Video recording** — record video with precise start/stop control, as an alternative to the [`option: Browser.newContext.recordVideoDir`] option: + +```java +page.screencast().start(new Screencast.StartOptions().setPath(Paths.get("video.webm"))); +// ... perform actions ... +page.screencast().stop(); +``` + +**Real-time frame capture** — stream JPEG-encoded frames for custom processing like thumbnails, live previews, AI vision, and more: + +```java +page.screencast().start(new Screencast.StartOptions() + .setOnFrame(frame -> sendToVisionModel(frame.data))); +``` + +**Action annotations** — enable built-in visual annotations that highlight interacted elements and display action titles during recording: + +```java +page.screencast().start(new Screencast.StartOptions() + .setPath(Paths.get("video.webm")) + .setAnnotate(new Screencast.Annotate().setPosition("top-right"))); +``` + +The `annotate` option accepts `position` (`"top-left"`, `"top"`, `"top-right"`, `"bottom-left"`, `"bottom"`, `"bottom-right"`), `duration` (ms per annotation), and `fontSize` (px). + +**Visual overlays** — add chapter titles and custom HTML overlays on top of the page for richer narration: + +```java +page.screencast().showChapter("Adding TODOs", + new Screencast.ShowChapterOptions() + .setDescription("Type and press enter for each TODO") + .setDuration(1000)); + +page.screencast().showOverlay("
Recording
"); +``` + +**Agentic video receipts** — coding agents can produce video evidence of their work. After completing a task, an agent can record a walkthrough video with rich annotations for human review: + +```java +page.screencast().start(new Screencast.StartOptions() + .setPath(Paths.get("receipt.webm")) + .setAnnotate(new Screencast.Annotate().setPosition("top-right"))); + +page.screencast().showChapter("Verifying checkout flow", + new Screencast.ShowChapterOptions() + .setDescription("Added coupon code support per ticket #1234")); + +// Agent performs the verification steps... +page.locator("#coupon").fill("SAVE20"); +page.locator("#apply-coupon").click(); +assertThat(page.locator(".discount")).containsText("20%"); + +page.screencast().showChapter("Done", + new Screencast.ShowChapterOptions() + .setDescription("Coupon applied, discount reflected in total")); + +page.screencast().stop(); +``` + +The resulting video serves as a receipt: chapter titles provide context, action annotations highlight each interaction, and the visual walkthrough is faster to review than text logs. + +### 🔍 Snapshots and Locators + +- Method [`method: Page.ariaSnapshot`] to capture the aria snapshot of the page — equivalent to `page.locator("body").ariaSnapshot()`. +- Options `depth` and `mode` in [`method: Locator.ariaSnapshot`]. +- Method [`method: Locator.normalize`] converts a locator to follow best practices like test ids and aria roles. +- Method [`method: Page.pickLocator`] enters an interactive mode where hovering over elements highlights them and shows the corresponding locator. Click an element to get its [Locator] back. Use [`method: Page.cancelPickLocator`] to cancel. + +### New APIs + +#### Screencast + +- [`property: Page.screencast`] provides video recording, real-time frame streaming, and overlay management. +- Methods [`method: Screencast.start`] and [`method: Screencast.stop`] for recording and frame capture. +- Methods [`method: Screencast.showChapter`] and [`method: Screencast.showOverlay`] for visual annotations. +- Methods [`method: Screencast.showOverlays`] and [`method: Screencast.hideOverlays`] for overlay visibility control. + +#### Storage, Console and Errors + +- Method [`method: BrowserContext.setStorageState`] clears existing cookies, local storage, and IndexedDB for all origins and sets a new storage state — no need to create a new context. +- Methods [`method: Page.clearConsoleMessages`] and [`method: Page.clearPageErrors`] to clear stored messages and errors. +- Option `filter` in [`method: Page.consoleMessages`] and [`method: Page.pageErrors`] controls which messages are returned. +- Method [`method: ConsoleMessage.timestamp`]. + +#### Miscellaneous + +- [`property: BrowserContext.debugger`] provides programmatic control over the Playwright debugger. +- Method [`method: BrowserContext.isClosed`]. +- Method [`method: Request.existingResponse`] returns the response without waiting. +- Method [`method: Response.httpVersion`] returns the HTTP version used by the response. +- Event [`event: CDPSession.close`] for CDP sessions. +- Option `live` in [`method: Tracing.start`] for real-time trace updates. +- Option `artifactsDir` in [`method: BrowserType.launch`] to configure the artifacts directory. + +### Breaking Changes ⚠️ + +- Removed macOS 14 support for WebKit. We recommend upgrading your macOS version, or keeping an older Playwright version. + +### Browser Versions + +- Chromium 147.0.7727.15 +- Mozilla Firefox 148.0.2 +- WebKit 26.0 + +This version was also tested against the following stable channels: + +- Google Chrome 146 +- Microsoft Edge 146 + ## Version 1.58 ### UI Mode and Trace Viewer Improvements diff --git a/docs/src/release-notes-python.md b/docs/src/release-notes-python.md index 49aa5671fa705..41745ad3c627c 100644 --- a/docs/src/release-notes-python.md +++ b/docs/src/release-notes-python.md @@ -6,6 +6,126 @@ toc_max_heading_level: 2 import LiteYouTube from '@site/src/components/LiteYouTube'; +## Version 1.59 + +### 🎬 Screencast + +New [`property: Page.screencast`] API provides a unified interface for capturing page content — both as video recordings and as real-time frame streams. + +Demo + +**Video recording** — record video with precise start/stop control, as an alternative to the [`option: Browser.newContext.recordVideoDir`] option: + +```python +page.screencast.start(path="video.webm") +# ... perform actions ... +page.screencast.stop() +``` + +**Real-time frame capture** — stream JPEG-encoded frames for custom processing like thumbnails, live previews, AI vision, and more: + +```python +page.screencast.start( + on_frame=lambda frame: send_to_vision_model(frame["data"]), +) +``` + +**Action annotations** — enable built-in visual annotations that highlight interacted elements and display action titles during recording: + +```python +page.screencast.start( + path="video.webm", + annotate={"position": "top-right"}, +) +``` + +The `annotate` option accepts `position` (`'top-left'`, `'top'`, `'top-right'`, `'bottom-left'`, `'bottom'`, `'bottom-right'`), `duration` (ms per annotation), and `font_size` (px). + +**Visual overlays** — add chapter titles and custom HTML overlays on top of the page for richer narration: + +```python +page.screencast.show_chapter("Adding TODOs", + description="Type and press enter for each TODO", + duration=1000, +) + +page.screencast.show_overlay('
Recording
') +``` + +**Agentic video receipts** — coding agents can produce video evidence of their work. After completing a task, an agent can record a walkthrough video with rich annotations for human review: + +```python +page.screencast.start( + path="receipt.webm", + annotate={"position": "top-right"}, +) + +page.screencast.show_chapter("Verifying checkout flow", + description="Added coupon code support per ticket #1234", +) + +# Agent performs the verification steps... +page.locator("#coupon").fill("SAVE20") +page.locator("#apply-coupon").click() +expect(page.locator(".discount")).to_contain_text("20%") + +page.screencast.show_chapter("Done", + description="Coupon applied, discount reflected in total", +) + +page.screencast.stop() +``` + +The resulting video serves as a receipt: chapter titles provide context, action annotations highlight each interaction, and the visual walkthrough is faster to review than text logs. + +### 🔍 Snapshots and Locators + +- Method [`method: Page.ariaSnapshot`] to capture the aria snapshot of the page — equivalent to `page.locator('body').aria_snapshot()`. +- Options `depth` and `mode` in [`method: Locator.ariaSnapshot`]. +- Method [`method: Locator.normalize`] converts a locator to follow best practices like test ids and aria roles. +- Method [`method: Page.pickLocator`] enters an interactive mode where hovering over elements highlights them and shows the corresponding locator. Click an element to get its [Locator] back. Use [`method: Page.cancelPickLocator`] to cancel. + +### New APIs + +#### Screencast + +- [`property: Page.screencast`] provides video recording, real-time frame streaming, and overlay management. +- Methods [`method: Screencast.start`] and [`method: Screencast.stop`] for recording and frame capture. +- Methods [`method: Screencast.showChapter`] and [`method: Screencast.showOverlay`] for visual annotations. +- Methods [`method: Screencast.showOverlays`] and [`method: Screencast.hideOverlays`] for overlay visibility control. + +#### Storage, Console and Errors + +- Method [`method: BrowserContext.setStorageState`] clears existing cookies, local storage, and IndexedDB for all origins and sets a new storage state — no need to create a new context. +- Methods [`method: Page.clearConsoleMessages`] and [`method: Page.clearPageErrors`] to clear stored messages and errors. +- Option `filter` in [`method: Page.consoleMessages`] and [`method: Page.pageErrors`] controls which messages are returned. +- Method [`method: ConsoleMessage.timestamp`]. + +#### Miscellaneous + +- [`property: BrowserContext.debugger`] provides programmatic control over the Playwright debugger. +- Method [`method: BrowserContext.isClosed`]. +- Method [`method: Request.existingResponse`] returns the response without waiting. +- Method [`method: Response.httpVersion`] returns the HTTP version used by the response. +- Event [`event: CDPSession.close`] for CDP sessions. +- Option `live` in [`method: Tracing.start`] for real-time trace updates. +- Option `artifacts_dir` in [`method: BrowserType.launch`] to configure the artifacts directory. + +### Breaking Changes ⚠️ + +- Removed macOS 14 support for WebKit. We recommend upgrading your macOS version, or keeping an older Playwright version. + +### Browser Versions + +- Chromium 147.0.7727.15 +- Mozilla Firefox 148.0.2 +- WebKit 26.0 + +This version was also tested against the following stable channels: + +- Google Chrome 146 +- Microsoft Edge 146 + ## Version 1.58 ### UI Mode and Trace Viewer Improvements