Дизайн
Доступность дизайн-системы: требования к компонентам и приёмке
Как встроить доступность в дизайн-систему: определить контракт компонента, клавиатурную модель, фокус, доступные имена, контраст, документацию и тестирование.

Что важно понять до начала
Дизайн-система может масштабировать как хорошее решение, так и дефект. Если кнопка, поле, диалог или меню имеют корректную семантику и поведение, продуктовые команды получают безопасную основу. Если контракт неполный, ошибка повторяется на десятках экранов.
Документация должна связывать визуальное состояние с техническим: ролью, доступным именем, управлением фокусом, клавиатурными командами, сообщениями об ошибках и поведением при масштабировании.
Как закрепить результат
Разовая настройка быстро устаревает. Правила, тесты и владельцы нужны, чтобы качество сохранялось при следующих релизах и новых интеграциях.
- Изменение базового компонента проходит визуальную и доступностную регрессию.
- Документация объясняет не только API, но и пользовательское поведение.
- Продуктовая команда не может убрать фокус или подпись только ради макета.
- Проблемы из реальных экранов возвращаются в компонент и его тесты.
Что подготовить
До изменений зафиксируйте границы задачи, исходные данные, ответственных и критерий готовности. Это делает проверку воспроизводимой и защищает рабочие процессы.
- Составить инвентарь компонентов и отметить интерактивные и сложные паттерны.
- Сопоставить компонент с нативным HTML или подходящим ARIA-паттерном.
- Выбрать поддерживаемые браузеры, скринридеры и режимы высокой контрастности.
- Определить обязательные props, запрещённые комбинации и критерии приёмки.
Пошаговый план
Работайте небольшими проверяемыми этапами: каждый шаг должен оставлять наблюдаемый результат, который можно проверить до выпуска и после него.
- Начинать с нативной семантики и добавлять ARIA только при необходимости.
- Описать порядок Tab, внутреннюю навигацию клавишами и возврат фокуса.
- Сделать focus-visible, hover, active, disabled и error самостоятельными состояниями.
- Проверить доступное имя, описание, live-сообщение и связь ошибки с полем.
- Тестировать масштабирование, reflow, reduced motion и forced colors.
- Добавить автоматические проверки, ручной сценарий и пример корректного применения.
Что измерять
Набор метрик должен одновременно показывать техническое качество, пользовательский результат и скорость реакции команды на отклонение.
- Доля интерактивных компонентов с клавиатурными и screen-reader тестами.
- Количество дефектов доступности, исправленных на уровне системы.
- Покрытие состояний focus, error, disabled и loading в документации.
- Частота обходных локальных компонентов вместо библиотечного решения.
Типичные ошибки
Большинство сбоев возникает на границах ответственности: когда техническая проверка не связана с бизнес-сценарием, данными и действиями пользователя.
- Копировать пример APG как готовый production-компонент без адаптации и тестирования.
- Показывать состояние только цветом.
- Создавать кликабельный div вместо кнопки или ссылки.
- Добавлять aria-label, который скрывает понятный видимый текст и расходится с ним.
Результат работы
Доступный компонент — это не только стили: он включает семантику, поведение клавиатуры, состояния и правила применения.
Готовое решение включает не только исправление или настройку, но и документированный способ повторной проверки. Так команда может безопасно развивать продукт без возврата прежней проблемы.
Источники
- ARIA Authoring Practices Guide
W3C Web Accessibility Initiative / доступ 2026-09-15
Паттерны и практики семантики, клавиатуры и доступных виджетов.
- Web Content Accessibility Guidelines (WCAG) 2.2
W3C / доступ 2026-09-15
Нормативные критерии доступности веб-контента.
FAQ
Нужно ли добавлять ARIA каждому компоненту?
Нет. Нативные HTML-элементы уже несут семантику и поведение. ARIA применяют, когда нативного элемента недостаточно, и обязательно проверяют результат.
Какие компоненты приоритетнее?
Базовые элементы и сложные паттерны с фокусом: кнопки, ссылки, поля, ошибки, диалоги, меню, вкладки, combobox и таблицы.
Достаточно ли Storybook и автоматических тестов?
Нет. Они полезны для регрессии, но клавиатурное поведение, скринридер и целостность сценария требуют ручной проверки в собранном продукте.
