# Local browser environment

Prefer Playwright's matching supported host and browser installation. CI installs Chromium's headless shell and WebKit with `--with-deps`; do not add temporary host workarounds to project dependencies or CI.

- For Linux browser screenshots, verify a CJK fallback font is available. On WSL, a temporary Fontconfig configuration can load Windows fonts without changing the site's typography.

- In minimal Linux environments, missing Playwright shared libraries can be supplied by extracting matching distro packages into a temporary directory and setting a process-scoped `LD_LIBRARY_PATH`. Use `FONTCONFIG_FILE` for temporary fonts; keep these host workarounds out of project dependencies. On older glibc hosts, point `MINIFLARE_WORKERD_PATH` at a temporary wrapper that launches the installed workerd through a newer extracted glibc loader. Verify actual CJK glyph rendering: a previous task's subset font may omit characters even when Fontconfig reports a CJK family.

An old host may make Playwright select a frozen WebKit build whose protocol is incompatible with the current Playwright package. Validate the actual browser version; installing an arbitrary older WebKit is not a valid current-browser check. A temporary matching supported-platform download plus a private newer runtime can work, but its loader and C++ libraries must be isolated to the browser executable. Putting a newer glibc in global `LD_LIBRARY_PATH` can break Node and Chromium. Keep any such wrapper outside the repository and report the engine used. The maintenance validation used WebKit 26.5. Use the same `PLAYWRIGHT_HOST_PLATFORM_OVERRIDE` when installing and running that supported build; otherwise the driver may still use a frozen platform's protocol settings with the newer executable (for example, the removed `PushAPIEnabled`).

`BLOG_PREVIEW_PORT` and `BLOG_CLOUDFLARE_PORT` select isolated browser-test ports (defaults 4173 and 8787). Tests deliberately refuse to reuse an existing server. Use the site's generated production output, not another task's development server. Retain traces for failed tests and inspect actual CJK glyphs and both themes in screenshots.
