Narzędzia

Pa11y

Narzędzie open-source do testowania dostępności z wiersza poleceń. Przyjazny CI partner axe-core CLI; pa11y-ci obsługuje nocne przepływy regresji dostępności dla całych serwisów, stosowane w większości dużych programów dostępności.

Pa11y to open-source’owe zautomatyzowane narzędzie do testowania dostępności. Pierwotnie opracowane w Nature Publishing Group, a teraz utrzymywane przez niezależną społeczność, Pa11y jest od dekady podstawowym narzędziem do „testów dostępności w CI”.

Co robi Pa11y

Pa11y uruchamiany z wiersza poleceń przyjmuje adres URL i przeprowadza kontrole dostępności na wyrenderowanej stronie, wyświetlając listę naruszeń:

$ pa11y https://example.com
Welcome to Pa11y

> Running Pa11y on 1 URLs:
...

Error: This element does not have an attribute "alt".
   • Element: <img src="..." />
   • Code: HTML_CS.Principle1.Guideline1_1.1_1_1.H37
   • Selector: body > section:nth-child(2) > img

Pa11y działa w przeglądarce bez interfejsu (Puppeteer lub Playwright), więc widzi wyrenderowany DOM, a nie tylko źródłowy HTML — co oznacza, że może audytować treść renderowaną przez JavaScript tak samo, jak napotka ją użytkownik.

Obsługiwane silniki

Pa11y historycznie obsługuje dwa silniki reguł:

  • HTML_CodeSniffer (domyślny; oryginalny fundament Pa11y).
  • axe-core (przez pa11y --runner axe).

Oba można uruchamiać jednocześnie i łączyć wyniki — tryb „wszystko, co mogę wykryć automatycznie”. Większość współczesnych wdrożeń Pa11y używa wyłącznie silnika axe-core, ponieważ ma on najaktywniejszy rozwój reguł.

pa11y-ci — przepływ pracy z wieloma URL

Kluczowym zastosowaniem jest pa11y-ci — nakładka uruchamiająca Pa11y dla wielu adresów URL naraz i kończąca działanie z odpowiednim kodem wyjścia dla CI:

$ pa11y-ci --sitemap https://example.com/sitemap.xml

To właśnie przepływ pracy przyjmowany przez większość programów dostępności do nocnych regresji: podajesz sitemap do pa11y-ci według harmonogramu cron, budujesz się nieudanie przy nowych naruszeniach, alertujesz gdy liczba naruszeń rośnie.

Konfiguracja przechowywana jest w .pa11yci (lub pliku JSON) i umożliwia wykluczenia per URL, progi ważności, rozmiary viewport, niestandardowe akcje (logowanie, klikanie) oraz inną automatyzację.

Pa11y a axe-core a Lighthouse

Przydatny model myślowy:

  • axe-core to silnik reguł — podstawowa biblioteka wykrywania. Używa się go przez nakładkę.
  • Lighthouse to jedna nakładka, zoptymalizowana pod kątem audytów jakości całego serwisu (Wydajność + Dostępność + Dobre praktyki + SEO).
  • Pa11y to inna nakładka, zoptymalizowana pod kątem bramkowania CI wyłącznie dla dostępności dla wielu URL w skali.
  • axe-core CLI to trzecia opcja — czysty axe, bez nakładki Pa11y, również przyjazny CI.

Do dogłębnych analiz poszczególnych stron lepszy jest Lighthouse. Do testowania regresji całego serwisu z wieloma URL Pa11y jest praktycznym domyślnym wyborem. Do blokowania PR na pojedynczym URL axe-core CLI lub Lighthouse-CI działają równie dobrze.

Ograniczenia

Pa11y dziedziczy wszystkie ograniczenia zautomatyzowanych narzędzi:

  • 30–40% problemów z WCAG można wykryć automatycznie; reszta wymaga ludzkiej oceny.
  • Nie może testować nawigacji klawiaturą, kolejności fokusu ani zachowania czytnika ekranu.
  • Działa w przeglądarce bez interfejsu, więc nie wychwytuje problemów pojawiających się tylko podczas rzeczywistej interakcji użytkownika (wielokrotne klikanie, porzucanie formularza, nieoczekiwane nakładanie się modali).

Jednak w ramach pułapu automatycznego wykrywania Pa11y jest operacyjnie najbardziej elastycznym narzędziem spośród głównych opcji — szczególnie gdy zakres audytu to „cały serwis, każdej nocy”, a nie „ten konkretny PR”.