Documentation

Get started

Start with a website scan (no GitHub App required). When you are ready to block regressions in code review, install the GitHub App for PR protection. Pro+ adds preview deep scan, Storybook, and journeys.

1. Scan a website (primary)

Paste a URL
Sign in → Dashboard → Sites → enter an HTTPS URL. We load the page in a remote browser and run axe-core. Requires BROWSERLESS_URL on the API.

2. PR protection (optional)

    01Sign in
    Sign in with GitHub (or GitLab) using an account that can install apps or manage the target repositories.
    02Install the Meerkat GitHub App
    Open Dashboard → Installations → Install GitHub App. Choose the account or org, then all repositories or only selected ones.
    03Track repositories in Meerkat
    After the app is installed, use Choose Repositories to add repos you want scanned. Free plans start with one repository; upgrade for more.
    04Open or update a pull request
    On PR open/sync we run a hybrid static scan (AST rules + axe-core in happy-dom) on changed HTML, JSX, TSX, Vue, and Svelte files. You get inline comments where possible and a commit status check.
    05Tune settings and excludes
    Under Settings: block on critical findings, auto-scan, and scan on PR updates. Per repository under Installations → Configure: default branch, exclude paths, and optional deep scan.

What gets scanned

Layer 1 — Static hybrid (every plan)
Runs automatically on every eligible PR for tracked repositories.
  • AST rules — missing alt text, unlabeled controls, nameless buttons/links, clickable non-interactive elements, ARIA misuse, design-system icon buttons, and more
  • axe-core (happy-dom) — WCAG 2.0/2.1 A/AA and best-practice checks on HTML and approximated JSX/TSX DOM
  • File types: .html, .jsx, .tsx, .vue, .svelte
Layers 2–3 — Deep scan (Pro+)
Optional real-browser scanning for contrast, layout, Storybook, and interactive flows.
  • Preview URLs — Browserless + axe on live pages (tokens like {prNumber}, {branchSlug})
  • Storybook — discover stories via /index.json and scan iframes
  • Journeys meerkat.journeys.yml playbooks (goto, click, axe, …)

Configure under Installations → Configure → Deep scan. Requires BROWSERLESS_URL on the API service.

Deep scan guide

Other platforms

GitLab

Sign in with GitLab OAuth, register the project as an installation, and point merge-request webhooks at the API. Same hybrid static scan pipeline as GitHub.

Bitbucket Cloud

Use a workspace/repo access token, webhook, and register the repo from Installations (platform bitbucket).

Bitbucket setup

CI API (Pro+)

Create API keys under Settings → CI / API keys. Call POST /api/v1/scan with Bearer auth and a list of file paths + contents — useful when you cannot install the GitHub App on a pipeline.

API docs

GitHub App permissions

  • Pull requests — read & write (summary + inline comments)
  • Checks / commit status — report pass/fail
  • Contents — read changed file content (and journeys file when deep scan is on)
  • Metadata — basic repository access

Related docs

Questions? Email [email protected].