Start
How runs work
What happens between pressing Run and reading the result.
All documentation
Understanding the lifecycle of a run makes results easier to trust and failures easier to read.
Lifecycle
- Accepted. The request is authenticated, the test definition is validated again, the target URL is checked (http or https, public address, allowed host), and one run is reserved from your monthly quota. With an
Idempotency-Key, a repeated request returns the original runs instead of creating new ones. - Queued. The run waits for a free slot. Your plan sets how many runs execute at once (Free 1, Pro 3, Team 10); extra runs wait their turn.
- Starting. A fresh Chromium session is launched on Cloudflare Browser Run with a network allow list made of the environment's hosts and the project's third party hosts. If no browser is available, the launch is tried up to four times with backoff.
- Running. Steps execute in order in a new browser context: no cookies, storage or cache from any other run. Assertions wait up to the step timeout for the page to match; a failure is never retried into a pass.
- Finished. The result is stored with every step, console messages, network requests (without query strings or bodies) and screenshots. On Pro and Team a Playwright trace is kept too, unless the test uses secrets or sensitive steps. The browser is closed.
Results
| Result | Meaning |
|---|---|
| Passed | Every step passed and no run level check failed. |
| Failed | A step or a check failed. The failure category says why: assertion failed, element not found, navigation failed, uncaught page error, visual difference, and so on. |
| Timed out | The whole run exceeded its time limit: by default 2 minutes for flows and 4 minutes for crawls, at most 5. |
| Runner error | A problem on our side, such as no browser being available. It says nothing about your site and is refunded. |
| Cancelled | Someone cancelled it. Runs cancelled before they start are refunded. |
What a run checks besides your steps
- An uncaught JavaScript exception fails the run by default. Turn this off per test if a third party script is noisy.
- Optionally, any console error, or any response of 500 or above from your own hosts, fails the run.
- A navigation to a host outside the allow list fails the step with a clear message.
Reliability
Queue messages can be delivered more than once; every state change is conditional, so a duplicate never creates a second run or overwrites a finished one. Runs that stop reporting progress are marked as runner errors and refunded by a reconciliation job that runs every minute.