Аудит доступности мобильного приложения по WCAG
WCAG 2.1 (Web Content Accessibility Guidelines) применяется к мобильным приложениям через WCAG2ICT — официальное руководство W3C по применению критериев к non-web технологиям. Уровни A и AA — минимальный и стандартный порог для большинства требований (государственные тендеры, ADA compliance в США, EN 301 549 в Европе).
Что проверяем
Критерий 1.1 — Текстовые альтернативы
Все нетекстовые элементы (изображения, иконки, кнопки с иконками) должны иметь текстовую альтернативу. На iOS — accessibilityLabel, на Android — contentDescription. Декоративные элементы — явно помечены как пропускаемые (isAccessibilityElement = false, importantForAccessibility="no").
Инструмент: Accessibility Inspector (Xcode) → Audit → Missing Labels. Android Accessibility Scanner — выдаёт список элементов без описания с указанием координат на экране.
Критерий 1.3 — Адаптируемость
Информация и структура не должны зависеть только от визуального восприятия («красная кнопка», «кнопка справа»). Порядок чтения screen reader'а должен совпадать с логическим порядком контента. Для сложных экранов с ConstraintLayout или ZStack — порядок фокуса нужно задавать явно.
Таблицы: если используется UITableView/RecyclerView для отображения табличных данных — заголовки столбцов должны быть доступны через accessibilityLabel заголовочной ячейки, а строки данных связаны с заголовками через accessibilityFrameInContainerSpace или семантику.
Критерий 1.4 — Различимость
1.4.3 Контрастность (AA): минимум 4.5:1 для обычного текста, 3:1 для крупного. Проверяем все текстовые элементы, иконки с информационным значением, границы полей ввода.
1.4.4 Изменение размера текста: поддержка Dynamic Type (iOS) / font scaling (Android) без потери функциональности.
1.4.10 Перекомпоновка (AA, WCAG 2.1): контент должен быть доступен без горизонтальной прокрутки при масштабировании до 400%. На мобильном — аналог: контент при максимальном fontScale должен быть читаем без горизонтального скролла.
1.4.11 Контраст для нетекстовых элементов (AA, WCAG 2.1): иконки, границы полей ввода, индикаторы выбранного состояния — 3:1 относительно соседних цветов.
Критерий 2.1 — Управление с клавиатуры
На мобильном — управление через Switch Control / Switch Access, внешняя клавиатура (iPad + Bluetooth keyboard, Android с HID keyboard). Все функции должны быть доступны без сенсорного экрана. Проверяем Tab-навигацию, Enter для активации, Escape для закрытия модальных окон.
Критерий 2.4 — Навигация
Фокус при открытии модального окна должен переходить на его первый элемент, при закрытии — возвращаться на trigger-элемент. Заголовки экранов (accessibilityTraits = .header в UIKit, Modifier.semantics { heading() } в Compose) — структурируют страницу для пользователей screen reader.
2.4.7 Видимый фокус: при Switch Access / клавиатурной навигации должен быть виден фокус-индикатор. Кастомные темы, убирающие UIFocusEffect или system focusRing — проблема.
Критерий 3.3 — Помощь при вводе
Сообщения об ошибках в формах: «Поле обязательно» должно быть связано с конкретным полем через accessibilityHint или UIAccessibility.post(notification: .announcement). Просто покраска border в красный — невидимо для screen reader.
Формат аудита
Финальный отчёт содержит:
- Таблицу критериев WCAG с оценкой Pass/Fail/N/A
- Скриншоты и описание найденных нарушений
- Приоритеты исправления (блокирующие vs minor)
- Рекомендации по исправлению с примерами кода
| Критерий | Уровень | Статус | Описание нарушения |
|---|---|---|---|
| 1.1.1 | A | Fail | 14 иконок без contentDescription |
| 1.4.3 | AA | Fail | Серый placeholder #9E9E9E на белом: 1.9:1 |
| 2.4.3 | A | Pass | Порядок фокуса логичный |
| 1.4.4 | AA | Partial | Dynamic Type не поддерживается в кастомных ячейках |
Срок аудита: 2-3 дня для приложения среднего масштаба. Опционально — помощь в устранении найденных нарушений. Стоимость рассчитывается после оценки объёма приложения.







