001 / QUICK START
Documentation
Everything you need to set up continuous regression detection. No tests to write, no selectors to maintain.
Create a project
Enter your app's URL. Regress crawls it automatically, discovers every page, and builds a structural fingerprint of each one.
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.
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
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
Core functionality broken. Form fields removed, checkout flow changed, auth broken.
Significant change that may affect users. Navigation modified, table structure changed.
Minor structural change. New element added, non-critical layout shift.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| FEATURE | FREE | STARTER | PROFESSIONAL |
|---|---|---|---|
| Projects | 1 | Unlimited | Unlimited |
| Pages / month | 500 | 5,000 | 50,000 |
| Deploy webhooks | Yes | Yes | Yes |
| Slack notifications | No | Yes | Yes |
| GitHub integration | No | No | Yes |
| Root cause analysis | No | Yes | Yes |
| History retention | 7 days | 30 days | 90 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.
/api/webhook/deploy/:projectId/api/webhook/deploy/:projectId/status/:checkRunId/api/webhooks/github/ws/check/:checkRunId