Инструменти

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