Перейти к основному содержимому
Исследование

Методика: как мы измеряем доступность муниципальных сайтов

Версия 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.comsolid 3px910
aifa.workssolid 2px1040
aifa.digitalsolid 3px670
radiocode.spaceauto 1px460

Отдельно скажем то, что нашли у себя. В нашем коде 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