Documentation Menu

Quick Check (Low Fidelity)

A quick check compares the content of two live sites — your local, preview or staging site against production — in about 3–7 seconds a page. It does not take screenshots. Use it to answer one question before you push or merge: did I change any words, links or page structure I didn't mean to?

Turn it on with fidelity: "low" on a run, or on a project. Leave it off (the default, "high") for the full check with screenshots.

A quiet result does not mean the page looks right

A quick check never looks at layout, color or the pictures themselves. A broken layout, a wrong brand color, or an image replaced by a different picture at the same address all pass it. For CSS changes, design-system or theme upgrades, and anything you are about to launch, run the full check.

What It Compares

Checked

  • Text: headings, paragraphs, buttons, prices
  • Structure: elements added or removed
  • Links: where each link points
  • Reader-facing attributes: alt, aria-label, title
  • Image addresses (which file a page asks for)

Not checked

  • Layout, spacing and position
  • Colors, fonts and other styling
  • The pictures themselves (images and video are not downloaded)
  • An image swapped for a different one at the same address

How it is fast: images, video and trackers are blocked, while stylesheets, fonts and scripts still load, so text wraps as it does on the real page. The page is read as soon as its content has stopped changing for one second, and never later than four seconds after it loads. A heavy page that takes 25–50 seconds to capture in full takes about 3–7 seconds here.

Run a Quick Check

A quick check always compares two live sites, so it needs baseOrigin — usually production. It stores no baseline, so there is nothing to set up first.

REST

curl -s -X POST https://api.regressionbot.com/crawl \
  -H "Authorization: Bearer $REGRESSIONBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "testOrigin": "https://preview.myapp.com",
    "baseOrigin": "https://myapp.com",
    "paths": [{ "path": "/" }, { "path": "/pricing" }],
    "fidelity": "low"
  }'
# → { "jobId": "e8087afe-…", … }

Then poll the job until it reaches a finished state (COMPLETED, FAILED, APPROVED or RESOLVED), and read the summary:

curl -s https://api.regressionbot.com/job/$JOB_ID \
  -H "Authorization: Bearer $REGRESSIONBOT_API_KEY" | jq -r .status

curl -s https://api.regressionbot.com/job/$JOB_ID/summary \
  -H "Authorization: Bearer $REGRESSIONBOT_API_KEY"
# → {
#     "status": "COMPLETED",
#     "fidelity": "low",
#     "scopeNote": "Quick check: words, links, structure and image addresses were compared. …",
#     "totalUrls": 2, "regressionCount": 1, "errorCount": 0,
#     "regressions": [{
#       "url": "https://preview.myapp.com/pricing",
#       "changes": [{ "type": "text-edit", "element": "h2", "before": "Pro", "after": "Pro plan" }],
#       …
#     }],
#     …
#   }

For a ready-made CI step that starts the run, waits for it and fails on a change, see A Quick Check on Every Push.

MCP

Pass fidelity: "low" to run_regression_job together with baseOrigin, or to run_from_project for a project that has a baseOrigin. See MCP / Agentic Workflows.

As a project default

Set fidelity: "low" on a project (with update_project or PUT /project/{name}) and its project runs (POST /project/{name}/run, run_from_project and scheduled runs, with their emails) are quick checks, unless a run passes its own fidelity. Passing "high" turns it back off. The project needs a baseOrigin. Changing fidelity never discards baselines, because a quick check stores none; setting or changing baseOrigin does, as for any project.

curl -s -X PUT https://api.regressionbot.com/project/my-app-local \
  -H "Authorization: Bearer $REGRESSIONBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "baseOrigin": "https://myapp.com", "fidelity": "low" }'

# One full check of the same project, screenshots included
curl -s -X POST https://api.regressionbot.com/project/my-app-local/run \
  -H "Authorization: Bearer $REGRESSIONBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "fidelity": "high" }'

When to Use It

Before you push: your local site against production

Put a temporary tunnel in front of your dev server, for example cloudflared tunnel --url http://localhost:3000 (more options in Internal Environments), then run a quick check with the tunnel URL as testOrigin and production as baseOrigin. Keep the dev server and the tunnel running until the job finishes. For a coding agent, install the MCP server first. It is fast enough for a coding agent to run after every change, before it says it is done: the agent learns whether it removed a link or rewrote copy somewhere it should not have touched. The Claude Code and Cursor guides show the setup.

On every pull request: the preview against production

Cheap enough to run on every push for copy edits, navigation changes, CMS migrations and translations — the changes reviewers miss. See Previews vs Production. Keep the full check for pull requests that change styling.

After a big upgrade: every page, quickly

After a framework, router or CMS upgrade, run a quick check over the whole sitemap (sitemapUrl with a "**" scan) to find any page that lost content. Then run the full check on the pages it flagged, and on a sample of the rest for layout.

Reading the Result

  • The job and its summary carry fidelity: "low" and scopeNote: “Quick check: words, links, structure and image addresses were compared. How the page looks (layout, color, the images themselves) was not checked; run high fidelity for that.” Show it next to a result that found nothing, so “no content changes” is never read as “nothing changed”. A quiet result covers only the pages the run checked.
  • Each changed page lists its changes — the exact edits, the same as the full check — but only content changes: never a style-only change or a move.
  • A quick check takes no screenshots. For a page that changed, it draws both versions from the copies it compared, so currentUrl and baselineUrl are pictures of the page with a striped box where each image would be; on an unchanged page, or if the pictures could not be drawn, they are null. diffUrl opens the page in the viewer, with the Visual, Page, Text and Code views.
  • Approving does not store anything. Approving a quick-check page records it as expected, so it drops off your review list, and copies nothing: there is no baseline to advance, and the project's full-check baselines are not touched. Approving the whole job marks nothing: it returns warning: "NO_BASELINE", and no page leaves the list. Approve quick-check pages one at a time, or with a where filter. To keep a baseline, run the full check.

Limits

  • Live sites only. A quick check without baseOrigin is refused. It cannot compare against a stored baseline.
  • Rotating content shows up as changes. News feeds, ads, testimonial carousels and A/B tests differ between two visits. Mask them as you would for the full check (Data Masking): a masked element is hidden before the page is read, so its content is left out of the comparison.
  • Password-protected sites need the credential on the project, as for the full check (Gated Preview URLs). A page that answers with an error status fails rather than passing: “Page refused” for a password gate or a firewall, “Page missing” or “Page is new” for a page on one site only. The full list is under Page errors.
  • Content that takes longer than four seconds to appear is read mid-load, and the two sites may then disagree. A page that marks itself as still loading (aria-busy="true") is waited for, up to the same four seconds.