Angular IDPStrong Junior
🔥 0

Модуль 7 · урок 9 з 10

Перевірка a11y

Тепер перевірка. Доступність — рідкісна тема, де є інструменти, які знаходять проблеми автоматично. Але автоматика ловить приблизно третину; решта — це пʼять хвилин ручного прогону, які ти вже вмієш робити.

Порядок перевірки

  1. Lighthouse → Accessibility. Вбудований у Chrome, дає число й список проблем. Швидкий загальний зріз.
  2. axe DevTools. Розширення, знаходить більше й пояснює кожну проблему з посиланням на правило.
  3. Клавіатурний прогін. Пʼять хвилин без миші — те, чого не бачить жоден інструмент.
  4. Перевірка контрасту. Обидві теми, включно з приглушеним текстом і фокусом.
  5. Скрінрідер. Найдовше, але дає найбільше розуміння.
Чому автоматика ловить лише третину

Інструмент бачить, що в кнопки немає імені, або що контраст 3.2:1. Але він не знає, чи aria-label="Кнопка 1" щось означає для людини, чи логічний порядок фокуса, чи зрозуміла помилка. Тому число в Lighthouse — це не мета, а перший фільтр.

Чекліст для нашого застосунку

ПеревіркаЯк
Кожна іконкова кнопка має імʼяaxe або Tab із увімкненим скрінрідером
Поля повʼязані з підписамиКлік по підпису має ставити курсор у поле
Помилки повʼязані з полямиaria-describedby у DevTools
Таблиця має th і scopeПеревірити розмітку
Сортування оголошуєтьсяaria-sort на заголовку
Модалка тримає фокусTab по колу, Escape закриває
Фокус видно завждиПрогін Tab по всьому екрану
Контраст обох темLighthouse у світлій і темній
Статуси не лише кольоромПодивитись у чорно-білому режимі
Анімації вимикаютьсяDevTools → Rendering → prefers-reduced-motion

Емуляція в DevTools

// Chrome DevTools → Rendering (⋮ → More tools → Rendering)
Emulate CSS media feature prefers-reduced-motion   // анімації мають зникнути
Emulate CSS media feature prefers-color-scheme     // перевірити обидві теми
Emulate vision deficiencies → Protanopia            // червоно-зелена сліпота
Emulate vision deficiencies → Blurred vision        // перевірка розмірів і контрасту

Режим Protanopia — найшвидший спосіб побачити проблему зі статусами: якщо після переключення бейджі «готово» і «заблоковано» стали однаковими, значить колір у тебе носій змісту, а не підсилення.

Скрінрідер за десять хвилин

macOS:   VoiceOver — Cmd+F5
Windows: NVDA — безкоштовний, найпоширеніший

Не треба вчити всі команди. Достатньо трьох речей: увімкнути, пройти сторінку Tab-ом і послухати, що озвучується. Найпоказовіше — відкрити модалку й спробувати зрозуміти на слух, що це за вікно й що в ньому робити.

Що зазвичай звучить добре
  • Кнопка з текстом: «Зберегти, кнопка».
  • Поле з підписом: «Код задачі, поле вводу».
  • Заголовки: можна стрибати між розділами.
  • Таблиця з th: «Статус, колонка».
Що звучить погано
  • «Кнопка» — без імені, іконка без aria-label.
  • «Посилання, посилання, посилання» — однаковий текст «Детальніше».
  • Тиша після натискання «Зберегти» — немає живої області.
  • Читання скелетона як порожніх елементів.
  • Модалка, яка не оголошує себе — немає заголовка.

Що показати ліду

«Прогнав Lighthouse — Accessibility 100, але це лише перший фільтр. Далі пройшов основний сценарій без миші: пошук, сортування, відкриття модалки, збереження. Фокус видно скрізь, із модалки не виходить, після закриття повертається на кнопку. Контраст перевірив в обох темах, найслабше місце було в приглушеному тексті — підняв до 4.6. Статуси не лише кольором: у режимі протанопії вони й далі розрізняються, бо є текст і іконка.»

Ця відповідь працює краще за будь-яке число, бо показує розуміння межі інструментів. І майже ніхто з кандидатів такого не робить — тож запамʼятовується.