Spring til indhold

Hjælp

Scan i jeres pipeline (CI-integration)

Opdateret 10. september 2026

npm run ci scanner en side eller et sitemap med samme axe-opsætning som dashboardet og bryder pipelinen på fund — uden Supabase og uden miljøvariabler.

Kommandoen

Syntaks

npm run ci -- <url|sitemap-url> [--max-urls N] [--fail-on critical|serious|moderate|minor]
                                [--baseline <fil.json>] [--save-baseline <fil.json>]
                                [--json <ud.json>] [--sarif <ud.sarif>]

Ender URL'en på .xml, læses den som sitemap (også sitemap-indeks, ét niveau ned); ellers scannes den ene side. --max-urls begrænser antallet af sider fra et sitemap (standard 50). Kravene er Node 22+ og Playwrights Chromium (npx playwright install --with-deps chromium).

Exit-koder og tærskel

Exit-koder
KodeBetydning
0Ingen fund på eller over tærsklen
1Mindst ét fund på eller over tærsklen (--fail-on, standard serious)
2Kunne ikke scanne: ugyldige argumenter, sitemap kunne ikke hentes, eller ingen sider kunne hentes

Alvorlighederne er minor < moderate < serious < critical, så --fail-on moderate bryder på moderate, serious og critical. Sider, der ikke kan hentes, logges og tælles, men bryder ikke kørslen, så længe mindst én side blev scannet. Se Hvad betyder critical, serious, moderate og minor?.

Baseline: bryd kun på nye fejl

Et eksisterende site har som regel kendte fejl, som ikke skal blokere hver PR. Gem tilstanden én gang, commit filen, og lad pipelinen sammenligne mod den:

Gem og brug en baseline

npm run ci -- https://staging.shop.dk/sitemap.xml --save-baseline a11y-baseline.json
npm run ci -- https://staging.shop.dk/sitemap.xml --baseline a11y-baseline.json

Et fund matches på regel-id + normaliseret side-URL (uden #fragment og afsluttende /) + CSS-selector; opsummeringen viser “N nye / M kendte”. Baseline-filen har samme format som --json-output, så en tidligere --json-fil kan også bruges. Opdatér baselinen, når kendte fejl er rettet, så de ikke sniger sig ind igen.

SARIF og GitHub Code Scanning

--sarif results.sarif skriver en SARIF 2.1.0-fil. Uploadet med github/codeql-action/upload-sarif vises fundene under Security → Code scanning med den danske vejledning som hjælpetekst; critical og serious bliver error, moderate bliver warning, og minor bliver note. Fundene peger på den kørende side, ikke en kildefil, så der kommer ingen inline-annotations i diff'en. Uploaden kræver security-events: write.

Eksempel: GitHub Actions

Nordally-repoet checkes ud ved siden af projektet, indtil der findes en npm-pakke

name: Tilgængelighed
on:
  pull_request:
permissions:
  contents: read
  security-events: write
jobs:
  a11y:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          repository: <org>/nordally
          path: nordally
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm ci
        working-directory: nordally
      - run: npx playwright install --with-deps chromium
        working-directory: nordally
      # Byg og start jeres eget site her, eller peg på et preview-/staging-miljø.
      - name: Scan preview-miljø
        run: npm run ci -- https://pr-${{ github.event.number }}.preview.shop.dk/sitemap.xml --max-urls 30 --fail-on serious --sarif results.sarif
        working-directory: nordally
      - uses: github/codeql-action/upload-sarif@v3
        if: always() && hashFiles('nordally/results.sarif') != ''
        with:
          sarif_file: nordally/results.sarif
          category: nordally-a11y

Samme kommando kører i GitLab CI, Bitbucket Pipelines og Azure DevOps — det eneste krav er Node og Playwrights Chromium (eller Microsofts Playwright-container med samme version som playwright i package.json). En publiceret npm-pakke er planlagt; indtil da er npm run ci fra et checkout af repoet den understøttede måde.

En grøn pipeline betyder ikke, at sitet er compliant. Automatisk scanning finder omkring halvdelen af fejlene — manuel gennemgang er stadig nødvendig.

Spørgsmål og svar

Gemmes CI-resultater i dashboardet?

Nej. CI-kørslen er selvstændig og skriver kun til de filer, I angiver. Overvågning, trend, erklæring og alert-mails kommer fra de planlagte scans af det site, I har tilføjet.

Hvilken tærskel bør vi vælge?

Start med standarden serious og en baseline, så pipelinen kun bryder på nye alvorlige fund. Stram til moderate eller minor, når baselinen er ren.

Nordally hjælper med compliance og giver ikke juridisk rådgivning. Om jeres virksomhed er omfattet, og om jeres løsning er dækkende, er en vurdering, I selv eller en rådgiver må tage.