From 146dcf46f5bd78fd4917aff663d1129d450f9e8f Mon Sep 17 00:00:00 2001 From: STDquantum <60764289+STDquantum@users.noreply.github.com> Date: Fri, 23 Oct 2026 05:17:03 +0800 Subject: [PATCH] fix(browser): capture the full visual viewport (#5621) * fix(browser): capture the full visual viewport * fix(browser): preserve surface geometry and high-DPI screenshot bounds * fix(browser): reject stale screenshot captures --- scripts/fixtures/browser-verifier-site.mjs | 7 + .../lib/browser-viewport-screenshot-e2e.mjs | 195 ++++++ scripts/verify-real-browser.mjs | 7 + src/browser/CdpScreenshot.ts | 170 +++++- .../cdpScreenshotDocumentIdentity.test.ts | 567 ++++++++++++++++++ tests/fixtures/fakeCdpBrowserResults.ts | 17 + 6 files changed, 946 insertions(+), 17 deletions(-) create mode 100644 scripts/lib/browser-viewport-screenshot-e2e.mjs diff --git a/scripts/fixtures/browser-verifier-site.mjs b/scripts/fixtures/browser-verifier-site.mjs index db660699d8..b86c04fa31 100644 --- a/scripts/fixtures/browser-verifier-site.mjs +++ b/scripts/fixtures/browser-verifier-site.mjs @@ -55,6 +55,13 @@ export async function startBrowserVerifierSite() { response.once("close", () => clearTimeout(timer)); return; } + if (request.url === "/screenshot-viewport") { + response.setHeader("content-type", "text/html"); + response.end( + `
`, + ); + return; + } if (request.url === "/screenshot-noise") { response.setHeader("content-type", "text/html"); response.end(`