Check every page in a browser
Add a browser verification step that starts your app, opens every page it can find in Chromium, and fails the task on console errors, failed requests and HTTP errors.
Prepare the project
Browser checks use Playwright from the project's own dependencies:
npm i -D playwright && npx playwright install chromiumAdd the step
On the project page, under Advanced policy (JSON), add a browser step to verification.steps:
{
"verification": {
"steps": [
{ "kind": "test" },
{
"kind": "browser",
"name": "QA",
"url": "http://127.0.0.1:3000/",
"start": { "command": ["npm", "run", "dev"], "readyTimeoutMs": 120000, "env": { "PORT": "3000" } },
"discover": { "maxPages": 25, "maxDepth": 3, "paths": ["/checkout"], "exclude": ["/logout", "/admin"] }
}
]
}
}The step starts the app, waits until url answers, and stops it afterwards. If the app exits or never
answers, the step fails with the app's output.
What discovery visits
url, then same-origin links found on each page, up tomaxDepthlinks deep;- the
pathsyou list; - routes from file-based routers in the project — Next.js (
app/**/page.*,pages/), Nuxt (pages/), SvelteKit (src/routes/**/+page.svelte), Remix / React Router flat routes (app/routes/), Astro (src/pages/). Dynamic routes are visited only when a link leads to them.
Paths starting with an exclude prefix are never opened. The report lists every page with its status and
where it was found; screenshots are stored for the start page and up to nine broken pages.
Limits
Discovery follows links and file routes only. It does not fill in forms or sign in: a page behind a login is checked as it appears to a visitor who is not signed in.