Chrome начал год, пройдя 88,2% тестов в области доступности Interop 2024 . В июне 2024 года мы первыми достигли 100% прохождения тестов. В этом посте объясняется работа, проделанная для достижения этой цели.
Что входит в область доступности?
Как и в любой другой области в Interop 2024, область доступности определяется набором тестов веб-платформы для выбранных функций. Тесты в Interop 2024 направлены на то, чтобы все браузеры одинаково создавали доступные имена и вычисляемые роли.
Доступные имена передают цель или назначение элемента HTML. Это помогает пользователям понять, для чего нужен элемент и как они могут с ним взаимодействовать. Спецификация accname определяет, как браузеры создают доступную строку имени для элемента. Спецификация ARIA включает подробное описание того, как вычисляется это имя .
Вычисленная роль элемента — это строка, которая представляет роль элемента, вычисленную механизмом браузера. Это используется в основном в инструментах разработчика и, например, в функции WebDriver getComputedRole
, позволяющей тестировать совместимость.
Что нужно было сделать команде Chrome?
Нам нужно было выполнить две более крупные области работы: изменение сопоставления ролей на общие роли и удаление устаревших ролей. Затем нужно было реализовать несколько дополнительных мелких исправлений и функций. Помимо следующей работы, которую выполнила команда Chrome, мы также сотрудничали с Microsoft над исправлениями, которые они вносили в Chromium в области специальных возможностей.
Изменить сопоставление определенных ролей на общую роль
Изменение сопоставления на общую роль удаляет семантику доступности из элемента. Общие элементы не представляют ценности для дерева доступности, поэтому они не включаются в дерево. Это повышает производительность, делает дерево меньше и облегчает анализ вспомогательных технологий. Следующие роли заменяются на общие роли.
-
<header>
ограниченный<main>
, или элемент содержимого раздела (<article>
,<aside>
,<nav>
или<section>
). -
<footer>
ограниченный<main>
, или элемент содержимого раздела (<article>
,<aside>
,<nav>
или<section>
). -
<aside>
внутри элемента содержимого раздела (<article>
,<aside>
,<nav>
или<section>
) без доступного имени. -
<section>
без доступного имени. - Потерянные элементы списка (
<li>
).
В первых четырех пунктах списка эти элементы обычно сопоставляются с ролями ориентиров . Наличие двух большого количества ориентиров на странице может затруднить навигацию, поэтому это изменение помогает уменьшить количество повторяющихся ориентиров, упрощая навигацию по странице. Последний элемент обычно указывает на ошибку разработчика страницы. Элемент списка всегда должен находиться внутри списка, поэтому потерянному элементу присваивается общая роль.
Удаление устаревшей роли
Мы объявили роль directory
устаревшей и сопоставили ее с ролью списка. В ARIA 1.2 роль directory
признана устаревшей. В спецификации поясняется, что это эквивалентно роли list
, и разработчикам следует использовать list
. Чтобы сохранить семантику старого контента, использующего directory
, теперь он сопоставлен со list
в Chrome.
Другие исправления
Мы добавили поддержку роли gridcell
. Эта новая роль делает различие между gridcell
и cell
более четким. В отличие от cell
, gridcell
можно фокусировать, редактировать и выбирать.
Мы добавили расчет резервной роли. Раньше мы не проверяли наличие резервных ролей, поэтому, если первая роль была недействительна, мы использовали другую роль, которая не описана в спецификации .
Некоторые роли действительны только в том случае, если они находятся в правильном контексте. Мы добавили проверку на недопустимое использование ролей следующим образом:
- Роль
row
должна находиться внутриtable
,grid
,rowgroup
илиtreegrid
. - Роль
rowgroup
должна находиться внутриtable
,grid
,tree
илиtreegrid
. - Роль
listitem
должна находиться внутриlist
.
Если роль недействительна, Chrome теперь использует другую информацию, например элемент HTML, для вычисления альтернативной роли.
Мы пометили thead
и tfooter
как включенные в дерево доступности. Раньше они были помечены как игнорируемые, но все равно включались в дерево. Теперь верхний и нижний колонтитулы таблицы можно анализировать с помощью вспомогательных технологий.
Хотя эти изменения могут быть незаметны для большинства разработчиков, поскольку все браузеры работают над тем, чтобы эти вещи работали одинаково, мы гарантируем, что разные роли везде будут доступны одинаково.