Skip to content
Latchkey

Playwright "Timed out waiting ... from config.webServer"

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.

How to fix it

Raise the readiness timeout and match the url

playwright.config.ts
// playwright.config.ts
export default defineConfig({
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    timeout: 180_000,
    reuseExistingServer: !process.env.CI,
  },
});

Diagnose a server that never starts

  1. Run the command manually in CI to confirm it boots and listens on the expected port.
  2. Check the server logs Playwright prints for a crash on startup.
  3. 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.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →