Методика: как мы измеряем доступность муниципальных сайтов
Версия 1.1 · 1 сентября 2026 г. · Maksim Galatin & Claude (Anthropic) · лицензия CC BY 4.0
Зачем понадобилась отдельная методика
Автоматических измерений доступности в мире много. Их делают сканеры вроде axe-core: они дёшевы, воспроизводимы и меряют разметку страницы.
Данных о том, что происходит при попытке пройти путь клавиатурой, почти нет. Набор правил проверяет разметку; дойти до цели он не пробует. Нужен обход, который действительно нажимает Tab на живой странице и смотрит, куда попал фокус.
Мы делаем оба измерения и сравниваем их между собой. Расхождение между ними — главный результат работы, и он получается только тогда, когда обе проверки идут по одной и той же выборке.
Часть I. Автоматическое измерение
Что берём в выборку
Для США — официальный реестр доменов .gov агентства CISA (cisagov/dotgov-data, лицензия CC0, обновляется ежедневно). Из него берутся организации типа City и County: 11 659 записей в 51 штате и территории.
Это важное отличие от подборки, собранной поиском. На вопрос «а откуда вы взяли эти города» есть ответ, который проверяется за минуту: весь официальный реестр, а не то, что нам удалось найти.
Для Европы — муниципальные организации из OpenStreetMap по тегам amenity=townhall, office=government и смежным.
OpenStreetMap заполняется добровольцами, и полнота его различается по странам. Мы не утверждаем, что охватили все муниципалитеты страны; мы утверждаем, что охватили все, у которых в OSM указан сайт. Это разные вещи, и второе проверяемо.
Как проверяем
Настоящий браузер (Chromium через Puppeteer), не запрос по HTTP. Причина: значительная часть современных сайтов собирается скриптами, и проверка исходного HTML измеряет не то, что видит человек.
На каждом сайте: открываем страницу и ждём события domcontentloaded; прогоняем axe-core — открытый набор правил, соответствующий WCAG 2.1 AA; записываем каждое сработавшее правило, число вхождений и селектор DOM; ищем страницу оплаты и проверяем путь до неё.
Что считаем и как
Плотность нарушений = число сработавших правил, делённое на число проверенных страниц. Именно плотность, а не абсолютное число: у большого сайта страниц больше, и сравнивать по сумме нарушений значит наказывать за размер.
Чего мы НЕ делаем — и это важно
Мы не выносим приговор сайту целиком по одной странице, не считаем предупреждения нарушениями и не подменяем измерение оценкой. Автоматическая часть отвечает только на вопрос, сработало ли правило, и ни на какой другой.
Часть II. Обход клавиатурой
Здесь начинается то, чего не делает ни один автоматический аудит.
Задача проверяющего
Пройти путь человека, который хочет заплатить муниципальный налог или штраф, пользуясь только клавиатурой. Мышь не трогать вовсе.
Кто проверяющий
Обход выполняет программный агент в настоящем браузере Chrome, а не человек за столом. Мы говорим это прямо, потому что от ответа на этот вопрос зависит, как читать все числа ниже.
Агент управляет реальной страницей так же, как человек без мыши: нажимает Tab, читает, куда переместился фокус, и останавливается там, где переместиться некуда. Он не разбирает исходный HTML и не судит по разметке — он ходит по живой странице со всеми её скриптами, баннерами согласия и всплывающими окнами.
Что это даёт. Воспроизводимость: тот же обход можно запустить заново и получить тот же результат, а живого человека нельзя посадить за 67 тысяч страниц и нельзя попросить повторить путь через месяц. И масштаб: измерение такого размера человеческими руками не делается вовсе — именно поэтому таких данных до сих пор не было.
Чего это НЕ даёт, и мы это признаём. Агент не заменяет пользователя экранного диктора и не измеряет, насколько понятной оказалась страница. Он отвечает на один вопрос — можно ли физически добраться до цели одной клавиатурой. Мы не утверждаем, что проводили тестирование с незрячими участниками: этого мы не делали.
Что записывается на каждом сайте
| Поле | Что означает |
|---|---|
| шагов до оплаты | сколько нажатий Tab до формы оплаты |
| секунд до оплаты | сколько времени занял путь |
| где оборвалось | элемент, на котором путь стал невозможен |
| причина | что именно помешало |
| есть метки у полей | связаны ли поля формы с подписями |
| контраст в порядке | различим ли текст на кнопке оплаты |
| скриншот | снимок места обрыва |
вердикт_человека | итог обхода: прошёл, частичный барьер, не прошёл. Имя поля историческое и сохранено таким же в открытых данных |
| что сказал скрипт | что об этом сайте сказала автоматика |
Последнее поле — ключевое: оно позволяет сравнить два измерения по одному объекту.
Что считается барьером
- Фокус не виден (outline: none) — непонятно, где находишься
- Ловушка фокуса — из элемента нельзя выйти клавиатурой
- Поле без метки — экранный диктор не может сказать, что вводить
- Кнопка не является кнопкой — div с обработчиком не получает фокус
- Модальное окно не закрывается клавишей Escape
Выбор выборки для обхода
Проверяются обе группы: и те сайты, что автоматика признала доступными, и те, что забраковала. Иначе получилось бы одностороннее измерение, показывающее только ошибки в удобную нам сторону.
Часть III. Что получается на сравнении
Главная величина исследования — расхождение между машиной и обходом, и оно измеряется в обе стороны:
Ложное спокойствие — автоматика говорит «доступно», обход не проходит.
Ложная тревога — автоматика бракует, обход проходит.
Состояние работы на 1 сентября 2026 г.
| показатель | значение |
|---|---|
| записей обхода | 95 524 |
| муниципалитетов пройдено | 11 902 |
| штатов и территорий | 51 |
| записей с проверенным снимком | 83 212 |
| расхождение сканера и обхода | 53,8 % |
Ограничения, которые мы признаём
1. Обход США закончен — пройден весь реестр CISA, 11 659 сайтов из 11 659. Числа по США окончательны; меняться они будут только при добавлении других стран, и об этом будет сказано прямо.
2. Снимок есть не у каждой записи. Там, где страница не открылась, снимать было нечего.
3. Заслон от роботов — не то же самое, что недоступность. Что за ним, мы не знаем и в барьеры это не пишем.
4. Обход не заменяет живого пользователя. Он отвечает на один вопрос: можно ли физически добраться до цели одной клавиатурой. Цель у каждого из восьми типов страниц СВОЯ: найти документ, подать заявку 311, дойти до шага оплаты, найти протокол заседания, главную навигацию, вакансию, контакт, событие в календаре. Общие доли — 74,6 % не дошли, 25,4 % дошли — считаются по всем восьми целям сразу, а не по одной из них. У оплаты своя доля: дошли 19,0 %.
5. Порог в 40 нажатий Tab выбран нами. Он оправдан тем, что медиана успешного пути — три нажатия, но это всё же наш выбор, а не стандарт. Проверено чувствительностью: при порогах 40, 60 и 100 числа СОВПАДАЮТ — выше сорока не доходит никто, 99-й процентиль успешного пути 35 нажатий. Ниже порог уже влияет: при 30 доля дошедших падает на 0,6 пункта, при 20 — на 2,1, при 10 — на 5,7. Главное число сдвигается так же: 53,8 % при 40, 55,0 % при 30, 57,6 % при 20. Значит сорок — это запас, а не содержательное решение: любой больший порог даёт тот же ответ.
6. Сайты, недоступные автоматике, до недавнего времени выпадали из выборки целиком. Таких 787, и среди них Нью-Йорк целиком; 230 из этих муниципалитетов обязаны уложиться в срок 26 апреля 2027 года. Мы проходим их обходом отдельно, в том же порядке — от крупных к малым.
7. Часть страниц проверена дважды, и мы посчитали, что это меняет. Обход идёт кругами, и один и тот же адрес иногда попадает в него повторно: таких записей 348 из 95 524 — 0,4 % журнала. Мы пересчитали все доли, оставив по одной, самой поздней записи на каждую пару «адрес и тип страницы». Главное число не сдвинулось вовсе: 74,6 % и до, и после; доля дошедших — 25,4 % и там и там. Разница — одна сотая пункта, и мы называем её здесь, чтобы не пришлось объяснять потом.
8. Наблюдения не независимы, и мы это измерили. Восемь задач одного сайта связаны между собой: если сайт устроен плохо, плохи чаще все восемь. Внутриклассовая корреляция 0,263, коэффициент вздутия дисперсии 2,72 — значит восемь задач дают не восемь независимых наблюдений, а примерно три. Эффективный объём выборки 17 272 вместо 47 036 измеримых записей. Доверительный интервал главного числа, посчитанный с поправкой на это: 52,7 % [51,7; 53,8]. Без поправки он был бы [53,2; 54,4] — почти вдвое уже, и это было бы неправдой. Отдельно: если считать не по страницам, а по муниципалитетам — по одному голосу на сайт, — выходит 52,7 % против 53,8 %. Расхождение 1,1 пункта: вывод от единицы счёта не зависит.
Открытость
- Сырые данные публикуются целиком, включая записи, которые нам невыгодны
- Код проверки открыт
- Скриншоты обхода прилагаются — по одному на каждую проверенную страницу
- Ошибки прошлых версий описаны прямо в методике, а не переписаны задним числом
Мы проверили и себя
Исследование о доступности, чьи собственные сайты недоступны, не стоит ничего. 27 августа 2026 года мы прошли все четыре своих сайта той же процедурой, что и муниципальные: клавиатурой, в настоящем браузере, с проверкой видимости фокуса на каждом шаге.
| сайт | обводка фокуса | элементов | без имени |
|---|---|---|---|
codeofdigitaleternity.com | solid 3px | 91 | 0 |
aifa.works | solid 2px | 104 | 0 |
aifa.digital | solid 3px | 67 | 0 |
radiocode.space | auto 1px | 46 | 0 |
Отдельно скажем то, что нашли у себя. В нашем коде 83 вхождения outline: none — той самой строки, которая даёт 31 % всех обрывов в нашем же исследовании. Они безвредны только потому, что перебиты общим правилом :focus-visible. Это и есть разница между «написано плохо» и «работает плохо», и мы показываем её на себе.
Раскрытие конфликта интересов
Автор оказывает услуги по устранению нарушений доступности. Исследование самофинансировано. Никто не платил за включение в выборку и никто не платил за исключение из неё.
Как сослаться
Maksim Galatin & Claude (Anthropic). Municipal Website Accessibility: Automated Scan versus Keyboard Traversal. AIfa Works, 2026. CC BY 4.0. aifa.works/research/methodology
Обратная связь
Нашли ошибку в методике или в данных — напишите: contact@codeofdigitaleternity.com
Сами данные — aifa.works/research/data