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”.