Тестування доступності мобільних додатків
VoiceOver на iPhone читає кнопку як "Button" замість "Додати в кошик" — тому що UIImageView з іконкою кошика не має встановленого accessibilityLabel. Користувач з порушеннями зору натискає навмисно. Це не теоретична ситуація: 2,2 мільярда людей мають порушення зору, і Apple/Google почали відхиляти додатки з грубими порушеннями доступності при перегляді.
Найпоширеніші проблеми
Відсутні або невірні accessibilityLabels. Користувацькі компоненти—повзунки, власні кнопки, іконки без тексту—не мають автоматичних міток. VoiceOver читає координати або імена класів. На iOS потрібно явно встановлювати accessibilityLabel та accessibilityHint. На Android—contentDescription в XML або через ViewCompat.setAccessibilityDelegate.
Неправильне управління фокусом. Після закриття модального вікна фокус VoiceOver/TalkBack залишається на елементах, які більше не існують на екрані—користувач дезорієнтований. На iOS керуйте через UIAccessibility.post(notification: .screenChanged, argument: targetView). На Android—ViewCompat.setAccessibilityPaneTitle та sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED).
Недостатні touch targets. Apple HIG вимагає мінімум 44×44 pt. Google Material вимагає 48×48 dp. Іконки 24dp з мінімальним відступом—поширена помилка. Користувачі з моторними порушеннями не можуть точно натиснути.
Контрастність тексту. WCAG 2.1 Level AA вимагає 4.5:1 для звичайного тексту та 3:1 для великого тексту (18pt+). Сірий текст на світлому фоні, популярний у заповнювачах та підписах, часто не відповідає стандартам.
Інструменти тестування
Accessibility Inspector (Xcode). Запустіть через Xcode → Open Developer Tool → Accessibility Inspector. Аудит одним кліком—знайде відсутні мітки, недостатні touch targets, проблеми з контрастом. Працює на симуляторі та реальних пристроях.
Accessibility Scanner (Android). Додаток від Google сканує екран та повідомляє про проблеми з класифікацією за типом. Інтегрується у Espresso через AccessibilityChecks.enable()—автоматично запускає перевірки з кожною дією тесту:
@Before
fun setup() {
AccessibilityChecks.enable()
.setRunChecksFromRootView(true)
}
Кожен Espresso-тест тепер включає a11y-перевірки—будь-яке порушення зупиняє тест.
Ручне тестування з VoiceOver/TalkBack. Запустіть ключові сценарії: реєстрація, покупка, основні потоки користувача—тільки через жести screen reader, без візуального контролю. Це виявляє семантичні проблеми, які автоматизація не зловить: логічний порядок читання елементів, неясне формулювання міток, втрачений фокус.
axe DevTools Mobile. Комерційний інструмент з детальною класифікацією порушень WCAG. Надає звіти з рівнями серйозності та посиланнями на специфікації. Корисно для підготовки до відповідності EU Accessibility Act.
Матриця тестування
| Проблема | Автоматичний тест | Ручний тест |
|---|---|---|
| Відсутній accessibilityLabel | Accessibility Scanner / Inspector | VoiceOver |
| Неправильний порядок фокуса | — | VoiceOver / TalkBack |
| Touch target < 44pt/48dp | Accessibility Inspector | — |
| Контрастність | Colour Contrast Analyser | — |
| Анімації на reduce motion | — | Settings → Accessibility |
Робочий процес
Аудит через Accessibility Inspector та Scanner—отримайте список порушень за пріоритетом. Додайте AccessibilityChecks.enable() до Espresso-тестів. Запустіть ключові сценарії вручну з VoiceOver та TalkBack. Фінальний звіт, класифікований за WCAG 2.1 (A/AA) з рекомендаціями.
Часова шкала—2–3 дні для середнього проекту. Для відповідності EU Accessibility Act—повна документація додає 1–2 дні.







