Cypress "Timed out waiting for the browser to connect" / Verify
By Kaveh Alemi·Latchkey
On first use Cypress verifies its binary by smoke-launching the bundled browser. On a slow or contended CI runner that verification - or the per-run browser launch - can exceed the timeout and abort before specs run.
What this error means
Cypress fails at startup with "Cypress verification timed out" or "Timed out waiting for the browser to connect after 60000 ms." Re-running frequently succeeds, pointing at a slow launch rather than a broken install.
Cypress output
Timed out waiting for the browser to connect. Retrying...
Timed out waiting for the browser to connect. Retrying again...
The browser never connected. Something is wrong. The tests cannot run.
Common causes
Slow binary verification on a contended runner
The first-run verify launches the bundled Electron/Chromium. On an overloaded or cold runner this can crawl and exceed the verify timeout - a timing issue, not a corrupt binary.
Browser launch races a busy runner
Even after verification, a heavily loaded runner can take longer than 60s to bring the browser process up and connect, so Cypress gives up.
How to fix it
Verify ahead of time and raise the connect timeout
Run cypress verify as its own cached step, and give the browser more time to connect on slow CI.
Terminal
npx cypress verify
# raise the browser connect timeout (ms)
CYPRESS_INTERNAL_BROWSER_CONNECT_TIMEOUT=120000 npx cypress run
Run and cache cypress verify as a discrete CI step.
Cache ~/.cache/Cypress keyed on the lockfile.
Raise the connect timeout on slow runner tiers.
Frequently asked questions
What causes ""verification timed out""?
The first-run verify launches the bundled Electron/Chromium. On an overloaded or cold runner this can crawl and exceed the verify timeout - a timing issue, not a corrupt binary.
How do I fix "verification timed out"?
Run cypress verify as its own cached step, and give the browser more time to connect on slow CI.
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.