Аудит доступності мобільного додатка за 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 дні для додатка середнього масштабу. Опціонально — допомога в усуненні знайдених порушень. Вартість розраховується після оцінки обсягу додатка.







