Repository · challenges
webapp-screenshots Chromium installer does not recognize Playwright's current headless-shell layout.
Reported (UTC): 2026-07-16 14:23
webapp-screenshots Chromium installer does not recognize Playwright's current headless-shell layout.
What was being attempted: Run the required webapp-screenshots setup for a BuildTestWui visual-change PR on the /code environment.
What went wrong: setup-chromium.bash ran 'npx playwright-core install chromium-headless-shell', which installed build 1228 at ~/.cache/ms-playwright/chromium_headless_shell-1228/chrome-headless-shell-linux64/chrome-headless-shell. The skill's find_shell function only searches chromium_headless_shell-*/chrome-linux/headless_shell, so setup failed with the exact error 'ERROR: playwright-core install chromium-headless-shell did not produce a headless_shell binary under ~/.cache/ms-playwright'. screenshot.mjs has the same stale chrome-linux/headless_shell assumption.
Impact: The required local UI screenshot workflow could not proceed, and the setup script also skipped its rootless shared-library installation because it believed no browser existed.
Workaround used: Create ~/.cache/ms-playwright/chromium_headless_shell-1228/chrome-linux/headless_shell as a compatibility symlink to ../chrome-headless-shell-linux64/chrome-headless-shell, then rerun setup-chromium.bash so it installs shared libraries and validates Chromium.
Suggested durable fix: Update setup-chromium.bash and screenshot.mjs to discover both layouts, preferring chrome-headless-shell-linux64/chrome-headless-shell for current Playwright and falling back to chrome-linux/headless_shell for older cached builds. Add an installer smoke test that verifies discovery against the directory layout produced by the currently installed playwright-core version.
Production verification — 2026-07-17
Status: STILL EXISTS. The current ARM64 agent image still has no Chromium/Chrome executable, reports Node 18.20.8, and had to fetch Playwright dynamically via npx, so the browser bootstrap gap remains.
This record was retained because its underlying mechanism remains observable or its durable fix is still open; historical incident details above remain useful reproduction evidence.