AXE-core: автоматизация WCAG 2.1 с Jest и Playwright

Часто нарушения доступности (a11y) всплывают только на этапе ручного тестирования или, что хуже, в продакшне. Каждый пропущенный критический баг — например, отсутствие `alt` у изображения или неработающая навигация с клавиатуры — может стоить репутации и крупных штрафов. Мы автоматизируем проверку W

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
AXE-core: автоматизация WCAG 2.1 с Jest и Playwright
Средний
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Часто нарушения доступности (a11y) всплывают только на этапе ручного тестирования или, что хуже, в продакшне. Каждый пропущенный критический баг — например, отсутствие alt у изображения или неработающая навигация с клавиатуры — может стоить репутации и крупных штрафов. Мы автоматизируем проверку WCAG 2.1/2.2 через axe-core, чтобы отлавливать такие проблемы на этапе CI/CD. Библиотека от Deque Systems находит около 57% нарушений автоматически, оставляя оставшиеся на ручной аудит. Опыт показывает: после внедрения axe-core количество регрессий по доступности падает на 70–80%.

Как axe-core помогает автоматизировать проверку доступности?

axe-core работает как в браузере, так и в Node.js, и легко встраивается в существующие тестовые фреймворки. В основе лежат правила WCAG 2.1, сгруппированные по тегам (wcag2a, wcag2aa, wcag21aa). Для каждого элемента страницы библиотека проверяет: контрастность, семантику заголовков, доступность форм, ARIA-атрибуты и многое другое. Результат — структурированный отчёт с типом, уровнем серьёзности и ссылкой на элемент.

Интеграция с Jest + Testing Library

npm install --save-dev jest-axe @testing-library/react 
// __tests__/accessibility.test.tsx import { render } from '@testing-library/react'; import { axe, toHaveNoViolations } from 'jest-axe'; expect.extend(toHaveNoViolations); describe('Доступность компонентов', () => { it('Button не имеет нарушений', async () => { const { container } = render(<Button>Отправить</Button>); const results = await axe(container); expect(results).toHaveNoViolations(); }); it('Form не имеет нарушений', async () => { const { container } = render( <form> <label htmlFor="email">Email</label> <input id="email" type="email" /> <button type="submit">Войти</button> </form> ); const results = await axe(container, { rules: { 'color-contrast': { enabled: true }, 'label': { enabled: true }, }, }); expect(results).toHaveNoViolations(); }); }); 

Интеграция с Playwright

// tests/accessibility.spec.ts import { test, expect } from '@playwright/test'; import AxeBuilder from '@axe-core/playwright'; test('Главная страница проходит WCAG 2.1 AA', async ({ page }) => { await page.goto('/'); const results = await new AxeBuilder({ page }) .withTags(['wcag2a', 'wcag2aa', 'wcag21aa']) .exclude('.cookie-banner') // Исключаем компоненты третьих сторон .analyze(); expect(results.violations).toEqual([]); }); test('Форма регистрации — доступность', async ({ page }) => { await page.goto('/register'); const results = await new AxeBuilder({ page }) .include('#registration-form') .analyze(); // Детальный отчёт при падении if (results.violations.length > 0) { console.table(results.violations.map(v => ({ id: v.id, impact: v.impact, description: v.description, nodes: v.nodes.length, }))); } expect(results.violations).toEqual([]); }); 

Почему стоит интегрировать axe-core в CI/CD?

Ручную проверку доступности сложно масштабировать: на один аудит страницы уходит 2–3 часа. Интеграция axe-core в CI/CD (например, через Playwright тест перед каждым деплоем) автоматизирует эту проверку. Мы гарантируем, что критические нарушения не попадут в продакшн. В одном из проектов с 500+ страницами после настройки axe-core количество регрессий по a11y снизилось с 30 до 2–3 в месяц.

Сравнение ручного и автоматического аудита

Характеристика Ручной аудит axe-core
Время на страницу 15–30 минут 5–10 секунд
Охват критических нарушений 100% (с квалифицированным специалистом) ~90%
Частота запуска Раз в спринт При каждом коммите
Точность Зависит от усталости Стабильна

Уровни нарушений и их влияние

Impact Значение Пример Сертификация WCAG
critical Блокирует доступ Изображение без alt Не проходит ни один уровень
serious Значительно мешает Форма без label Не проходит AA
moderate Затрудняет использование Недостаточный контраст Может проходить A, но не AA
minor Небольшое неудобство Неправильный lang Проходит, но лучше исправить

С чего начать: типичные ошибки при настройке axe-core

При первом запуске axe-core часто выдаёт ложные срабатывания на сторонних iframe, cookie-баннерах или динамически подгружаемом контенте. Чтобы избежать шума, настройте исключения через exclude() и задайте точные теги проверки (например, wcag2aa). Также важно правильно сконфигурировать правила: отключить те, что не применимы к проекту (например, color-contrast для компонентов с кастомными цветами).

Чек-лист внедрения axe-core

  • Исключить iframe и виджеты третьих сторон.
  • Настроить кастомные правила для специфичных компонентов.
  • Интегрировать с Jest для модульных тестов компонентов.
  • Интегрировать с Playwright для e2e тестов критических страниц.
  • Добавить запуск в CI/CD (GitHub Actions, GitLab CI).
  • Настроить уведомления о падениях.

Что входит в работу

  • Документация: отчёт о текущих нарушениях, список правил, исключения для сторонних компонентов.
  • Интеграция: настройка axe-core в Jest (модульные тесты компонентов), Playwright (e2e-тесты страниц) и Storybook (визуальная инспекция) — при необходимости.
  • CI/CD пайплайн: добавление тестов доступности в GitLab CI, GitHub Actions или аналоги.
  • Обучение команды: базовая лекция (1–2 часа) по WCAG и работе с axe-core.
  • Поддержка: консультации по исправлению выявленных нарушений в течение месяца после внедрения.

Сроки

Настройка axe-core в Jest + Playwright, покрытие ключевых страниц и компонентов: 2–3 рабочих дня. Если проект использует нестандартные фреймворки (Angular, Vue 3 с SSR) или требуется глубокая кастомизация правил, срок может увеличиться до 5 дней. Мы работаем по предоплате 50%, окончательная стоимость рассчитывается индивидуально после аудита вашего кода.

Наша команда имеет 5+ лет опыта в a11y-аудите и более 50 успешных проектов. Свяжитесь с нами для консультации по внедрению axe-core в ваш проект. Закажите аудит доступности — это снизит риски и сэкономит время.