Test your app in a real browser
A 200 on the homepage still hides a broken login. A browser flow clicks through the live page and asserts on what visitors see after JavaScript runs.
Three click-throughs teams run on a schedule
Each example is a short executable spec — the same language the dashboard editor uses. No Playwright suite to maintain.
use browser
test "signing in lands on the dashboard" {
when {
browser.open "https://app.example.com/login"
browser.fill textbox "Email" with "m@example.com"
browser.fill textbox "Password" with "monitor-pw"
browser.click button "Sign in"
}
then {
eventually within 5s {
expect browser.path "/dashboard"
}
expect browser.heading "Dashboard"
}
}use browser
test "checkout reaches confirmation" {
when {
browser.open "https://shop.example.com/cart"
browser.click button "Checkout"
browser.fill textbox "Card" with "4242424242424242"
browser.click button "Pay now"
}
then {
eventually within 10s {
expect browser.heading "Order confirmed"
}
}
}use browser
test "the settings page paints" {
when {
browser.open "https://app.example.com/settings"
}
then {
eventually within 5s {
expect browser.heading "Settings"
}
expect browser.button "Save"
}
}Sign-in lands on the dashboard
Checkout reaches the confirmation
A client-rendered page paints
HTTP can only see the request
An API flow signs in and calls the endpoint the token authorises — the right check when the path is JSON. A browser flow is for the failures that only appear once the page has painted: a client-rendered form, a checkout that depends on hydration, a dashboard that never routes.
HTTP flow
- Posts credentials and reads the token back
- Bills one ping per request from the shared allowance
- Catches a broken session store or JWKS rotation
Browser flow
- Opens the page, fills fields, clicks buttons
- Bills $2.50 per 1,000 runs on its own meter
- Catches a login that breaks only after JavaScript runs
Priced per run, not per click
One browser run bills $2.50 per 1,000 on a separate flow-run meter — none included in the subscription. HTTP-only flows still draw from the shared ping allowance.
Hourly sign-in check ≈ a few cents a month. Pair with a 1-minute HTTP monitor when you need faster detection on the endpoint the page depends on.
From a verified domain to a named failure
Three steps from an empty dashboard to a click-through that pages you when it breaks.
Verify the domain
Prove the team controls the host the browser will drive. A session will not navigate outside verified domains.Write the click-through
Open the page, fill fields by role and name, click the button, and assert on the heading or path that means "it worked".Get alerted on the failing step
A broken sign-in or checkout alerts through your existing channels, naming the expectation that failed.
browser.open "…/login" browser.fill textbox "Email" with … browser.click button "Sign in" expect browser.heading "Dashboard" ✓ 4 steps · 2.1s Next run in 15 min
Questions about browser flows
When to use a browser session, how a run is billed, and what a short spec can express.
When should I use a browser flow instead of HTTP?
When the failure only appears once JavaScript has run and the page is laid out — a client-rendered login, a checkout that depends on hydration, a dashboard that never paints. An API path that answers with JSON stays on an HTTP flow.
How is a browser run billed?
One event per run on a separate flow-run meter at $2.50 per 1,000 runs — none included in the subscription — plus the measured session seconds on the cost ledger. HTTP-only flows still bill one ping per request from the shared allowance.
How often can a browser flow run?
Every 15 minutes at the fastest, then 30 minutes, hourly, every 3, 6 or 12 hours, or daily; hourly is the default. Pair it with a 1-minute HTTP monitor on the endpoint the page depends on when you need faster detection.
Do I need Playwright or a test suite?
No. The flow is a short executable spec in the dashboard — open, fill, click, expect — not a repo of Playwright scripts to maintain. Teams that already own a Playwright suite and want monitors-as-code may still prefer a tool built around that model.
What can't a browser flow express?
Branching, computation, and generated data. A signup that needs a fresh address every run wants a fixed fixture account, the same constraint every other flow has.
Catch the break your visitors would hit
Write a click-through once. Run it on a schedule. Get the failing line when the page stops working.