Jak zautomatyzowaliśmy raporty VPAT dotyczące dostępności w CI Jak zautomatyzowaliśmy raporty VPAT dotyczące dostępności w CI

Audyty dostępności szybko stają się nieaktualne. Pojedyncze scalenie kodu zmienia wszystko.

Rozwiązaliśmy ten problem. Zamieniliśmy nasze raporty dostępności w artefakt ciągłego procesu budowania.

Nasz potok wykorzystuje trzy warstwy do wykrywania błędów:

  • Sprawdzanie statyczne: Używamy axe-core do testów bazowych w Storybook.
  • Testy interaktywne: Używamy niestandardowych pomocników Vitest do testowania reguł obsługi klawiaturą.
  • Audyty manualne: Wyniki z czytników ekranu przechowujemy jako pliki JSON.

Nasz potok CI łączy te wyniki.

Jeśli test zakończy się niepowodzeniem, PR zostaje odrzucony. Jeśli wszystkie testy przejdą pomyślnie, system generuje nowy plik PDF. Ten plik PDF jest dołączany do wydania.

Spróbowaliśmy jednej rzeczy, która się nie udała.

Próbowaliśmy użyć LLM, aby zastąpić audyty manualne. Natychmiast z tego zrezygnowaliśmy. Wyniki generowane przez AI są zbyt zmienne. Do bramki CI potrzebujesz stabilnych wyników.

Pełną analizę techniczną przeczytasz tutaj:

Źródło: https://dev.to/yassine_lakhdar_d0226709a/how-we-automated-our-accessibility-vpats-in-ci-46jk

ARTICLE: Zespół programistyczny zautomatyzował tworzenie raportów VPAT (Voluntary Product Accessibility Templates) dotyczących dostępności bezpośrednio w swoim potoku ciągłej integracji (CI), zmieniając to, co wcześniej było okresowym raportem manualnym, w artefakt budowania dołączany do każdego wydania. Nowy przepływ pracy odrzuca pull requesty wprowadzające regresje dostępności i automatycznie generuje dokument zgodności w formacie PDF, gdy budowanie zakończy się sukcesem, zapewniając, że każda zmiana kodu pozostaje zgodna ze standardami dostępności.

Why automation matters

Audyty dostępności stają się przestarzałe w momencie wprowadzenia nowego kodu. Pojedyncze scalenie może wprowadzić brakujące teksty alternatywne (alt text), nieprawidłową kolejność fokusu lub problemy z czytnikami ekranu, co unieważnia wcześniej wydany raport VPAT. Manualne utrzymywanie zgodności oznacza konieczność ponownego przeprowadzania audytów po każdej zmianie, co jest kosztownym i podatnym na błędy procesem, który często nie nadąża za tempem rozwoju. Poprzez osadzenie sprawdzeń w CI, zespoły otrzymują natychmiastową informację zwrotną, utrzymują aktualną zgodność i unikają ryzyk prawnych oraz wizerunkowych związanych z wydawaniem niedostępnego oprogramowania.

The three-layer testing approach

  1. Static checks – Potok uruchamia axe-core, bibliotekę open-source, która skanuje komponenty renderowane w Storybook pod kątem znanych naruszeń, takich jak brakujące punkty orientacyjne (landmarks) lub niewystarczający kontrast kolorów. Testy te wyłapują problemy, zanim dojdzie do jakiejkolwiek interakcji.

  2. Interactive checks – Niestandardowe pomocniki Vitest sprawdzają reguły nawigacji klawiaturą, weryfikując, czy fokus przemieszcza się logicznie i czy elementy interaktywne reagują na standardowe zdarzenia klawiatury. Ta warstwa wykracza poza analizę statyczną, aby zapewnić użyteczność w rzeczywistych warunkach.

  3. Manual audit artifacts – Wyniki testów z czytnikami ekranu są zapisywane jako pliki JSON. Programiści rejestrują obserwacje podczas testów eksploracyjnych i zatwierdzają (commit) pliki JSON wraz z kodem. Zadanie CI łączy te artefakty z wynikami automatycznymi, tworząc pojedyncze źródło prawdy (single source of truth) dla VPAT.

Jeśli jakikolwiek test w dwóch pierwszych warstwach zakończy się niepowodzeniem, pull request zostaje zablokowany, co zapobiega wprowadzeniu zmiany na produkcję. Jeśli wszystkie testy przejdą pomyślnie, potok składa połączone dane w plik PDF, który jest dołączany do wydania, dostarczając aktualny raport VPAT bez dodatkowego wysiłku.

What didn’t work

Zespół eksperymentował z użyciem dużego modelu językowego (LLM) do automatycznego generowania części dotyczącej audytu manualnego. Wyniki generowane przez AI były zbyt zmienne, co czyniło bramkę CI (CI gate) niepewną. Spójność jest niezbędna dla binarnego sprawdzania typu pass/fail, dlatego eksperyment porzucono na rzecz manualnych artefaktów opartych na JSON.

What to watch next

Na razie trójwarstwowy model CI oferuje pragmatyczną ścieżkę do utrzymania aktualności raportów VPAT, zmniejszenia nakładów pracy manualnej i zapewnienia, że dostępność pozostaje priorytetem przy każdej zmianie kodu.