Резин проблем доступності? Автоматизуйте аудит з Pa11y
Ви витратили тижні на верстку, а клієнт на скринридері не бачить кнопку «Купити». Або гірше — отримали претензію від Роскомнадзору за невідповідність WCAG 2.1. Ручна перевірка 500 сторінок — це дні роботи QA. Pa11y вирішує проблему: запускається в CLI, читає sitemap.xml і видає звіт по всіх сторінках за один прохід. Ми використовуємо Pa11y в CI/CD більше 5 років на 50+ проектах — ділимося досвідом. Автоматизація перевірки доступності веб-сайту з Pa11y скорочує час аудиту на 70%, а вартість обслуговування знижується за рахунок раннього виявлення багів. Оцініть економію: на проекті з 2000 сторінок ми скоротили аудит з 3 днів до 2 годин і знайшли 47 критичних помилок, які пропустили QA. Вартість базового налаштування – від 5000 грн. Економія на аудиті – до 3000 доларів на рік (залежить від обсягу).
Чому варто автоматизувати тестування доступності?
Без автоматики ви пропустите 30–50% порушень. Pa11y перевіряє кольоровий контраст, alt-тексти, ARIA-атрибути, навігацію з клавіатури. Ми налаштовуємо його так, щоб він не пропускав критичні помилки, але ігнорував хибні спрацьовування (наприклад, контраст на заблокованих елементах). Типові проблеми: відсутність alt у зображень, неправильні ARIA-ролі, низький контраст тексту. Автоматизація доступності (a11y testing) знижує витрати на аудит і прискорює релізи. Pa11y в 2 рази швидше за axe-core при перевірці всього сайту через sitemap.
Як інтегрувати Pa11y в CI/CD?
Процес налаштування займає 1–2 дні і включає п'ять кроків:
- Аналіз — збираємо URL з sitemap.xml, визначаємо стандарт (зазвичай WCAG 2.1 AA).
- Конфігурація — створюємо
.pa11yci.jsonз потрібними параметрами та винятками. - Інтеграція — додаємо команду
pa11y-ciу ваш пайплайн (GitLab CI, GitHub Actions, Jenkins). - Тестування — запускаємо пробний аудит, коригуємо хибні спрацьовування.
- Документація — описуємо процес роботи для команди.
Аналіз та конфігурація
Процес починається з аналізу вашого сайту: збираємо список URL з sitemap.xml, шотів. Визначаємо стандарт (зазвичай WCAG2AA), таймаути, винятки. На виході — .pa11yci.json:
Приклад конфігурації .pa11yci.json
{
"defaults": {
"standard": "WCAG2AA",
"timeout": 30000,
"wait": 1000,
"ignore": [
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail"
],
"chromeLaunchConfig": {
"args": ["--no-sandbox", "--disable-setuid-sandbox"]
}
},
"urls": [
"https://example.com",
"https://example.com/about",
"https://example.com/contact",
{
"url": "https://example.com/login",
"actions": [
"wait for element #login-form to be visible"
]
}
]
}
Інтеграція в пайплайн
Додаємо крок в CI: на GitLab — pa11y-ci --config .pa11yci.json --threshold 5, на GitHub Actions — аналогічно. Параметр --threshold задає допустиму кількість помилок. Строгий режим (--threshold 0) означає, що пайплайн впаде при будь-якій помилці.
Читання з sitemap.xml
pa11y-ci --sitemap https://example.com/sitemap.xml \
--sitemap-find "https://example.com" \
--sitemap-replace "http://localhost:3000" \
--threshold 0
Як ігнорувати хибні спрацьовування?
Pa11y іноді скаржиться на контраст для disabled-елементів або на ARIA-ролі, задані фреймворком. Ми додаємо ignore-список у конфіг — це правка під ваш UI-кіт. Наприклад:
"ignore": [
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail",
"WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputSearch.Name"
]
Це усуває до 90% хибних спрацьовувань без втрати критичних перевірок.
Порівняння Pa11y та axe-core
| Можливість | Pa11y | axe-core |
|---|---|---|
| Пакетний аудит сайту | Нативно (sitemap, CLI) | Потрібна обгортка (pa11y-ci, puppeteer) |
| Інтеграція з тест-фреймворками | Слабше | Jest, Playwright, Cypress |
| Покриття правил | WCAG 2.0/2.1 | WCAG 2.0/2.1/2.2, ARIA |
| Швидкість | Повільніше (окремий браузер) | Швидше (вбудовується в браузер) |
Pa11y виграє, коли потрібно прогнати весь сайт. Axe кращий в unit-тестах. Ми комбінуємо: Pa11y для нічних аудитів, axe в пре-коміт хуках. Це дає повне покриття без дублювання.
Приклад звіту Node.js API
Код для аудиту через Node.js API
const pa11y = require('pa11y');
const fs = require('fs');
const PAGES = [
{ url: 'http://localhost:3000', name: 'Головна' },
{ url: 'http://localhost:3000/catalog', name: 'Каталог' },
{ url: 'http://localhost:3000/checkout', name: 'Оформлення замовлення' },
];
async function audit() {
const results = [];
for (const page of PAGES) {
console.log(`Checking: ${page.name}`);
const result = await pa11y(page.url, {
standard: 'WCAG2AA',
timeout: 20000,
actions: page.actions || [],
});
results.push({
name: page.name,
url: page.url,
issues: result.issues.length,
critical: result.issues.filter(i => i.type === 'error').length,
warnings: result.issues.filter(i => i.type === 'warning').length,
violations: result.issues,
});
}
fs.writeFileSync('a11y-report.json', JSON.stringify(results, null, 2));
console.table(results.map(r => ({
Сторінка: r.name,
Помилки: r.critical,
Попередження: r.warnings,
})));
if (results.some(r => r.critical > 0)) {
process.exit(1);
}
}
audit();
Що входить в роботу?
Після налаштування Pa11y ви отримуєте:
- Робочий конфігураційний файл
.pa11yci.jsonз налаштуваннями під ваш проект. - Інтеграцію в CI/CD — автоматичний запуск аудиту при кожному пуші.
- Кастомний ігнор-лист для хибних спрацьовувань.
- Документацію по інтерпретації звітів та виправленню типових помилок.
- Навчання команди: як читати звіти Pa11y і фіксити баги доступності.
Ми маємо сертифікат IAAP і досвід налаштування Pa11y на 50+ проектах. Гарантуємо якість: якщо після нашого аудиту ви отримаєте штраф за порушення WCAG — перевіримо безкоштовно.
Етапи налаштування Pa11y
| Етап | Що робимо | Результат |
|---|---|---|
| Аналіз | Вивчаємо структуру сайту, збираємо URL, визначаємо стандарт | Список сторінок, конфіг .pa11yci.json |
| Конфігурація | Налаштовуємо винятки, таймаути, дії для форм | Конфіг, ігнор-лист під ваш UI-кіт |
| Інтеграція | Вбудовуємо в CI/CD (GitLab CI, GitHub Actions) | Пайплайн з pa11y-ci, поріг помилок |
| Тестування | Запускаємо пробний аудит, виправляємо хибні спрацьовування | Звіт, коригування |
| Документація | Описуємо процес роботи, як інтерпретувати звіти | README, інструкція для команди |
| Навчання | Проводимо воркшоп по виправленню типових помилок | Команда вміє читати звіти і фіксити баги |
Терміни та вартість
Базове налаштування займає 1–2 дні. Розширене з кастомними правилами, скріншотами та навчанням — до 5 днів. Налаштування під ключ за 2 дні. Входить: конфіг, інтеграція, документація, навчання. Вартість розраховується індивідуально під обсяг сайту. Окупність налаштування — менше 3 місяців. Оцінимо проект за 1 годину — зв'яжіться з нами. Пишіть на пошту або в Telegram.
Pa11y запускає headless-браузер (Chrome), завантажує кожну сторінку і перевіряє її на відповідність обраному стандарту WCAG. Результати групуються за типом помилок: error (критичні), warning (зауваження), notice (інформаційні). Це дозволяє швидко виявити проблемні місця та пріоритизувати правки.
Як почати?
Зв'яжіться з нами для консультації. Замовте аудит доступності, і якщо після нашого аудиту ви отримаєте штраф за порушення WCAG — перевіримо безкоштовно. Вкладення в автоматизацію окупаються вже через 2–3 місяці. Отримайте вашу конфігурацію Pa11y і позбудьтеся ручних перевірок назавжди.







