Upgrade Chromium to 152.0.7977.42 - #340
Merged
Merged
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
Bugbot Autofix prepared fixes for both issues found in the latest run.
- ✅ Fixed: Pinned FFmpeg release missing
- Both Dockerfiles now pin to a published FFmpeg release/version pair whose checksum and archives are available, preventing cache-miss download failures.
- ✅ Fixed: Ephemeral daily FFmpeg pin
- The FFmpeg pin was moved from a daily autobuild tag to a retained month-end autobuild tag so clean builds do not break after daily-tag pruning.
Or push these changes by commenting:
@cursor push 7c9d98fa2c
Preview (7c9d98fa2c)
diff --git a/images/chromium-headful/Dockerfile b/images/chromium-headful/Dockerfile
--- a/images/chromium-headful/Dockerfile
+++ b/images/chromium-headful/Dockerfile
@@ -112,8 +112,8 @@
<<-'EOT'
set -eux
FFMPEG_CACHE_PATH="/tmp/cache/ffmpeg"
- FFMPEG_RELEASE="autobuild-2026-08-18-15-03"
- FFMPEG_VERSION="n8.1.2-44-g7c533d0f86"
+ FFMPEG_RELEASE="autobuild-2026-07-31-14-10"
+ FFMPEG_VERSION="n8.1.2-34-g9b6c8969e0"
case ${TARGETARCH:-amd64} in
"amd64") FFMPEG_TARGET_ARCH="64" ;;
"arm64") FFMPEG_TARGET_ARCH="arm64" ;;
diff --git a/images/chromium-headless/image/Dockerfile b/images/chromium-headless/image/Dockerfile
--- a/images/chromium-headless/image/Dockerfile
+++ b/images/chromium-headless/image/Dockerfile
@@ -60,8 +60,8 @@
<<-'EOT'
set -eux
FFMPEG_CACHE_PATH="/tmp/cache/ffmpeg"
- FFMPEG_RELEASE="autobuild-2026-08-18-15-03"
- FFMPEG_VERSION="n8.1.2-44-g7c533d0f86"
+ FFMPEG_RELEASE="autobuild-2026-07-31-14-10"
+ FFMPEG_VERSION="n8.1.2-34-g9b6c8969e0"
case ${TARGETARCH:-amd64} in
"amd64") FFMPEG_TARGET_ARCH="64" ;;
"arm64") FFMPEG_TARGET_ARCH="arm64" ;;You can send follow-ups to the cloud agent here.
Reviewed by Cursor Bugbot for commit c3cb80c. Configure here.
dprevoznik
added a commit
that referenced
this pull request
Aug 18, 2026
## Summary `browsers.playwright.execute` injected `page` as `context.pages()[0]` — the **oldest** tab in the context — regardless of which tab was active. In any multi-tab session this bound `page` to the wrong tab, so calls like `page.pdf()`, `page.title()`, etc. operated on a different tab than the one the automation had just navigated to. ## Change - `server/runtime/playwright-daemon.ts`: added `resolveActivePage`, which resolves the browser's actual active tab over CDP — `Target.getTargets` filtered to `tab` targets, matched on `TargetInfo.embedderData.tabActive` (exposed by the Chrome 152.0.7977.42 build this image now ships, per #340), then mapped to a Playwright `Page` via `Target.autoAttachRelated`. Every CDP session it opens is temporary and detached before returning, so the daemon stays stateless across requests. `page` is bound to that resolved tab directly; resolution failures surface like any other daemon error, with no ordering heuristic or fallback. - While scanning `context.pages()` for the matching tab, a page whose CDP session setup or `Target.getTargetInfo` call fails is skipped rather than aborting the whole search, so one crashed or closing tab can't block resolution of the real active tab. - `server/openapi.yaml`: documents the selection policy on `/playwright/execute` — `page` is bound to an active tab reported by Chrome. In single-window sessions that's the foreground tab; with multiple browser windows open, Chrome reports one active tab per window and the selected window is unspecified. `context.pages()` remains the explicit escape hatch. - `server/e2e/e2e_playwright_test.go`: extends the existing `TestPlaywrightExecuteAPI` (same container/warm daemon connection, no second container) to open a second tab via a `data:` URL and assert `page` binds to it, then bring the original tab — selected by URL rather than `context.pages()[0]` — back to the foreground and assert binding follows focus, not tab-creation order. ## Scope Depends on this image's Chrome 152.0.7977.42 exposing `TargetInfo.embedderData.tabActive`; single-tab sessions are unaffected. Cross-context foreground-tab resolution is out of scope — `resolveActivePage` searches the same `context` (`contexts()[0]`) already exposed to user code, matching this endpoint's existing single-context design rather than introducing a new limitation. ## Testing - `go vet ./e2e/...` passes. - `esbuild` bundles the daemon cleanly. - `TestPlaywrightExecuteAPI` (extended) passes in CI against the image's real Chrome 152 build, covering both the new-tab and refocus cases; requires docker, skips otherwise. --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Mason Williams <43387599+masnwilliams@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Upgrade the Chrome for Testing release used by the headful and headless browser images from
148.0.7778.97to the latest stable release,152.0.7977.42.The existing install path continues to fetch Chrome and ChromeDriver from the same release so their versions remain matched.
The image builds also depended on a removed floating FFmpeg
n7.1-latestasset. Keep FFmpeg on 7.1 by pinning both images to the immutablen7.1.5-12-g1fdbca85aaarchives from retained month-end releaseautobuild-2026-07-31-14-10.Testing
GOCACHE=/tmp/kernel-images-go-cache GOMODCACHE=/tmp/kernel-images-go-mod make test-unit152.0.7977.42Chrome/152.0.7977.42over/json/versionNote
Medium Risk
Touches core browser automation binaries (Chrome 148→152) and recording FFmpeg sourcing; pinned artifacts reduce build drift but runtime WebDriver/BiDi behavior may change until CI e2e completes.
Overview
Bumps Chrome for Testing and ChromeDriver from
148.0.7778.97to152.0.7977.42in bothchromium-headfulandchromium-headlessimage Dockerfiles, keeping the existing matched-pair install fromchrome-for-testing-public.Replaces the removed floating FFmpeg
n7.1-latestdownload with a pinned BtbN build: releaseautobuild-2026-07-31-14-10, versionn7.1.5-12-g1fdbca85aa, including checksum URLs tied to that release instead oflatest.Reviewed by Cursor Bugbot for commit 8084bc0. Bugbot is set up for automated code reviews on this repo. Configure here.