Инструменты разработки доступных приложений
Фронтендер в Тинькофф. Пишу на Реакте.
Организую БирЖС1
<button> вместо <div>?
Семантичная верстка?
ARIA?
Ответ: все вышеперечисленное и даже больше
<label> инпуту добавить
Что делать?
outline на :focus или подсвечивайте сами, ловите и меняйте фокус там, где это необходимо<main>, <nav>, etc.), их ARIA-аналоги (role="banner") и #ссылки для навигации по страницеПопробуем так:
Просто выключите мышку / тачпад
Для смелых и отважных: откройте в реальной читалке:
NVDA для Windows или VoiceOver для macOS
WCAG 2.0 (рус.) — набор подробно описанных критериев доступности интерфейса
Код, не проходящий проверки, не должен попадать в ваш master
(и, желательно, в прод тоже)
Есть аналоги для Angular и Ember.
<div onClick={something} />
const onDOMActivate = callback => ({role='button', tabIndex: 0, onClick: callback,onKeyDown: function(e) {if ([13, 32].includes(e.keyCode))return callback.call(this, e);})<div {...onDOMActivate(something)} />
Открыл в браузере, посмотрел, что не так
Отрендерил – прогнал тесты
Существуют и почти e2e-решения типа intern-a11y
it('should have no accessibility violations', done => {axe.run('.some-component', {}, (err, res) {if (error) return error;expect(res.violations.length).toBe(0);});});
— Есть интересное расширение для хрома (aXe), которое анализирует сайт на доступность
— работает оно так себе, на самом деле как и другие тулзы для автоматизированного тестирования
Берем WCAG в руки, и вперед
Критерии доступности для touch, VR, etc...