Skip to content

Browser Lite monitor

A Browser Lite monitor loads a single URL in a real browser, runs a short list of assertions against the rendered page, and records a screenshot on failure. It catches issues that an HTTP monitor misses — JavaScript errors, broken third-party widgets, missing fonts, layout shifts, content rendered only after JS execution.

For multi-step user journeys (sign-in → checkout → confirmation), use a Browser Flow monitor instead.

Plan & add-ons

Browser Lite slots are sold per variant:

VariantMinimum intervalWhere to get it
Standard5 min$4.99/mo per slot (Starter+). Pro includes 2; Business includes 5.
Fast1 min$9.99/mo per slot (Pro+). Business includes 2.

Self-hosted Browser Lite slots ($9.99/mo, Starter+, 1-min minimum interval, no managed runtime cap) run the same check on your own runner — use them for browser checks against private endpoints or to avoid the cloud-managed runtime cap.

Top-level configuration

FieldTypeDefaultNotes
URLURLPage to load. Required.
BrowserenumchromiumOne of chromium, firefox, webkit.
BrowsersarrayRun the same check across multiple engines (Business plan + add-ons). Takes precedence over Browser when set.
Viewportobject1280 × 720{width, height}. Width 320–3840, height 240–2160.
User agentstringbrowser defaultOptional override. Max 500 chars.
Wait untilenumloadOne of load, domcontentloaded, networkidle, commit.
AssertionsarrayOne or more page-level assertions (see below).
Screenshot on failurebooltrueCapture a screenshot when an assertion fails.
Trace captureboolfalseRecord a full trace artifact. Larger; useful for debugging intermittent failures.
Ignore HTTPS errorsboolfalseDisable certificate verification. Staging-only.

Assertions

Browser Lite supports exactly six assertion types. Each entry in the assertions array has a type and a params object:

AssertionParamsChecks
status_codeoperator? (eq, neq, gt, lt, gte, lte, in, not_in — default eq), value (number, or number array for in / not_in)HTTP status of the page’s own main-document response. Sub-resource requests (scripts, images, third-party calls) never affect this assertion.
text_containstext, is_regex? (default false), case_sensitive? (default false), selector?The page — or the element scoped by selector — contains the text.
text_not_containstext, is_regex? (default false), case_sensitive? (default false), selector?The page (or scoped element) does not contain the text.
element_existsselectorAt least one element matches the selector.
element_not_existsselectorNo element matches the selector.
response_time_belowms (1–60000)Total page-load time is below the threshold.

All six assertion types are fully enforced — a failing assertion of any type marks the check down.

For richer assertions (title, URL, attributes, CSS, console errors) or multi-step flows that require interaction (click, fill, etc.) before asserting, use Browser Flow.

Runtime cap

Cloud-managed Browser Lite checks have a 90 second total runtime cap on every variant (Standard and Fast). A check that doesn’t complete inside the cap is marked down with reason runtime_exceeded.

Self-hosted Browser Lite slots have no managed runtime cap — the effective limit is what your runner allows.

Result data

Each check returns:

  • Total page-load duration (ms).
  • Per-assertion pass / fail outcome.
  • Final page URL.
  • HTTP status of the navigation.
  • Screenshot artifact (on failure or when explicitly requested).
  • Trace artifact (when trace_capture: true).
  • Console error counts.

Status mapping

OutcomeStatus
Page loads, every assertion passesup
Page loads but runtime exceeded the degraded thresholddegraded
Any assertion failsdown
Navigation aborts, browser fails to launch, network unreachabledown
Runtime cap exceededdown

Tips

  • Run on Chromium first, then layer Firefox or WebKit only if you’ve seen real engine-specific issues. Each engine adds compute.
  • Pair with an HTTP monitor on the same URL — Browser Lite catches the rendered-page failures, HTTP catches the infra-level ones.
  • Heavy single-page apps with long JavaScript execution may need wait_until: "networkidle" so the assertions don’t fire before the page is ready.