Hoe we toegankelijkheid-VPAT's automatiseerden in CI Hoe we toegankelijkheid-VPAT's automatiseerden in CI

Toegankelijkheidsaudits raken snel verouderd. Eén enkele code-merge verandert alles.

We hebben dit opgelost. We hebben onze toegankelijkheidsrapporten omgezet in een continu build-artifact.

Onze pipeline gebruikt drie lagen om fouten te vinden:

  • Statische controles: We gebruiken axe-core voor basis-tests in Storybook.
  • Interactieve tests: We gebruiken aangepaste Vitest-helpers om toetsenbordregels te testen.
  • Handmatige audits: We slaan schermlezer-resultaten op als JSON-bestanden.

Onze CI-pipeline voegt deze resultaten samen.

Als een test faalt, faalt de PR. Als alle tests slagen, genereert het systeem een nieuwe PDF. Deze PDF wordt meegeleverd met je release.

We hebben één ding geprobeerd dat mislukte.

We hebben geprobeerd een LLM te gebruiken om handmatige audits te vervangen. We zijn daar direct mee gestopt. AI-resultaten variëren te veel. Voor een CI-gate heb je stabiele resultaten nodig.

Lees hier de volledige technische analyse:

Bron: https://dev.to/yassine_lakhdar_d0226709a/how-we-automated-our-accessibility-vpats-in-ci-46jk

ARTICLE: Een developmentteam heeft de creatie van toegankelijkheid-VPAT's (Voluntary Product Accessibility Templates) geautomatiseerd direct in hun continuous-integration (CI) pipeline, waardoor een wat voorheen een periodiek handmatig rapport was, is veranderd in een build-artifact dat bij elke release wordt meegeleverd. De nieuwe workflow blokkeert pull requests die toegankelijkheidsregressies introduceren en genereert automatisch een PDF-compliance-document wanneer de build slaagt, zodat elke code-wijziging binnen de toegankelijkheidsnormen blijft.

Waarom automatisering belangrijk is

Toegankelijkheidsaudits worden verouderd op het moment dat er nieuwe code wordt toegevoegd. Eén enkele merge kan leiden tot ontbrekende alt-teksten, een onjuiste focusvolgorde of schermlezer-problemen, waardoor een eerder uitgegeven VPAT ongeldig wordt. Het handmatig handhaven van compliance betekent dat audits na elke wijziging opnieuw moeten worden uitgevoerd; een kostbaar en foutgevoelig proces dat vaak achterloopt op de ontwikkelingssnelheid. Door controles in de CI in te bedden, krijgen teams direct feedback, blijft de compliance actueel en worden de juridische en reputatierisico's van het leveren van ontoegankelijke software vermeden.

De drielagen-testaanpak

  1. Statische controles – De pipeline voert axe-core uit, een open-source bibliotheek die componenten die in Storybook worden weergegeven scant op bekende overtredingen, zoals ontbrekende landmarks of onvoldoende kleurcontrast. Deze tests vangen problemen op voordat er interactie plaatsvindt.

  2. Interactieve controles – Aangepaste Vitest-helpers testen de regels voor toetsenbordnavigatie, waarbij wordt gecontroleerd of de focus logisch beweegt en of interactieve elementen reageren op standaard toetsenbordgebeurtenissen. Deze laag gaat verder dan statische analyse om bruikbaarheid in de echte wereld te garanderen.

  3. Handmatige audit-artifacts – Resultaten van schermlezer-testen worden opgeslagen als JSON-bestanden. Ontwikkelaars leggen observaties vast tijdens exploratief testen en committen de JSON samen met de code. De CI-job voegt deze artifacts samen met de geautomatiseerde resultaten, wat resulteert in een single source of truth voor de VPAT.

Wanneer een test in de eerste twee lagen faalt, wordt de pull request geblokkeerd, waardoor de wijziging de productieomgeving niet bereikt. Als alle tests slagen, stelt de pipeline de gecombineerde gegevens samen in een PDF die bij de release wordt gevoegd, waardoor een actuele VPAT wordt geleverd zonder extra inspanning.

Wat niet werkte

Het team experimenteerde met het gebruik van een large language model (LLM) om het handmatige auditgedeelte automatisch te genereren. De door AI gegenereerde resultaten varieerden te veel, waardoor de CI-gate onbetrouwbaar werd. Consistentie is essentieel voor een binaire pass/fail-controle, dus het experiment werd stopgezet ten gunste van de op JSON gebaseerde handmatige artifacts.

Waar op te letten in de toekomst

Voor nu biedt het drielagen CI-model een pragmatische weg om VPAT's actueel te houden, handmatige overhead te verminderen en toegankelijkheid centraal te stellen bij elke code-wijziging.