Skip to main content
Introducing packages.sweber.dev
Surjection overview

SurjectionLive demo, free and Pro.

The first section runs axe-core, the engine of the free package, in your browser against a small demo site. Every section after it shows output of the Pro packages, produced with their command-line tools from the same site and shown here as finished HTML.

The demo site, the report and the checklist run in sandboxed frames. Nothing you do here is sent anywhere.

Check

Check (free, MIT)Fix the site, watch the result.

The bakery site below has six common barriers. Tick a fix and the page is checked again against WCAG 2.2 AA, with the same rules @sweberdev/surjection runs in Playwright, Vitest and the CLI.

Demo site, checked in your browser

Loading the check
Fixes

Result

Checking

A clean result here means the automated rules pass. Automated tests find only part of all barriers, so a manual check is still needed.

Same check on the command line

npx surjection check https://baeckerei-muster.example/ \
  --project "Bäckerei Muster" --out-md a11y.md --out-json a11y.json

✗ https://baeckerei-muster.example/ (6 issues)

6 accessibility issue(s) on 1 page(s).

Markdown report of the first run

# Accessibility report

**Bäckerei Muster**

## Summary

| Page | Critical | Serious | Moderate | Minor |
|---|---:|---:|---:|---:|
| https://baeckerei-muster.example/ | 3 | 3 | 0 | 0 |

## Bäckerei Muster · https://baeckerei-muster.example/

Tested on: 2026-08-03T07:30:00.000Z · Rules passed: 10

### Issues found

#### Buttons must have discernible text (`button-name`)

- **Critical** · WCAG criteria: 4.1.2 (A)
- Affected elements (1):
  - `.icon`
- Learn more: https://dequeuniversity.com/rules/axe/4.13/button-name?application=axeAPI

#### Images must have alternative text (`image-alt`)

- **Critical** · WCAG criteria: 1.1.1 (A)
- Affected elements (1):
  - `img`
- Learn more: https://dequeuniversity.com/rules/axe/4.13/image-alt?application=axeAPI

#### Form elements must have labels (`label`)

- **Critical** · WCAG criteria: 4.1.2 (A)
- Affected elements (1):
  - `input`
- Learn more: https://dequeuniversity.com/rules/axe/4.13/label?application=axeAPI

#### Elements must meet minimum color contrast ratio thresholds (`color-contrast`)

- **Serious** · WCAG criteria: 1.4.3 (AA)
- Affected elements (1):
  - `p`
- Learn more: https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=axeAPI

#### <html> element must have a lang attribute (`html-has-lang`)

- **Serious** · WCAG criteria: 3.1.1 (A)
- Affected elements (1):
  - `html`
- Learn more: https://dequeuniversity.com/rules/axe/4.13/html-has-lang?application=axeAPI

#### Links must have discernible text (`link-name`)

- **Serious** · WCAG criteria: 2.4.4 (A), 4.1.2 (A)
- Affected elements (1):
  - `a`
- Learn more: https://dequeuniversity.com/rules/axe/4.13/link-name?application=axeAPI

---

_Automated tests detect only part of all possible barriers. This report does not replace a manual audit and does not confirm conformance with WCAG, EN 301 549 or the European Accessibility Act._

Statement

Accessibility statement (free)Five languages.

The statement generator is part of the free package. This one is in Swiss German, with the status and the known issue taken from the Pro checklist below.

erklaerung.md

# Erklärung zur Barrierefreiheit

Bäckerei Muster ist bemüht, baeckerei-muster.example im Einklang mit den geltenden Anforderungen an die Barrierefreiheit zugänglich zu machen. Diese Erklärung gilt für baeckerei-muster.example.

## Beschreibung der Dienstleistung

Website mit Sortiment, Öffnungszeiten und Newsletter.

## Stand der Vereinbarkeit mit den Anforderungen

Dieses Angebot ist mit WCAG 2.2 AA / EN 301 549 V3.2.1 teilweise vereinbar. Die unten aufgeführten Inhalte sind nicht barrierefrei.

## Nicht barrierefreie Inhalte

- Die Öffnungszeiten auf der Startseite haben zu wenig Kontrast. Geplante Behebung: 31. Oktober 2026

## Erstellung dieser Erklärung

Diese Erklärung wurde am 5. Oktober 2026 erstellt. Die Bewertung beruht auf einer Prüfung durch Pixel & Co.

## Feedback und Kontakt

Sind Ihnen Mängel beim barrierefreien Zugang aufgefallen oder benötigen Sie Inhalte in einer zugänglichen Form? Dann wenden Sie sich bitte an uns:

- E-Mail: hallo@baeckerei-muster.example

Report

Client report (Pro)In your branding.

surjection-report turns the check, the history and the manual checklist into a report for the client, with the logo and colour of the agency, here the made-up Pixel & Co. It is available as HTML and PDF in German, Swiss German, French, Italian and English.

npx surjection-history record --results a11y.json
npx surjection-checklist apply --checklist checklist.json --results a11y.json
npx surjection-report --results a11y.json --brand brand.json \
  --checklist checklist.json --history-dir .surjection-history \
  --locale de --out bericht.pdf

History

History (Pro)Every client, every run.

surjection-history records each run per project and renders one dashboard for all clients: the latest status, the change since the last run and a trend line. These three projects were checked three times each, from August to October.

Checklist

Manual checklist (Pro)Try it below.

surjection-checklist guides the part no tool can check. The full checklist has all 55 WCAG 2.2 A and AA criteria; this editor shows ten of them. The contrast criterion is already marked as failed by the automated check. Set the others and download the result as JSON.

Next step

Use it in your own projectsPricing is per person.

The check and the statement are free on npm. After checkout, Polar gives your GitHub account access to the Pro packages, which install from GitHub Packages with a read-only token.

See pricing

Surjection does not make a site legally compliant. Automated tests find only part of all barriers.