Playwright "Timed out waiting ... from config.webServer"
By Daniel Zoghalchali·Latchkey
Playwright started your app via webServer but the configured url never responded within the timeout. The server is slow to compile/boot in CI, crashed on start, or the url/port does not match.
What this error means
The run aborts before tests with "Timed out waiting 60000ms from config.webServer." No specs run because Playwright never confirmed the app was ready.
Playwright output
Error: Timed out waiting 60000ms from config.webServer.
at WebServer._waitForProcess
Common causes
App boots slower than the timeout in CI
A cold build (Next/Vite production build, asset compilation) on a loaded runner takes longer than the default 60s readiness window - a timing race that often clears on retry.
Wrong url/port or a crashed server
The webServer.url does not match where the app listens, or the start command exits/crashes immediately, so the url never becomes reachable.
Run the command manually in CI to confirm it boots and listens on the expected port.
Check the server logs Playwright prints for a crash on startup.
Build the app in a prior step so webServer only has to serve, not compile.
How to prevent it
Set a generous webServer.timeout for the slowest CI tier.
Pre-build the app before the E2E step so boot is fast.
Keep webServer.url and the app port in one shared value.
Frequently asked questions
What causes ""config.webServer" timed out"?
A cold build (Next/Vite production build, asset compilation) on a loaded runner takes longer than the default 60s readiness window - a timing race that often clears on retry.
How do I fix "config.webServer" timed out?
Raise the readiness timeout and match the url
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.