001 / QUICK START

Documentation

Everything you need to set up continuous regression detection. No tests to write, no selectors to maintain.

1

Create a project

Enter your app's URL. Regress crawls it automatically, discovers every page, and builds a structural fingerprint of each one.

2

Set up auth (optional)

If your app requires login, use Record Login to capture a session through a live browser. Works with any SSO, 2FA, or OAuth provider.

3

Add a deploy webhook

Add one POST request to your CI pipeline. Every deploy triggers a full scan, and results land on your dashboard in minutes.

002 / DEPLOY WEBHOOK

Deploy Webhook

Trigger a scan from your CI/CD pipeline after every deploy. The webhook URL is shown in your project settings with the project ID pre-filled.

TRIGGER A SCAN

BODY='{}'
SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$REGRESS_WEBHOOK_SECRET" -hex | awk '{print $NF}')
curl --fail-with-body -X POST "https://api.regress.app/api/webhook/deploy/$REGRESS_PROJECT_ID" \
  -H 'Content-Type: application/json' \
  -H "x-regress-signature: sha256=$SIGNATURE" \
  --data-raw "$BODY"

RESPONSE

{
  "message": "Check triggered",
  "checkRunId": "cr_a1b2c3d4",
  "status": "running",
  "trigger": "deploy_webhook"
}

POLL STATUS

curl https://api.regress.app/api/webhook/deploy/{projectId}/status/{checkRunId}

STATUS RESPONSE

{
  "id": "cr_a1b2c3d4",
  "status": "completed",
  "pagesChecked": 14,
  "totalPages": 14,
  "changeCount": 2,
  "completedAt": "2026-02-18T10:30:00Z"
}

STATUS VALUES

pending
running
completed
failed

003 / CI EXAMPLES

CI/CD Integration

Drop these into your pipeline to trigger a scan after every deploy.

GITHUB ACTIONS

- name: Trigger Regress scan
  env:
    REGRESS_PROJECT_ID: ${{ secrets.REGRESS_PROJECT_ID }}
    REGRESS_WEBHOOK_SECRET: ${{ secrets.REGRESS_WEBHOOK_SECRET }}
  run: |
    BODY='{}'
    SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$REGRESS_WEBHOOK_SECRET" -hex | awk '{print $NF}')
    curl --fail-with-body -X POST "https://api.regress.app/api/webhook/deploy/$REGRESS_PROJECT_ID" \
      -H 'Content-Type: application/json' \
      -H "x-regress-signature: sha256=$SIGNATURE" \
      --data-raw "$BODY"

GITLAB CI

regress_scan:
  stage: post-deploy
  script:
    - |
      BODY='{}'
      SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$REGRESS_WEBHOOK_SECRET" -hex | awk '{print $NF}')
      curl --fail-with-body -X POST "https://api.regress.app/api/webhook/deploy/$REGRESS_PROJECT_ID" \
        -H 'Content-Type: application/json' \
        -H "x-regress-signature: sha256=$SIGNATURE" \
        --data-raw "$BODY"

Set REGRESS_PROJECT_ID and REGRESS_WEBHOOK_SECRET as protected CI variables. Generate the secret in Project Settings. For Vercel, run the signed command after deployment from CI.

For blocking CI (wait for results), poll the status endpoint until status is completed or failed, then check changeCount to decide whether to pass or fail the build.

004 / GITHUB

GitHub Integration

Install the Regress GitHub App to automatically scan on every push to your default branch. Results appear as check runs and PR comments.

AUTO-TRIGGER

Push to default branch

Every push to main/master triggers a full regression scan for all connected projects. No webhook configuration needed.

CHECK RUNS

Pass/fail on PRs

GitHub check runs show pass or fail directly on the PR. Block merges when structural regressions are detected.

PR COMMENTS

Inline regression reports

A comment is posted on the PR with affected pages, severity, and a link to the full report. No context switching.

ROOT CAUSE

Commit-level attribution

Regress tracks which commit triggered the scan and links regressions back to the specific code change.

Connect GitHub from your project settings. Install the Regress GitHub App, then link it to your project.

005 / DETECTION

What We Detect

Regress builds a structural fingerprint of every page: forms, tables, navigation, buttons, API calls. When the structure changes between deploys, you get alerted. When only data changes, we stay quiet.

STRUCTURAL CHANGES (ALERTED)

  • ●Form fields added, removed, or changed type
  • ●Table columns added or removed
  • ●Buttons or actions removed or disabled
  • ●Navigation items added or removed
  • ●API response shape changes
  • ●Route additions and removals
  • ●Login flow breakage

