Декларация о доступности
WCAG 2.2 AA, соответствует частично: что проверяется автоматически, что не проверяется вовсе и когда будет закрыто каждое из известных исключений.
Черновик до запуска: текст написан, юристом не проверялся.
Заявленный уровень
Портал стремится к соответствию WCAG 2.2, уровень AA на всех страницах и в обеих локалях.
Не AAA, и это не осторожность. Часть его критериев — контраст 7:1, отсутствие ограничений по времени — несовместима с плотной технической вёрсткой, а заявлять недостижимое хуже, чем заявлять реальное: невыполнимое обещание обесценивает и выполнимые.
Статус соответствия
Соответствует частично. Все автоматические проверки проходят на всех шаблонах в обеих темах, и незакрытого долга нет. Но настоящей проверки со скринридером не было ни одной, а автоматика ловит около трети реальных барьеров — поэтому заявить полное соответствие нельзя.
Это и есть главное, что стоит знать из всей страницы. Зелёный прогон — не соответствие, а его нижняя граница; остальное перечислено в исключениях ниже, и там же сказано, когда будет закрыто.
Как проверяется
Всё перечисленное исполняется на каждом pull request и роняет сборку. Проверка, которую можно не пройти без последствий, не проходится всегда.
| Что | На чём |
|---|---|
| axe-core, наборы правил wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa | 29 шаблонов страниц × 2 темы |
| 1.4.10 Reflow при 320 × 256 CSS-пикселях | 14 шаблонов |
| 2.5.8 Target Size, 24 px, с обоими исключениями критерия | 3 шаблона |
| Клавиатурный обход: порядок, видимое кольцо, отсутствие ловушки | 7 шаблонов × 2 темы |
| Escape закрывает раскрытия и возвращает фокус | меню, панель языка, палитра команд |
| Контраст, посчитанный функцией самой библиотеки | 16 пар токенов × 2 темы |
| Lighthouse, категория доступности | ключевые маршруты |
Шаблонами, а не страницами: шаблон тиражируется, и нарушение в нём — это нарушение на всех его страницах. Список покрывает каждую существующую раскладку хотя бы раз, и гейт следит, чтобы ни один из его адресов не превратился в 404 — иначе проверка сканировала бы страницу ошибки и оставалась зелёной.
Чего автоматика не проверяет
Перечисление честное, а не оговорка мелким шрифтом. Автоматика не проверяет и не притворяется, что проверяет:
- осмысленность `alt` и порядка чтения;
- понятность имени ссылки вне контекста;
- то, как объявление живой области звучит на самом деле;
- работу с настоящим скринридером и настоящим увеличением.
Известные исключения
Раздел обязательный, и обязателен он не по форме: декларация без перечня исключений не вызывает доверия ни у кого, кто читал хоть одну настоящую.
Проверки настоящим скринридером не было
Автоматика ловит около трети реальных барьеров. Она ничего не говорит о том, осмыслен ли
alt, читается ли порядок, понятно ли имя ссылки вне контекста и как на самом деле звучит объявление живой области. Ничего из этого на портале человеком не проверялось.План: VoiceOver + Safari и NVDA + Firefox на ключевых маршрутах — главная, поиск, страница компонента, playground — до запуска и раз в квартал дальше.
Ручной проверки увеличения и тача не было
Reflow измеряется в эмулированном окне 320 пикселей, размер цели — в эмулированном 390. Настоящее увеличение браузера на 200% и 400% и настоящие пальцы на настоящем устройстве — другое, и этого не пробовали.
План: Вместе с проходом по скринридерам, до запуска.
Живые демо — компоненты библиотеки
Демо на странице компонента — не картинка, а сам компонент, и подчиняется тем же критериям. Барьер, найденный в нём, — находка о библиотеке, а не о сайте, и портал может только сообщить о ней. Из 108 записей каталога клавиатурный контракт описан у 48; у остальных его нет, и сверять их не с чем.
План: Клавиатурный контракт дописывается в репозитории библиотеки; портал считает покрытие на каждой сборке и называет его вслух.
Playground ещё не сделан
Страница
/playground— заглушка. Когда она станет песочницей, исполняющей код, её доступность будет отдельным заявлением: у редактируемой области кода свои критерии, и наследовать эту декларацию было бы неверно.План: Отдельный раздел этой декларации в день появления песочницы.
Часть сайта — ещё заглушки
Ненаписанные страницы показывают рабочий блок плана, и он цитирует русское ТЗ. На английской странице он помечен
lang="ru", поэтому диктор читает его правилами верного языка, — но непереведённым он и остаётся, и это осознанный выбор, а не недосмотр.План: Каждый блок исчезает вместе со своей заглушкой, когда страница получает настоящее содержимое.
Базовая линия долга
Известных нарушений, отложенных «на потом», нет: базовая линия пуста. Пустой она и остаётся не сама собой — приём в том, что перечисленное в ней не роняет прогон, а всё новое роняет, и поэтому нарушение чинится, а не дописывается в список.
На чём проверялось
Ни на одной вспомогательной технологии. Проверки шли в Chromium под управлением Playwright — это браузер, а не скринридер, и выдавать одно за другое в декларации о доступности значило бы обесценить весь документ.
Планируются VoiceOver + Safari на macOS и iOS и NVDA + Firefox на Windows. Как только проход состоится, здесь появится его дата и то, что он нашёл.
Как сообщить о барьере
Если что-то на сайте оказалось недоступно — напишите на accessibility@granularity.tech. Отвечаем в течение пяти рабочих дней. Опишите страницу, вспомогательную технологию и то, что не получилось, — этого достаточно, воспроизведение наше дело.
Барьер в живом демо — это, скорее всего, находка о библиотеке, а не о сайте. Писать всё равно сюда: разберёмся, куда её отнести, и заведём issue сами.
Правовой статус декларации
Декларация добровольная. Директива (EU) 2019/882 — Европейский акт о доступности — действует с 28 июня 2025 года и распространяется на электронную торговлю; портал ничего не продаёт, и обязанность по ней не наступила. Она наступит в тот день, когда на сайте появится кнопка покупки, и строить сайт доступным сразу дешевле, чем приводить в соответствие потом.
Состав поставки, SBOM и ответы для опросников — на странице комплаенса.