Playwright Browser Download Fails Behind a Proxy in CI
By Daniel Zoghalchali·Latchkey
playwright install fetches browser binaries from a CDN. Behind a corporate proxy or in a locked-down CI network, that download is blocked or times out, so the browsers are never installed.
What this error means
npx playwright install fails with "Failed to download" or a connection timeout to the Playwright CDN. Later, tests fail with "browserType.launch: Executable doesn’t exist" because the binaries were never fetched.
Playwright output
Failed to download Chromium 123.0, caused by
Error: connect ETIMEDOUT 13.x.x.x:443
at TLSSocket... (playwright-core/lib/server/registry/browserFetcher.js)
Common causes
Proxy or firewall blocks the download CDN
The runner cannot reach Playwright’s default download host directly. Without proxy settings the TLS connection times out or is refused.
No internal mirror configured
In an air-gapped or proxied network with no PLAYWRIGHT_DOWNLOAD_HOST mirror, there is nowhere reachable to fetch binaries from.
How to fix it
Point the installer at the proxy or a mirror
Provide proxy env vars, or a reachable internal download host.
# Dockerfile / CI container
FROM mcr.microsoft.com/playwright:v1.44.0-jammy
# browsers are preinstalled in the image
How to prevent it
Use the official mcr.microsoft.com/playwright image so binaries ship in the image.
Configure HTTPS_PROXY and PLAYWRIGHT_DOWNLOAD_HOST in CI.
Cache the Playwright browsers directory between runs.
Frequently asked questions
What causes "Browser download fails (proxy)"?
The runner cannot reach Playwright’s default download host directly. Without proxy settings the TLS connection times out or is refused.
How do I fix Browser download fails (proxy)?
Provide proxy env vars, or a reachable internal download host.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.