DATA CHANGES (IGNORED)

  • ●Different row counts and timestamps
  • ●Placeholder and copy text changes
  • ●Active navigation state highlighting
  • ●Sort order differences
  • ●Dynamic content (usernames, dates, counts)
  • ●Pagination position changes

SEVERITY LEVELS

Critical

Core functionality broken. Form fields removed, checkout flow changed, auth broken.

Warning

Significant change that may affect users. Navigation modified, table structure changed.

Info

Minor structural change. New element added, non-critical layout shift.

None

No structural impact. Data-only change, safely ignored.

006 / AUTH

Authentication

Six ways to give Regress access to your authenticated pages. Choose the method that matches your app's login flow.

RECOMMENDED

Record Login

Log in through a live browser session. Regress captures cookies, localStorage, and sessionStorage automatically. Works with Google, Microsoft, Okta, Auth0, and any SSO or 2FA flow. The recording is replayed before each scan.

Username & Password

Provide login credentials and Regress fills the form automatically. Supports TOTP-based 2FA with a shared secret. Best for simple login forms without SSO.

Session Capture

Run a console command in your browser to export localStorage, sessionStorage, and cookies as JSON. Paste it in and you're set.

Bearer Token

Provide an API token or JWT. Sent as an Authorization header (or custom header) on every request during the scan.

Basic Auth

Username and password sent as an HTTP Basic authentication header on every request.

Manual Cookies

Set specific cookie name/value pairs to inject into the browser before scanning. Useful for session tokens from external systems.

007 / NOTIFICATIONS

Notifications

Get alerted through the channels your team already uses. Configure per-project in settings.

EMAIL

Regression alerts

Set a notification email in project settings. When structural changes are detected, you get an email with affected pages and severity levels.

SLACK

Webhook notifications

Add a Slack incoming webhook URL. Messages include the project name, change count, and a direct link to the report.

GITHUB

PR comments & checks

When connected, results are posted as PR comments with a table of affected pages. Check runs show pass/fail directly on the PR.

008 / PIPELINE

How a Scan Works

When you trigger a scan (via webhook, GitHub push, schedule, or manually), Regress runs a multi-stage pipeline.

1

Crawl

A headless browser visits every discovered page. If auth is configured, it logs in first. Pages are loaded, JavaScript executed, and the DOM is captured.

2

Fingerprint

Each page's DOM is extracted into a structural fingerprint: forms (fields, types, labels), tables (columns, headers), navigation (links, hierarchy), actions (buttons, interactive elements), and API calls. A deterministic hash is computed from the structure.

3

Compare

The new hash is compared against the baseline. If it matches, the page is unchanged. If it differs, the structural diff is computed and classified using 21 deterministic rules (R01-R21) that map change patterns to severity levels.

4

Analyze

Changed pages are analyzed by an LLM to generate page insights, discover user flows, and build test plans. This runs in parallel across all affected pages.

5

Execute

Generated test plans are executed against your live app with assertion validation. Each step is screenshotted and timed. Pass/fail results are recorded per flow.

6

Report

Results are compiled into a report. Notifications fire (email, Slack, GitHub). If GitHub is connected, a check run and PR comment are posted. Root cause analysis links regressions to the triggering commit.

009 / PLANS

Plans & Limits

Start free, upgrade when you need more capacity.

FEATUREFREESTARTERPROFESSIONAL
Projects1UnlimitedUnlimited
Pages / month5005,00050,000
Deploy webhooksYesYesYes
Slack notificationsNoYesYes
GitHub integrationNoNoYes
Root cause analysisNoYesYes
History retention7 days30 days90 days

010 / API BASE

API Reference

All API endpoints live at https://api.regress.app. Public endpoints require no authentication. The dashboard and tRPC API use WorkOS session auth.

POST/api/webhook/deploy/:projectId
Trigger a regression scan for a project. Returns the check run ID for status polling. Rate limited to 10 requests per minute.
GET/api/webhook/deploy/:projectId/status/:checkRunId
Poll the status of a running check. Returns page count, change count, and completion timestamp.
POST/api/webhooks/github
GitHub App webhook receiver. Handles push events on default branch and triggers scans for connected projects. Signature-verified.
GET/ws/check/:checkRunId
WebSocket for real-time scan progress. Streams stage transitions, page counts, and completion events as JSON messages.