Pa11y
Инструмент с отворен код за тестване на достъпността от командния ред. Партньорът на axe-core CLI, удобен за CI; pa11y-ci захранва нощните работни процеси за регресионно тестване на достъпността на цял сайт, приети от повечето мащабни програми за достъпност.
Pa11y е автоматизиран инструмент с отворен код за тестване на достъпността. Първоначално разработен в Nature Publishing Group и поддържан от независима общност, Pa11y е утвърденият инструмент за „тестове за достъпност в CI” през последното десетилетие.
Какво прави Pa11y
Pa11y от командния ред приема URL адрес и изпълнява проверки за достъпност върху изобразената страница, като извежда списък с нарушения:
$ 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 работи в безглав браузър (Puppeteer или Playwright), така че вижда изобразения DOM, а не само изходния HTML — което означава, че може да одитира съдържание, изобразено с JavaScript, по същия начин, по който потребителят би го срещнал.
Поддържани изпълнители
Pa11y исторически е поддържал два движеца с правила:
- HTML_CodeSniffer (по подразбиране; оригиналната гръбнак на Pa11y).
- axe-core (чрез
pa11y --runner axe).
Двата могат да се изпълняват едновременно с обединяване на резултатите — режим „всичко, което мога да открия автоматично”. Повечето съвременни внедрявания на Pa11y използват изключително движеца axe-core, тъй като той има най-активно развитие на правилата.
pa11y-ci — работен процес с много URL адреси
Основният случай на употреба е pa11y-ci — обвивка, която изпълнява Pa11y за много URL адреси наведнъж и излиза с подходящ код за статус за CI:
$ pa11y-ci --sitemap https://example.com/sitemap.xml
Това е именно работният процес, приет от повечето програми за достъпност за нощни регресии: подаване на картата на сайта в pa11y-ci по cron график, неуспешно завършване на изграждането при появяване на нови нарушения, сигнализиране при увеличаване на броя нарушения.
Конфигурацията се съхранява в .pa11yci (или JSON файл) и позволява изключвания по URL, прагове за сериозност, размери на viewport, потребителски действия (вход, преминаване с щракване) и друга автоматизация.
Pa11y срещу axe-core срещу Lighthouse
Разумен мисловен модел:
- axe-core е движецът с правила — основната библиотека за засичане. Използва се чрез обвивка.
- Lighthouse е една обвивка, оптимизирана за пълни одити на качеството на сайта (Производителност + Достъпност + Добри практики + SEO).
- Pa11y е друга обвивка, оптимизирана за CI контрол само на достъпността за много URL адреси в мащаб.
- axe-core CLI е третата — чист axe, без обвивка Pa11y, също удобен за CI.
За задълбочен анализ на конкретна страница Lighthouse е по-подходящ. За регресионно тестване на цял сайт с много URL адреси Pa11y е практическият избор по подразбиране. За блокиращи изграждането проверки на PR за единичен URL адрес axe-core CLI или Lighthouse-CI работят еднакво добре.
Ограничения
Pa11y наследява всички ограничения на автоматизираните инструменти:
- 30–40 % от проблемите с WCAG са автоматично открими; останалите изискват човешка преценка.
- Не може да тества навигацията с клавиатура, реда на фокуса или поведението на екранния четец.
- Работи в безглав браузър, така че не може да улавя проблеми, проявяващи се само при реално взаимодействие с потребителя (многократни щраквания, изоставяне на форма, неочаквано наслагване на модален прозорец).
Но в рамките на тавана за автоматично засичане Pa11y е оперативно най-гъвкавият инструмент сред основните варианти — особено когато обхватът на одита е „целият сайт, всяка нощ”, а не „конкретният PR”.