UNPKG

axe-core

Version:

Accessibility engine for automated Web UI testing

893 lines 91.6 kB
{ "lang": "ru", "rules": { "accesskeys": { "description": "Убедитесь, что значение атрибута accesskey является уникальным", "help": "Значение атрибута accesskey должно быть уникальным" }, "area-alt": { "description": "Убедитесь, что элементы <area> карт изображений имеют альтернативный текст", "help": "Активные элементы <area> должны иметь альтернативный текст" }, "aria-allowed-attr": { "description": "Убедитесь, что роль элемента поддерживает его ARIA атрибуты", "help": "Элементы должны использовать только поддерживаемые ARIA атрибуты" }, "aria-allowed-role": { "description": "Убедитесь, что атрибут role имеет допустимое значение для элемента", "help": "ARIA роль должна быть подходящей для элемента" }, "aria-braille-equivalent": { "description": "Убедитесь, что aria-braillelabel и aria-brailleroledescription имеют эквивалентный текст не для шрифта Брайля", "help": "Атрибуты aria-braille должны иметь эквивалентный текст не для шрифта Брайля" }, "aria-command-name": { "description": "Убедитесь, что каждая ARIA кнопка, ссылка и пункт меню имеет доступное имя", "help": "ARIA команды должны иметь доступное имя" }, "aria-conditional-attr": { "description": "Убедитесь, что ARIA атрибуты используются в соответствии со спецификацией роли элемента", "help": "ARIA атрибуты должны использоваться в соответствии с ролью элемента" }, "aria-deprecated-role": { "description": "Убедитесь, что элементы не используют устаревшие роли", "help": "Устаревшие ARIA роли не должны использоваться" }, "aria-dialog-name": { "description": "Убедитесь, что каждая ARIA диалоговая форма и alertdialog узел имеют доступное имя", "help": "ARIA диалоговые формы и alertdialog узлы должны иметь доступное имя" }, "aria-hidden-body": { "description": "Убедитесь, что aria-hidden=\"true\" отсутствует на теле документа.", "help": "aria-hidden=\"true\" не должно присутствовать на теле документа" }, "aria-hidden-focus": { "description": "Убедитесь, что aria-hidden элементы не могут быть сфокусированы и не содержат фокусируемых элементов", "help": "ARIA скрытые элементы не должны быть фокусируемыми или содержать фокусируемые элементы" }, "aria-input-field-name": { "description": "Убедитесь, что каждое ARIA поле ввода имеет доступное имя", "help": "ARIA поля ввода должны иметь доступное имя" }, "aria-meter-name": { "description": "Убедитесь, что каждый ARIA meter узел имеет доступное имя", "help": "ARIA meter узлы должны иметь доступное имя" }, "aria-progressbar-name": { "description": "Убедитесь, что каждый ARIA progressbar узел имеет доступное имя", "help": "ARIA progressbar узлы должны иметь доступное имя" }, "aria-prohibited-attr": { "description": "Убедитесь, что ARIA атрибуты не запрещены для роли элемента", "help": "Элементы должны использовать только разрешенные ARIA атрибуты" }, "aria-required-attr": { "description": "Убедитесь, что элементы с ARIA ролями имеют все необходимые ARIA атрибуты", "help": "Необходимые ARIA атрибуты должны быть предоставлены" }, "aria-required-children": { "description": "Убедитесь, что элементы с ARIA ролями, требующими дочерние роли, содержат их", "help": "Некоторые ARIA роли должны содержать определенные дочерние роли" }, "aria-required-parent": { "description": "Убедитесь, что элементы с ARIA ролями, требующими родительские роли, содержатся ими", "help": "Некоторые ARIA роли должны содержаться в определенных родительских ролях" }, "aria-roledescription": { "description": "Убедитесь, что aria-roledescription используется только на элементах с явной или неявной ролью", "help": "aria-roledescription должен использоваться на элементах с семантической ролью" }, "aria-roles": { "description": "Убедитесь, что все элементы с атрибутом role используют допустимое значение", "help": "ARIA роли должны соответствовать допустимым значениям" }, "aria-text": { "description": "Убедитесь, что роль=\"text\" используется на элементах без фокусируемых потомков", "help": "\"роль=text\" не должна иметь фокусируемых потомков" }, "aria-toggle-field-name": { "description": "Убедитесь, что каждое ARIA toggle поле имеет доступное имя", "help": "ARIA toggle поля должны иметь доступное имя" }, "aria-tooltip-name": { "description": "Убедитесь, что каждый ARIA tooltip узел имеет доступное имя", "help": "ARIA tooltip узлы должны иметь доступное имя" }, "aria-treeitem-name": { "description": "Убедитесь, что каждый ARIA treeitem узел имеет доступное имя", "help": "ARIA treeitem узлы должны иметь доступное имя" }, "aria-valid-attr-value": { "description": "Убедитесь, что все ARIA атрибуты имеют допустимые значения", "help": "ARIA атрибуты должны соответствовать допустимым значениям" }, "aria-valid-attr": { "description": "Убедитесь, что атрибуты, начинающиеся с aria-, являются допустимыми ARIA атрибутами", "help": "ARIA атрибуты должны соответствовать допустимым именам" }, "audio-caption": { "description": "Убедитесь, что элементы <audio> имеют субтитры", "help": "Элементы <audio> должны иметь трек субтитров" }, "autocomplete-valid": { "description": "Убедитесь, что атрибут autocomplete правильный и подходит для поля формы", "help": "Атрибут autocomplete должен использоваться правильно" }, "avoid-inline-spacing": { "description": "Убедитесь, что расстояние между текстом, установленное через атрибуты стиля, можно настроить с помощью пользовательских таблиц стилей", "help": "Встроенное текстовое пространство должно быть регулируемым с помощью пользовательских таблиц стилей" }, "blink": { "description": "Убедитесь, что элементы <blink> не используются", "help": "Элементы <blink> устарели и не должны использоваться" }, "button-name": { "description": "Убедитесь, что кнопки имеют различимый текст", "help": "Кнопки должны иметь различимый текст" }, "bypass": { "description": "Убедитесь, что на каждой странице есть хотя бы один механизм, позволяющий пользователю обходить навигацию и переходить непосредственно к содержимому", "help": "На странице должен быть способ обойти повторяющиеся блоки" }, "color-contrast-enhanced": { "description": "Убедитесь, что контраст между цветами переднего и заднего плана соответствует пороговым значениям улучшенной контрастности WCAG 2 AAA", "help": "Элементы должны соответствовать пороговым значениям улучшенной контрастности цвета" }, "color-contrast": { "description": "Убедитесь, что контраст между цветами переднего и заднего плана соответствует минимальным пороговым значениям контрастности WCAG 2 AA", "help": "Элементы должны соответствовать минимальным пороговым значениям контрастности цвета" }, "css-orientation-lock": { "description": "Убедитесь, что содержимое не привязано к определенной ориентации дисплея, и оно доступно во всех ориентациях дисплея", "help": "Медиа-запросы CSS не должны блокировать ориентацию дисплея" }, "definition-list": { "description": "Убедитесь, что элементы <dl> структурированы правильно", "help": "Элементы <dl> должны содержать только группы <dt> и <dd>, <script>, <template> или <div> элементы" }, "dlitem": { "description": "Убедитесь, что элементы <dt> и <dd> находятся внутри <dl>", "help": "Элементы <dt> и <dd> должны быть размещены внутри <dl>" }, "document-title": { "description": "Убедитесь, что каждый HTML-документ содержит непустой элемент <title>", "help": "Документы должны иметь элемент <title> для навигации" }, "duplicate-id-active": { "description": "Убедитесь, что каждое значение атрибута id активных элементов уникально", "help": "Идентификаторы активных элементов должны быть уникальными" }, "duplicate-id-aria": { "description": "Убедитесь, что каждое значение атрибута id, используемого в ARIA и метках, уникально", "help": "Идентификаторы, используемые в ARIA и метках, должны быть уникальными" }, "duplicate-id": { "description": "Убедитесь, что каждое значение атрибута id уникально", "help": "Значение атрибута id должно быть уникальным" }, "empty-heading": { "description": "Убедитесь, что заголовки содержат различимый текст", "help": "Заголовки не должны быть пустыми" }, "empty-table-header": { "description": "Убедитесь, что заголовки таблиц содержат различимый текст", "help": "Текст заголовка таблицы не должен быть пустым" }, "focus-order-semantics": { "description": "Убедитесь, что элементы в порядке фокуса имеют роль, соответствующую интерактивному содержимому", "help": "Элементы в порядке фокуса должны иметь соответствующую роль" }, "form-field-multiple-labels": { "description": "Убедитесь, что поле формы не имеет нескольких элементов label", "help": "Поле формы не должно иметь несколько элементов label" }, "frame-focusable-content": { "description": "Убедитесь, что элементы <frame> и <iframe> с фокусируемым содержимым не имеют tabindex=-1", "help": "Фреймы с фокусируемым содержимым не должны иметь tabindex=-1" }, "frame-tested": { "description": "Убедитесь, что элементы <iframe> и <frame> содержат скрипт axe-core", "help": "Фреймы должны быть протестированы с помощью axe-core" }, "frame-title-unique": { "description": "Убедитесь, что элементы <iframe> и <frame> содержат уникальный атрибут title", "help": "Фреймы должны иметь уникальный атрибут title" }, "frame-title": { "description": "Убедитесь, что элементы <iframe> и <frame> имеют доступное имя", "help": "Фреймы должны иметь доступное имя" }, "heading-order": { "description": "Убедитесь, что порядок заголовков соответствует семантической структуре", "help": "Уровни заголовков должны увеличиваться на единицу" }, "hidden-content": { "description": "Информирует пользователей о скрытом содержимом.", "help": "Скрытое содержимое на странице должно быть проанализировано" }, "html-has-lang": { "description": "Убедитесь, что каждый HTML-документ имеет атрибут lang", "help": "Элемент <html> должен иметь атрибут lang" }, "html-lang-valid": { "description": "Убедитесь, что атрибут lang элемента <html> имеет допустимое значение", "help": "Элемент <html> должен иметь допустимое значение для атрибута lang" }, "html-xml-lang-mismatch": { "description": "Убедитесь, что HTML элементы с атрибутами lang и xml:lang согласуются в базовом языке страницы", "help": "HTML элементы с атрибутами lang и xml:lang должны согласоваться в базовом языке" }, "identical-links-same-purpose": { "description": "Убедитесь, что ссылки с одинаковым доступным именем выполняют схожую цель", "help": "Ссылки с одинаковым именем должны выполнять схожую цель" }, "image-alt": { "description": "Убедитесь, что элементы <img> имеют альтернативный текст или роль \"none\" или \"presentation\"", "help": "Изображения должны иметь альтернативный текст" }, "image-redundant-alt": { "description": "Убедитесь, что альтернативный текст изображения не повторяется в тексте", "help": "Альтернативный текст изображения не должен повторяться в тексте" }, "input-button-name": { "description": "Убедитесь, что кнопки ввода имеют различимый текст", "help": "Кнопки ввода должны иметь различимый текст" }, "input-image-alt": { "description": "Убедитесь, что элементы <input type=\"image\"> имеют альтернативный текст", "help": "Кнопки изображения должны иметь альтернативный текст" }, "label-content-name-mismatch": { "description": "Убедитесь, что элементы, маркированные через их содержимое, содержат видимый текст как часть доступного имени", "help": "Элементы должны содержать видимый текст как часть доступного имени" }, "label-title-only": { "description": "Убедитесь, что каждый элемент формы имеет видимую метку и не маркируется исключительно скрытыми метками, или атрибутами title или aria-describedby", "help": "Элементы формы должны иметь видимую метку" }, "label": { "description": "Убедитесь, что каждый элемент формы имеет метку", "help": "Элементы формы должны иметь метки" }, "landmark-banner-is-top-level": { "description": "Убедитесь, что область баннера находится на верхнем уровне", "help": "Область баннера не должна быть вложена в другую область" }, "landmark-complementary-is-top-level": { "description": "Убедитесь, что дополнительная область или aside находятся на верхнем уровне", "help": "Aside не должен быть вложен в другую область" }, "landmark-contentinfo-is-top-level": { "description": "Убедитесь, что область contentinfo находится на верхнем уровне", "help": "Область contentinfo не должна быть вложена в другую область" }, "landmark-main-is-top-level": { "description": "Убедитесь, что область main находится на верхнем уровне", "help": "Область main не должна быть вложена в другую область" }, "landmark-no-duplicate-banner": { "description": "Убедитесь, что документ содержит не более одного баннера", "help": "Документ не должен содержать более одного баннера" }, "landmark-no-duplicate-contentinfo": { "description": "Убедитесь, что документ содержит не более одной области contentinfo", "help": "Документ не должен содержать более одной области contentinfo" }, "landmark-no-duplicate-main": { "description": "Убедитесь, что документ содержит не более одной области main", "help": "Документ не должен содержать более одной области main" }, "landmark-one-main": { "description": "Убедитесь, что документ содержит одну основную область", "help": "Документ должен содержать одну основную область" }, "landmark-unique": { "description": "Убедитесь, что области уникальны", "help": "Области должны иметь уникальную роль или комбинацию роли/метки/названия (т.е. доступное имя)" }, "link-in-text-block": { "description": "Убедитесь, что ссылки выделяются на фоне окружающего текста, не полагаясь только на цвет", "help": "Ссылки должны быть различимы без использования цвета" }, "link-name": { "description": "Убедитесь, что ссылки содержат различимый текст", "help": "Ссылки должны содержать различимый текст" }, "list": { "description": "Убедитесь, что списки структурированы правильно", "help": "Элементы <ul> и <ol> должны содержать только элементы <li>, <script> или <template>" }, "listitem": { "description": "Убедитесь, что элементы <li> используются семантически правильно", "help": "Элементы <li> должны быть вложены в <ul> или <ol>" }, "marquee": { "description": "Убедитесь, что элементы <marquee> не используются", "help": "Элементы <marquee> устарели и не должны использоваться" }, "meta-refresh-no-exceptions": { "description": "Убедитесь, что <meta http-equiv=\"refresh\"> не используется для отложенного обновления", "help": "Отложенное обновление не должно использоваться" }, "meta-refresh": { "description": "Убедитесь, что <meta http-equiv=\"refresh\"> не используется для отложенного обновления", "help": "Отложенное обновление менее 20 часов не должно использоваться" }, "meta-viewport-large": { "description": "Убедитесь, что <meta name=\"viewport\"> позволяет значительное масштабирование", "help": "Пользователи должны иметь возможность увеличивать и масштабировать текст до 500%" }, "meta-viewport": { "description": "Убедитесь, что <meta name=\"viewport\"> не отключает масштабирование и увеличение текста", "help": "Масштабирование и увеличение текста не должны быть отключены" }, "nested-interactive": { "description": "Убедитесь, что интерактивные элементы не вложены, так как они могут не озвучиваться экранными считывателями или вызывать проблемы с фокусом для вспомогательных технологий", "help": "Интерактивные элементы не должны быть вложены" }, "no-autoplay-audio": { "description": "Убедитесь, что элементы <video> или <audio> не воспроизводят аудио автоматически более 3 секунд без механизма для его остановки или отключения", "help": "Элементы <video> или <audio> не должны воспроизводиться автоматически" }, "object-alt": { "description": "Убедитесь, что элементы <object> имеют альтернативный текст", "help": "Элементы <object> должны иметь альтернативный текст" }, "p-as-heading": { "description": "Убедитесь, что текст, оформленный как жирный, курсивный или с измененным размером шрифта, не используется для оформления элементов <p> в качестве заголовков", "help": "Оформленные элементы <p> не должны использоваться как заголовки" }, "page-has-heading-one": { "description": "Убедитесь, что страница или хотя бы один из ее фреймов содержит заголовок первого уровня", "help": "Страница должна содержать заголовок первого уровня" }, "presentation-role-conflict": { "description": "Элементы, отмеченные как презентационные, не должны иметь глобальные ARIA атрибуты или tabindex, чтобы все экранные считыватели игнорировали их", "help": "Убедитесь, что элементы, отмеченные как презентационные, последовательно игнорируются" }, "region": { "description": "Убедитесь, что все содержимое страницы заключено в ориентиры", "help": "Все содержимое страницы должно быть заключено в ориентиры" }, "role-img-alt": { "description": "Убедитесь, что элементы с ролью [role=\"img\"] имеют альтернативный текст", "help": "Элементы с ролью [role=\"img\"] должны иметь альтернативный текст" }, "scope-attr-valid": { "description": "Убедитесь, что атрибут scope используется правильно в таблицах", "help": "Атрибут scope должен использоваться правильно" }, "scrollable-region-focusable": { "description": "Убедитесь, что элементы с прокручиваемым содержимым доступны с клавиатуры", "help": "Прокручиваемая область должна быть доступна с клавиатуры" }, "select-name": { "description": "Убедитесь, что элемент select имеет доступное имя", "help": "Элемент select должен иметь доступное имя" }, "server-side-image-map": { "description": "Убедитесь, что серверные карты изображений не используются", "help": "Серверные карты изображений не должны использоваться" }, "skip-link": { "description": "Убедитесь, что все ссылки для пропуска имеют фокусируемую цель", "help": "Цель ссылки для пропуска должна существовать и быть фокусируемой" }, "summary-name": { "description": "Убедитесь, что элементы summary содержат различимый текст", "help": "Элементы summary должны содержать различимый текст" }, "svg-img-alt": { "description": "Убедитесь, что элементы <svg> с ролью img, graphics-document или graphics-symbol имеют доступный текст", "help": "Элементы <svg> с ролью img должны иметь альтернативный текст" }, "tabindex": { "description": "Убедитесь, что значения атрибута tabindex не превышают 0", "help": "Элементы не должны иметь tabindex больше нуля" }, "table-duplicate-name": { "description": "Убедитесь, что элемент <caption> не содержит тот же текст, что и атрибут summary", "help": "Таблицы не должны иметь одинаковый summary и caption" }, "table-fake-caption": { "description": "Убедитесь, что таблицы с заголовком используют элемент <caption>", "help": "Данные или заголовочные ячейки не должны использоваться для заголовка таблицы" }, "target-size": { "description": "Убедитесь, что целевые элементы для касания имеют достаточный размер и пространство", "help": "Все целевые элементы для касания должны быть не менее 24px или иметь достаточное пространство" }, "td-has-header": { "description": "Убедитесь, что каждая непустая ячейка данных в таблице больше 3 на 3 имеет один или несколько заголовков таблицы", "help": "Непустые элементы <td> в больших таблицах должны иметь связанные заголовки таблицы" }, "td-headers-attr": { "description": "Убедитесь, что каждая ячейка в таблице, использующая атрибут headers, ссылается только на другие элементы <th> в этой таблице", "help": "Атрибуты headers ячеек таблицы должны ссылаться на другие элементы <th> в той же таблице" }, "th-has-data-cells": { "description": "Убедитесь, что элементы <th> и элементы с ролью columnheader/rowheader имеют ячейки данных, которые они описывают", "help": "Заголовки таблицы в таблице данных должны ссылаться на ячейки данных" }, "valid-lang": { "description": "Убедитесь, что атрибуты lang имеют допустимые значения", "help": "Атрибут lang должен иметь допустимое значение" }, "video-caption": { "description": "Убедитесь, что элементы <video> имеют субтитры", "help": "Элементы <video> должны иметь субтитры" } }, "checks": { "abstractrole": { "pass": "Абстрактные роли не используются", "fail": { "singular": "Абстрактная роль не может быть использована напрямую: ${data.values}", "plural": "Абстрактные роли не могут быть использованы напрямую: ${data.values}" } }, "aria-allowed-attr": { "pass": "ARIA атрибуты используются правильно для заданной роли", "fail": { "singular": "ARIA атрибут не допускается: ${data.values}", "plural": "ARIA атрибуты не допускаются: ${data.values}" }, "incomplete": "Проверьте, не возникает ли проблема, если атрибут ARIA будет проигнорирован на этом элементе: ${data.values}" }, "aria-allowed-role": { "pass": "ARIA роль допустима для данного элемента", "fail": { "singular": "ARIA роль ${data.values} не допускается для данного элемента", "plural": "ARIA роли ${data.values} не допускаются для данного элемента" }, "incomplete": { "singular": "ARIA роль ${data.values} должна быть удалена, когда элемент становится видимым, так как она не допускается для элемента", "plural": "ARIA роли ${data.values} должны быть удалены, когда элемент становится видимым, так как они не допускаются для элемента" } }, "aria-busy": { "pass": "Элемент имеет атрибут aria-busy", "fail": "Элемент использует aria-busy=\"true\", пока отображается индикатор загрузки" }, "aria-conditional-attr": { "pass": "ARIA атрибут допустим", "fail": { "checkbox": "Удалите aria-checked или установите его значение в \"${data.checkState}\", чтобы оно соответствовало фактическому состоянию флажка", "rowSingular": "Этот атрибут поддерживается для строк treegrid, но не для ${data.ownerRole}: ${data.invalidAttrs}", "rowPlural": "Эти атрибуты поддерживаются для строк treegrid, но не для ${data.ownerRole}: ${data.invalidAttrs}" } }, "aria-errormessage": { "pass": "aria-errormessage существует и ссылается на элементы, видимые для экранных считывателей, которые используют поддерживаемую технику aria-errormessage", "fail": { "singular": "Значение aria-errormessage `${data.values}` должно использовать технику для объявления сообщения (например, aria-live, aria-describedby, role=alert и т.д.)", "plural": "Значения aria-errormessage `${data.values}` должны использовать технику для объявления сообщения (например, aria-live, aria-describedby, role=alert и т.д.)", "hidden": "Значение aria-errormessage `${data.values}` не может ссылаться на скрытый элемент" }, "incomplete": { "singular": "Убедитесь, что значение aria-errormessage `${data.values}` ссылается на существующий элемент", "plural": "Убедитесь, что значения aria-errormessage `${data.values}` ссылаются на существующие элементы", "idrefs": "Невозможно определить, существует ли элемент aria-errormessage на странице: ${data.values}" } }, "aria-hidden-body": { "pass": "Атрибут aria-hidden отсутствует на теле документа", "fail": "aria-hidden=true не должно присутствовать на теле документа" }, "aria-level": { "pass": "Значения aria-level допустимы", "incomplete": "Значения aria-level больше 6 не поддерживаются всеми комбинациями экранных считывателей и браузеров" }, "aria-prohibited-attr": { "pass": "ARIA атрибут допустим", "fail": { "hasRolePlural": "Атрибуты ${data.prohibited} не могут использоваться с ролью \"${data.role}\".", "hasRoleSingular": "Атрибут ${data.prohibited} не может использоваться с ролью \"${data.role}\".", "noRolePlural": "Атрибуты ${data.prohibited} не могут использоваться на ${data.nodeName} без допустимого атрибута role.", "noRoleSingular": "Атрибут ${data.prohibited} не может использоваться на ${data.nodeName} без допустимого атрибута role." }, "incomplete": { "hasRoleSingular": "Атрибут ${data.prohibited} не поддерживается с ролью \"${data.role}\".", "hasRolePlural": "Атрибуты ${data.prohibited} не поддерживаются с ролью \"${data.role}\".", "noRoleSingular": "Атрибут ${data.prohibited} не поддерживается на ${data.nodeName} без допустимого атрибута role.", "noRolePlural": "Атрибуты ${data.prohibited} не поддерживаются на ${data.nodeName} без допустимого атрибута role." } }, "aria-required-attr": { "pass": "Все необходимые ARIA атрибуты присутствуют", "fail": { "singular": "Необходимый ARIA атрибут отсутствует: ${data.values}", "plural": "Необходимые ARIA атрибуты отсутствуют: ${data.values}" } }, "aria-required-children": { "pass": { "default": "Необходимые ARIA дочерние элементы присутствуют", "aria-busy": "Элемент имеет атрибут aria-busy, поэтому разрешено пропускать необходимые дочерние элементы" }, "fail": { "singular": "Необходимая ARIA дочерняя роль отсутствует: ${data.values}", "plural": "Необходимые ARIA дочерние роли отсутствуют: ${data.values}", "unallowed": "Элемент имеет недопустимые дочерние элементы: ${data.values}" }, "incomplete": { "singular": "Ожидается добавление ARIA дочерней роли: ${data.values}", "plural": "Ожидается добавление ARIA дочерних ролей: ${data.values}" } }, "aria-required-parent": { "pass": "Необходимая ARIA родительская роль присутствует", "fail": { "singular": "Необходимая ARIA родительская роль отсутствует: ${data.values}", "plural": "Необходимые ARIA родительские роли отсутствуют: ${data.values}" } }, "aria-roledescription": { "pass": "aria-roledescription используется на поддерживаемой семантической роли", "incomplete": "Проверьте, объявляется ли aria-roledescription поддерживаемыми экранными считывателями", "fail": "Назначьте элементу роль, поддерживающую aria-roledescription" }, "aria-unsupported-attr": { "pass": "ARIA атрибут поддерживается", "fail": "ARIA атрибут не поддерживается в большинстве экранных считывателей и вспомогательных технологий: ${data.values}" }, "aria-valid-attr-value": { "pass": "Значения ARIA атрибутов допустимы", "fail": { "singular": "Недопустимое значение ARIA атрибута: ${data.values}", "plural": "Недопустимые значения ARIA атрибутов: ${data.values}" }, "incomplete": { "noId": "Элемент ID атрибута ARIA не существует на странице: ${data.needsReview}", "noIdShadow": "Элемент ID атрибута ARIA не существует на странице или является потомком другого дерева теневых DOM: ${data.needsReview}", "ariaCurrent": "Значение атрибута ARIA недопустимо и будет трактоваться как \"aria-current=true\": ${data.needsReview}", "idrefs": "Невозможно определить, существует ли элемент ID атрибута ARIA на странице: ${data.needsReview}", "empty": "Значение атрибута ARIA игнорируется, если оно пустое: ${data.needsReview}", "controlsWithinPopup": "Невозможно определить, существует ли ссылка на ID атрибута aria-controls на странице при использовании aria-haspopup: ${data.needsReview}" } }, "aria-valid-attr": { "pass": "Имя ARIA атрибута допустимо", "fail": { "singular": "Недопустимое имя ARIA атрибута: ${data.values}", "plural": "Недопустимые имена ARIA атрибутов: ${data.values}" } }, "braille-label-equivalent": { "pass": "aria-braillelabel используется на элементе с доступным текстом", "fail": "aria-braillelabel используется на элементе без доступного текста", "incomplete": "Не удалось вычислить доступный текст" }, "braille-roledescription-equivalent": { "pass": "aria-brailleroledescription используется на элементе с aria-roledescription", "fail": { "noRoleDescription": "aria-brailleroledescription используется на элементе без aria-roledescription", "emptyRoleDescription": "aria-brailleroledescription используется на элементе с пустым aria-roledescription" } }, "deprecatedrole": { "pass": "ARIA роль не устарела", "fail": "Используемая роль устарела: ${data}" }, "fallbackrole": { "pass": "Используется только одно значение роли", "fail": "Используйте только одно значение роли, так как резервные роли не поддерживаются в старых браузерах", "incomplete": "Используйте только роль 'presentation' или 'none', так как они являются синонимами." }, "has-global-aria-attribute": { "pass": { "singular": "Элемент имеет глобальный ARIA атрибут: ${data.values}", "plural": "Элемент имеет глобальные ARIA атрибуты: ${data.values}" }, "fail": "Элемент не имеет глобального ARIA атрибута" }, "has-widget-role": { "pass": "Элемент имеет роль виджета.", "fail": "Элемент не имеет роли виджета." }, "invalidrole": { "pass": "ARIA роль допустима", "fail": { "singular": "Роль должна быть одной из допустимых ARIA ролей: ${data.values}", "plural": "Роли должны быть одной из допустимых ARIA ролей: ${data.values}" } }, "is-element-focusable": { "pass": "Элемент может быть сфокусирован.", "fail": "Элемент не может быть сфокусирован." }, "no-implicit-explicit-label": { "pass": "Нет несоответствия между <label> и доступным именем", "incomplete": "Проверьте, нужно ли, чтобы <label> был частью имени поля ARIA ${data}" }, "unsupportedrole": { "pass": "ARIA роль поддерживается", "fail": "Используемая роль не поддерживается большинством экранных считывателей и вспомогательных технологий: ${data}" }, "valid-scrollable-semantics": { "pass": "Элемент имеет допустимую семантику для элемента в порядке фокусировки.", "fail": "Элемент имеет недопустимую семантику для элемента в порядке фокусировки." }, "color-contrast-enhanced": { "pass": "Элемент имеет достаточный цветовой контраст ${data.contrastRatio}", "fail": { "default": "Элемент имеет недостаточный цветовой контраст ${data.contrastRatio} (цвет переднего плана: ${data.fgColor}, цвет фона: ${data.bgColor}, размер шрифта: ${data.fontSize}, толщина шрифта: ${data.fontWeight}). Ожидаемый коэффициент контрастности ${data.expectedContrastRatio}", "fgOnShadowColor": "Элемент имеет недостаточный цветовой контраст ${data.contrastRatio} между цветом переднего плана и тенью (цвет переднего плана: ${data.fgColor}, цвет текстовой тени: ${data.shadowColor}, размер шрифта: ${data.fontSize}, толщина шрифта: ${data.fontWeight}). Ожидаемый коэффициент контрастности ${data.expectedContrastRatio}", "shadowOnBgColor": "Элемент имеет недостаточный цветовой контраст ${data.contrastRatio} между цветом тени и фоном (цвет текстовой тени: ${data.shadowColor}, цвет фона: ${data.bgColor}, размер шрифта: ${data.fontSize}, толщина шрифта: ${data.fontWeight}). Ожидаемый коэффициент контрастности ${data.expectedContrastRatio}" }, "incomplete": { "default": "Невозможно определить коэффициент контрастности", "bgImage": "Невозможно определить цвет фона элемента из-за изображения на фоне", "bgGradient": "Невозможно определить цвет фона элемента из-за градиента на фоне", "imgNode": "Невозможно определить цвет фона элемента, так как он содержит изображение", "bgOverlap": "Невозможно определить цвет фона элемента, так как он перекрыт другим элементом", "fgAlpha": "Невозможно определить цвет переднего плана элемента из-за прозрачности альфа-канала", "elmPartiallyObscured": "Невозможно определить цвет фона элемента, так как он частично перекрыт другим элементом", "elmPartiallyObscuring": "Невозможно определить цвет фона элемента, так как он частично перекрывает другие элементы", "outsideViewport": "Невозможно определить цвет фона элемента, так как он находится за пределами видимой области", "equalRatio": "Элемент имеет коэффициент контрастности 1:1 с фоном", "shortTextContent": "Содержимое элемента слишком короткое, чтобы определить, является ли оно текстом", "nonBmp": "Содержимое элемента содержит только не текстовые символы", "pseudoContent": "Невозможно определить цвет фона элемента из-за псевдоэлемента" } }, "color-contrast": { "pass": { "default": "Элемент имеет достаточный цветовой контраст ${data.contrastRatio}", "hidden": "Элемент скрыт" }, "fail": { "default": "Элемент имеет недостаточный цветовой контраст ${data.contrastRatio} (цвет переднего плана: ${data.fgColor}, цвет фона: ${data.bgColor}, размер шрифта: ${data.fontSize}, толщина шрифта: ${data.fontWeight}). Ожидаемый коэффициент контрастности ${data.expectedContrastRatio}", "fgOnShadowColor": "Элемент имеет недостаточный цветовой контраст ${data.contrastRatio} между цветом переднего плана и тенью (цвет переднего плана: ${data.fgColor}, цвет текстовой тени: ${data.shadowColor}, размер шрифта: ${data.fontSize}, толщина шрифта: ${data.fontWeight}). Ожидаемый коэффициент контрастности ${data.expectedContrastRatio}", "shadowOnBgColor": "Элемент имеет недостаточный цветовой контраст ${data.contrastRatio} между цветом тени и фоном (цвет текстовой тени: ${data.shadowColor}, цвет фона: ${data.bgColor}, размер шрифта: ${data.fontSize}, толщина шрифта: ${data.fontWeight}). Ожидаемый коэффициент контрастности ${data.expectedContrastRatio}" }, "incomplete": { "default": "Невозможно определить коэффициент контрастности", "bgImage": "Невозможно определить цвет фона элемента из-за изображения на фоне", "bgGradient": "Невозможно определить цвет фона элемента из-за градиента на фоне", "imgNode": "Невозможно определить цвет фона элемента, так как он содержит изображение", "bgOverlap": "Невозможно определить цвет фона элемента, так как он перекрыт другим элементом", "complexTextShadows": "Невозможно определить контрастность элемента из-за сложных теней текста", "fgAlpha": "Невозможно определить цвет переднего плана элемента из-за прозрачности альфа-канала", "elmPartiallyObscured": "Невозможно определить цвет фона элемента, так как он частично перекрыт другим элементом", "elmPartiallyObscuring": "Невозможно определить цвет фона элемента, так как он частично перекрывает другие элементы", "outsideViewport": "Невозможно определить цвет фона элемента, так как он находится за пределами видимой области", "equalRatio": "Элемент имеет коэффициент контрастности 1:1 с фоном", "shortTextContent": "Содержимое элемента слишком короткое, чтобы определить, является ли оно текстом", "nonBmp": "Содержимое элемента содержит только не текстовые символы", "pseudoContent": "Невозможно определить цвет фона элемента из-за псевдоэлемента" } }, "link-in-text-block-style": { "pass": "Ссылки могут быть выделены среди окружающего текста с помощью визуального стиля", "incomplete": { "default": "Проверьте, нужно ли оформлять ссылку, чтобы отличить её от окружающего текста", "pseudoContent": "Проверьте, достаточно ли псевдо-стиля ссылки, чтобы отличить её от окружающего текста" }, "fail": "Ссылка не имеет стиля (например, подчеркивания), чтобы отличить её от окружающего текста" }, "link-in-text-block": { "pass": "Ссылки можно отличить от окружающего текста каким-либо способом, кроме цвета", "fail": { "fgContrast": "У ссылки недостаточный цветовой контраст ${data.contrastRatio}:1 с окружающим текстом. (Минимальный контраст ${data.requiredContrastRatio}:1, текст ссылки: ${data.nodeColor}, окружающий текст: ${data.parentColor})", "bgContrast": "Фон ссылки имеет недостаточный цветовой контраст ${data.contrastRatio} (Минимальный контраст ${data.requiredContrastRatio}:1, цвет фона ссылки: ${data.nodeBackgroundColor}, цвет фона окружающего текста: ${data.parentBackgroundColor})" }, "incomplete": { "default": "Невозможно определить контрастность переднего плана элемента", "bgContrast": "Невозможно определить контрастность фона элемента", "bgImage": "Невозможно определить контрастность элемента из-за изображения на фоне", "bgGradient": "Невозможно определить контрастность элемента из-за градиента на фоне", "imgNode": "Невозможно определить контрастность элемента, так как он содержит изображение", "bgOverlap": "Невозможно определить контрастность элемента, так как он перекрыт другим элементом" } }, "autocomplete-appropriate": { "pass": "Значение autocomplete подходит для данного элемента", "fail": "Значение autocomplete не подходит для этого типа ввода" }, "autocomplete-valid": { "pass": "Атрибут autocomplete правильно отформатирован", "fail": "Атрибут autocomplete неправильно отформатирован", "incomplete": "Атрибут autocomplete имеет нестандартное значение. Проверьте, можно ли использовать вместо него какое-либо стандартное значение." }, "accesskeys": { "pass": "Значение атрибута accesskey уникально", "fail": "Документ содержит несколько элементов с одинаковым значением accesskey" }, "focusable-content": { "pass": "Элемент содержит фокусируемые элементы", "fail": "Элемент должен содержать фокусируемое содержимое" }, "focusable-disabled": { "pass": "Внутри элемента нет фокусируемых элементов", "incomplete": "Проверьте, немедленно ли индикатор фокуса перемещается на фокусируемые элементы", "fail": "Фокусируемое содержимое должно быть отключено или удалено из DOM" }, "focusable-element": { "pass": "Элемент является фокусируемым", "fail": "Элемент должен быть фокусируемым" }, "focusable-modal-open": { "pass": "Нет фокусируемых элементов при открытии модального окна", "incomplete": "Проверьте, что фокусируемые элементы не являются доступными в текущем состоянии" }, "focusable-no-name": { "pass": "Элемент не находится в таб-ордре или имеет доступный текст", "fail": "Элемент находится в таб-ордре и не имеет доступного текста", "incomplete": "Невозможно определить, есть ли у элемента доступное имя" }, "focusable-not-tabbable": { "pass": "Внутри элемента нет фокусируемых элементов", "incomplete": "Проверьте, немедленно ли индикатор фокуса перемещается на фокусируемые элементы", "fail": "Фокусируемое содержимое должно иметь tabindex=\"-1\" или быть удалено из DOM" }, "frame-focusable-content": { "pass": "Элемент не имеет фокусируемых потомков", "fail": "Элемент имеет фокусируемых потомков", "incomplete": "Невозможно определить, есть ли у элемента потомки" }, "landmark-is-top-level": { "pass": "${data.role} область находится на верхнем уровне.", "fail": "${data.role} область содержится в другой области." }, "no-focusable-content": { "pass": "Элемент не имеет фокусируемых потомков", "fail": { "default": "Элемент имеет фокусируемых потомков", "notHidden": "Использование отрицательного tabindex на элементе внутри интерактивного управления не предотвращает фокусировку элемента вспомогательными технологиями (даже с aria-hidden=\"true\")" }, "incomplete": "Невозможно определить, есть ли у элемента потомки" }, "page-has-heading-one": { "pass": "На странице есть хотя бы один заголовок первого уровня", "fail": "На странице должен быть заголовок первого уровня" }, "page-has-main": { "pass": "В документе есть хотя бы одна основная область", "fail": "В документе нет основной области" }, "page-no-duplicate-banner": { "pass": "В документе нет более одного баннера", "fail": "В документе более одного баннера" }, "page-no-duplicate-contentinfo": { "pass": "В документе нет более одной области contentinfo", "fail": "В документе более одной области contentinfo" }, "page-no-duplicate-main": { "pass": "В документе нет более одной основной области", "fail": "В документе более одной основной области" }, "tabindex": { "pass": "Элемент не имеет tabindex больше 0", "fail": "Элемент имеет tabindex больше 0" }, "alt-space-value": { "pass": "Элемент имеет допустимое значение атрибута alt", "fail": "Элемент имеет атрибут alt, содержащий только пробельный символ, который не игнорируется всеми экранными считывателями" }, "duplicate-img-label": { "pass": "Элемент не дублирует существующий текст в тексте атрибута alt <img>", "fail": "Элемент содержит <img> с текстом атрибута alt, дублирующим существующий текст" }, "explicit-label": { "pass": "Элемент формы имеет явную <label>", "fail": "Элемент формы не имеет явной <label>", "incomplete": "Невозможно определить, имеет ли элемент формы явную <label>" }, "help-same-as-label": { "pass": "Текст помощи (title или aria-describedby) не дублирует текст метки", "fail": "Текст помощи (title или aria-describedby) совпадает с текстом метки" }, "hidden-explicit-label": { "pass": "Элемент формы имеет видимую явную <label>", "fail": "Элемент формы имеет явную <label>, которая скрыта", "incomplete": "Невозможно определить, имеет ли элемент формы явную <label>, которая скрыта" }, "implicit-label": { "pass": "Элемент формы имеет неявную (обернутую) <label>", "fail": "Элемент формы не имеет неявной (обернутой) <label>", "incomplete": "Невозможно определить, имеет ли элемент формы неявную (обернутую) <label>" }, "label-content-name-mismatch": { "pass": "Элемент содержит видимый текст как часть его доступного имени", "fail": "Текст внутри элемента не включен в доступное имя" }, "multiple-label": { "pass": "Поле формы не имеет нескольких элементов label", "incomplete": "Использование нескольких элементов label не поддерживается большинством вспомогательных технологий. Убедитесь, что первый элемент label содержит всю необходимую информацию." }, "title-only": { "pass": "Элемент формы не использует только атрибут title для своей метки", "fail": "Для создания метки элемента формы используется только атрибут title" }, "landmark-is-unique": { "pass": "Ориентиры должны иметь уникальную роль или комбинацию роли/метки/названия (т.е. доступное имя)", "fail": "Ориентир должен иметь уникальный aria-label, aria-labelledby или title, чтобы сделать ориентиры различимыми" }, "has-lang": { "pass": "Элемент <html> имеет атрибут lang", "fail": { "noXHTML": "Атрибут xml:lang недействителен на HTML страницах, используйте атрибут lang.", "noLang": "Элемент <html> не имеет атрибута lang" } }, "valid-lang": { "pass": "Значение атрибута lang включено в список допустимых языков", "fail": "Значение атрибута lang не включено в список допустимых языков" }, "xml-lang-mismatch": { "pass": "Атрибуты lang и xml:lang имеют один и тот же базовый язык", "fail": "Атрибуты lang и xml:lang не имеют один и тот же базовый язык" }, "dlitem": { "pass": "Элемент описания списка имеет родительский элемент <dl>", "fail": "Элемент описания списка не имеет родительского элемента <dl>" }, "listitem": { "pass": "Элемент списка имеет родительский элемент <ul>, <ol> или роль=\"list\"", "fail": { "default": "Элемент списка не имеет родительского элемента <ul>, <ol>", "roleNotValid": "Родительский элемент списка имеет роль, которая не является ролью=\"list\"" } }, "only-dlitems": { "pass": "Элемент dl содержит только допустимые дочерние элементы; <dt>, <dd> или <div> элементы", "fail": "Элемент dl содержит недопустимые дочерние элементы: ${data.values}" }, "only-listitems": { "pass": "Элемент списка содержит только допустимые дочерние элементы <li>", "fail": "Элемент списка содержит недопустимые дочерние элементы: ${data.values}" }, "structured-dlitems": { "pass": "Когда элемент не пустой, он имеет как минимум один элемент <dt> и один элемент <dd>", "fail": "Когда элемент не пустой, он не содержит по крайней мере одного элемента <dt>, за которым следует по крайней мере один элемент <dd>" }, "caption": { "pass": "Мультимедийный элемент имеет дорожку субтитров", "incomplete": "Проверьте, доступны ли субтитры для элемента" }, "frame-tested": { "pass": "Элемент iframe был протестирован с помощью axe-core", "fail": "Не удалось протестировать элемент iframe с помощью axe-core", "incomplete": "Элемент iframe все еще должен быть протестирован с помощью axe-core" }, "no-autoplay-audio": { "pass": "<video> или <audio> не воспроизводит аудио более допустимой продолжительности или имеет механизмы управления", "fail": "<video> или <audio> воспроизводит аудио более допустимой продолжительности и не имеет механизмов управления", "incomplete": "Проверьте, не воспроизводит ли <video> или <audio> аудио более допустимой продолжительности или предоставляет ли механизмы управления" }, "css-orientation-lock": { "pass": "Дисплей работает, блокировка ориентации отсутствует", "fail": "CSS блокировка ориентации применяется и делает дисплей неработоспособным", "incomplete": "Невозможно определить, применяется ли CSS блокировка ориентации" }, "meta-viewport-large": { "pass": "Тег <meta> не предотвращает значительное масштабирование на мобильных устройствах", "fail": "Тег <meta> ограничивает масштабирование на мобильных устройствах" }, "meta-viewport": { "pass": "Тег <meta> не отключает масштабирование на мобильных устройствах", "fail": "${data} на теге <meta> отключает масштабирование на мобильных устройствах" }, "target-offset": { "pass": { "default": "Целевой элемент имеет достаточное пространство от ближайших соседей. Безопасное кликабельное пространство имеет диаметр ${data.closestOffset}px, что не менее ${data.minOffset}px.", "large": "Целевой элемент значительно превышает минимальный размер в ${data.minOffset}px." }, "fail": "Целевой элемент имеет недостаточное пространство до ближайших соседей. Безопасное кликабельное пространство имеет диаметр ${data.closestOffset}px вместо как минимум ${data.minOffset}px.", "incomplete": { "default": "Элемент с отрицательным tabindex имеет недостаточное пространство до ближайших соседей. Безопасное кликабельное пространство имеет диаметр ${data.closestOffset}px вместо как минимум ${data.minOffset}px. Является ли это целевым элементом?", "nonTabbableNeighbor": "Целевой элемент имеет недостаточное пространство до ближайших соседей. Безопасное кликабельное пространство имеет диаметр ${data.closestOffset}px вместо как минимум ${data.minOffset}px. Является ли сосед целевым элементом?", "tooManyRects": "Не удалось определить размер целевого элемента из-за слишком большого количества перекрывающихся элементов" } }, "target-size": { "pass": { "default": "Контрол имеет достаточный размер (${data.width}px на ${data.height}px, должно быть как минимум ${data.minSize}px на ${data.minSize}px)", "obscured": "Контрол игнорируется, так как он полностью скрыт и, следовательно, не кликабелен", "large": "Целевой элемент значительно превышает минимальный размер в ${data.minSize}px." }, "fail": { "default": "Целевой элемент имеет недостаточный размер (${data.width}px на ${data.height}px, должно быть как минимум ${data.minSize}px на ${data.minSize}px)", "partiallyObscured": "Целевой элемент имеет недостаточный размер, так как он частично скрыт (наименьшее пространство ${data.width}px на ${data.height}px, должно быть как миним