diff --git a/package-lock.json b/package-lock.json index a85ff2458bad0..364025c2b98a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "native-keymap": "^3.3.5", "node-pty": "^1.2.0-beta.12", "open": "^10.1.2", - "playwright-core": "1.59.0-alpha-2026-02-20", + "playwright-core": "1.59.1", "ssh2": "^1.16.0", "tas-client": "0.3.1", "undici": "^7.24.0", @@ -4496,19 +4496,6 @@ "agent-browser": "bin/agent-browser.js" } }, - "node_modules/agent-browser/node_modules/playwright-core": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", @@ -15515,9 +15502,9 @@ } }, "node_modules/playwright-core": { - "version": "1.59.0-alpha-2026-02-20", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.0-alpha-2026-02-20.tgz", - "integrity": "sha512-BK7oUBgMSbxfkQ579s270t0EkEyT2L2DA7qfMV4kaHanQOO0UK4mfyVLpWQsa+vUr/l7LxJGWsKlWcXD2QU9NQ==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", + "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" diff --git a/package.json b/package.json index 98c390f5b5468..c6be57a1ca475 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "native-keymap": "^3.3.5", "node-pty": "^1.2.0-beta.12", "open": "^10.1.2", - "playwright-core": "1.59.0-alpha-2026-02-20", + "playwright-core": "1.59.1", "ssh2": "^1.16.0", "tas-client": "0.3.1", "undici": "^7.24.0", diff --git a/src/vs/platform/browserView/node/playwrightTab.ts b/src/vs/platform/browserView/node/playwrightTab.ts index 0a73676455fe1..9f7ff40b511ad 100644 --- a/src/vs/platform/browserView/node/playwrightTab.ts +++ b/src/vs/platform/browserView/node/playwrightTab.ts @@ -9,10 +9,12 @@ import { Emitter, Event } from '../../../base/common/event.js'; import { CancellationToken } from '../../../base/common/cancellation.js'; import { createCancelablePromise, raceCancellablePromises } from '../../../base/common/async.js'; +type IAiAriaSnapshotOptions = NonNullable[0]> & { _track?: string }; + declare module 'playwright-core' { interface Page { - // A hidden Playwright method that returns an AI-friendly snapshot of the page. - _snapshotForAI(options?: { track?: string }): Promise<{ full: string; incremental?: string }>; + // We defined this here to be able to use the unofficial `_track` option + ariaSnapshot(options?: IAiAriaSnapshotOptions): Promise; } } @@ -165,7 +167,7 @@ export class PlaywrightTab { this._needsFullSnapshot = false; } - const snapshotFromPage = await this.safeRunAgainstPage((page) => page._snapshotForAI({ track: 'response' })).catch(() => { + const snapshotFromPage = await this.safeRunAgainstPage((page) => this.getAiSnapshot(page, full)).catch(() => { this._needsFullSnapshot = true; return undefined; }); @@ -174,7 +176,7 @@ export class PlaywrightTab { const logs = this._logs; this._logs = []; - const snapshot = (full ? snapshotFromPage?.full : snapshotFromPage?.incremental ?? snapshotFromPage?.full)?.trim() ?? ''; + const snapshot = snapshotFromPage?.trim() ?? ''; return [ ...(title ? [`Page Title: ${title}`] : []), @@ -189,6 +191,14 @@ export class PlaywrightTab { ].join('\n'); } + private getAiSnapshot(page: playwright.Page, full: boolean): Promise { + const options: IAiAriaSnapshotOptions = { mode: 'ai' }; + if (!full) { + options._track = 'response'; + } + return page.ariaSnapshot(options); + } + private async runAndWaitForCompletion(callback: (token: CancellationToken) => Promise, token = CancellationToken.None): Promise { const requests: playwright.Request[] = [];