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/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-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.
+
+
+
+**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.
+
+
+
+**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-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/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.
+
+
+
+**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
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');
/**
*