Назад к блогу
Начало работы

Тестирование доступности браузерной автоматизации

Создавайте тесты автоматизации для клавиатуры, семантических имён, фокуса, объявлений и ошибок.

Документация

Нужна структурированная документация по теме Начало работы?

Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.

Тест доступности браузерной автоматизации проходит от настройки фикстуры через клавиатурные и вспомогательные проверки к ограниченным свидетельствам

Тестирование доступности браузера наиболее полезно, когда он снова тот же самый путь, который должен выбрать баланс: найти элемент управления, добраться до него без указателя, понять его имя и состояние, выбрать проблему и исправить ошибку. Автоматизированный запуск не может обеспечить все аспекты доступности, но он может защитить повторяющиеся контракты, которые в противном случае легко регрессируют. Практическая цель , небольшой, наблюдательный тест, объясняющий, что было доказано, а что еще необходимо человеку.

продолжить с авторизованной синтетической страницы или тестовой учетной записи. Браузер может наблюдать отображаемую семантику, движение фокуса, поведение клавиш и видимый статус. Он не может установить, что внешний человек с помощью дополнительного вспомогательного устройства будет воспринимать каждое взаимодействие, а также не может подтвердить, что служба сработала удаленную мутацию. Сохраните заявление о том, что эта граница не соответствует заявлению о полном соответствии. Руководство по обеспечению доступности веб-контента содержит критерии успеха; спецификация ARIA сердечное движение, состояние и свойства.

Тестирование доступности также включает состояние, при котором все клиенты встречаются чаще всего: возвращающийся пользователь должен, узкая область просмотра, измененный язык, заблокированное разрешение и ответ сети, который приходит с опозданием. Для каждого определения состояния предполагаемый фокус, имя, состояние и действие по восстановлению. Это позволяет тесту соответствовать обещаниям продукта, оставлять место для ручной проверки речи, увеличения и когнитивной нагрузки.

Прогон доступности является наиболее эффективным, когда его действие в отношении сторон видится до его запуска. Назовите маршрут, синтетические данные, просмотр области, ввод режима, ожидаемый ориентир и очистку владельца. Решите, чтобы запустить компоненты проверки, полную версию или проверку совместимости. Это приводит к тому, что представители узких членов Палаты обращаются к аудиту всего продукта и дают рецензентамкую причину для добавления ручных анализов.

Превратим требование доступности в наблюдаемый контракт

Напишите результат пользователя перед локатором панели. «Пользователь клавиатуры может открыть фильтры, выбрать значение и понять, что список изменился» , это контракт. «Нажмите кнопку фильтра и подождите две секунды» , это деталь реализации. Полезный тест определяет начальное состояние, последовательность действий, ожидаемый фокус владельца, видимый или объявленный результат, а также ограниченные доказательства, сохраняемые в случае неудачного этапа.

Отделите наблюдение браузера от результатов приложений. Кнопка может указывать доступное имя, в то время как ее запрос к серверу будет отклонен. Область состояния может получать текст, в то время как чтение на экране отображает его позже или вообще не отображает. Подтвердите факты со стороны браузера, а затем отдельно подайте заявление о возникновении видимого результата. Такое разделение позволяет владельцу страницы исправлять семантику, не подразумевая, что тест проверял данные частного сервиса.

Предпочитайте одну книгу за тест. Тестовый вход не должен также проверять параметры внешнего окна и экспортных потоков, поскольку ошибка фокуса на первом этапе может привести к закрытию всех контрактов. Дайте каждому путишествию синтетические входные данные владельца, и путь очистки. Результат должен быть кратким: метка сценария, версия браузера и платформы, имя неудачного контракта, а также разрешенный снимок экрана или ссылка на трассировку. Никогда не сериализуйте токены, полный текст страницы или приватный сеанс только потому, что это может сделать водитель.

Проверяйте имена, роли и состояния без переобучения

Доступные локаторы определяют, что может определить человек. Роль с доступным именем, метка, связанная с формой управления, или тест на стабильный идентификатор может быть выполнен читабельным. Сгенерированный класс или глубокий путь CSS мало что говорят о выделении и незначительном ломании во время безобидной работы с макетом. Если элемент управления намеренно не имеет видимого текста, задокументируйте его доступное имя и протестируйте его как часть компонента контракта.

Имена и описания не являются взаимозаменяемыми. В диалоге необходимо имя, которое идентифицирует его цель; описание может добавить контекст. Обязательное поле должно отображать свое обязательное состояние, а недопустимое поле должно отображать ошибочные отношения, указывающие на вредный текст. Протестируйте изменения перехода, а не только начальную разметку. Форма может отображать aria-invalid="true", включающую старое сообщение о необходимости в DOM, которое является запутанным результатом как для автоматизации, так и для вспомогательных технологий.

Избегайте использования случайных атрибутов ARIA, если встроенный HTML уже обеспечивает такое поведение. Собственная кнопка, метка, заголовок, список и ссылка имеют четко различимую семантику и поведение кнопок. ARIA может описывать пользовательский виджет, но владелец виджета должен реализовать его модель взаимодействия. Автоматическая проверка, которая видит только role="button", не может потребовать, чтобы пробел и ввод активировали ее, что фокус становится видимым или что отключенное состояние вызывает случайную активацию.

Упражнение фокусировки клавиатуры как основной путь

Включение кнопок должно соответствовать задаче, а не случайной последовательности нажатий клавиши перехода. Сконцентрируйтесь на точках зрения, перемещайтесь по значимым элементам управления, активируйте действие и записывайте, куда перейдет фокус дальше. Модальное окно должно управлять фокусом на своих критериях, не пропуская его утечки при открытии и возвращая фокусы на разумный триггер при закрытии. Ссылка пропускает стадию, наблюдаемую при осмотре и переходе к намеченному ориентиру.

Проверьте наличие видимого индикатора, не требуя точного цвета или значения пикселя. Контракт заключается в том, что пользователь может определить сфокусированный элемент управления по утвержденной теме. Снимок экрана может служить подтверждением обзора, но он не является универсальным доказательством контрастности между видеокартами. Используйте CSS и условия в вычислительном стиле только для свойств, встроенных компонентов, внешнего визуального изменения, ощущающих взгляд человека, включая звуковую контрастность и масштабирование.

Проверьте альтернативные клавиатуры для наблюдения виджетов. Меню, поле со списком, список таблиц, дерево или ближайшее окно документа имеют набор клавиш и изменение состояния. Проверьте соответствующие клавиши, выбранное или активированное состояние и этот фокус-фокус. Включите Escape или документированный путь оставьте. Не нажимайте произвольные клавиши, пока что-то не изменится; это составляет определенный контракт на зонд и может затруднить отказ в классификации.

Тестовые ключи также должны закрывать заблокированный проход. Если обязательно поле пусто, отредактируйте сообщение с помощью клавиатуры и убедитесь, что ошибка видна, связана с полем и доступна в логическом порядке. Если в боковом окне отображается разрешение, убедитесь, что страница обеспечивает пригодную альтернативу. Тест, охватывающий только счастливый путь, может оставить пользователей в затруднительном положении именно там, где приложению объяснения необходимой проблемы.

Проверка объявлений и динамического контента

Динамическим интерфейсам нужна стратегия объявления. Вежливое статусное сообщение может использовать действующий регион; срочное прерывание может нарушить другую политику. Тест может утверждать, что регион существует, имеет заданную роль или вежливость и получает ожидаемый короткий текст после действия. Не следует утверждать, что необходимо использовать программу чтения с экрана, уменьшить речь или включить систему управления таким же сообщением.

Обеспечьте стабильность заявленных активных областей. Дождитесь изменений названного состояния, а затем один раз прочитайте доступный текст региона. Не проводите опрос путем многократного запуска действий и не принимайте непустую формулу как успешную. Если приложение намерено обновлять один и тот же регион несколько раз, укажите последнее сообщение, касающееся пользователя, и запишите переход, который приводит к нему. Тайм-аут должен следить за отсутствующими объявлениями, а не просто сообщать о том, что страница работает медленно.

Состояния загрузки и ошибки имеют одинаковое соотношение. Спиннер сам по себе не может объяснить прогресс невизуальному пользователю, отключенная кнопка без причины может выглядеть как сломанный элемент управления. Проверьте взаимосвязь между состоянием состояния, текстом состояния и конечным состоянием. В случае сбоя запроса убедитесь, что ошибка объявлена ​​или размещена там, где пользователь сталкивается с ней, и что повторная попытка или альтернативные действия доступны с помощью кнопок.

Не включайте автоматизацию вентиляции помещений с несвязанными сайтами или сеансами для отдельных пользователей. В контролируемом монтаже фиксация доступности может облегчить проверку компонентов до и после изменений. Сохраняйте только те узлы, которые необходимы для объяснения условий, редактирования пользовательского контента и применения той же политики хранения, что и экран, и трассировка. Снимок является свидетельством одного наблюдения браузера, а не регистрации человека или универсального показателя доступности.

Включите приспособления и параллельные прогоны

Доступность устройства зависит не только от контекста браузера. Это обеспечивает исходное окно просмотра, настройки масштабирования или размера текста, настройки ограниченного движения, если это необходимо, языковым стандартом, синтетической учетной записью и каталогом документов. Укажите, какие значения являются фиксированными для сценария, а какие изменения происходят в отдельной матрице. Работник никогда не должен направлять состояние фокуса, хранилище, путь загрузки или имя файла, снимать экран другого работника.

Используйте чистый контекст для каждого независимого путешествия, когда файлы cookie, разрешения или сохраненные настройки влияют на результат. Контекст изолирует состояние, управляемое браузером, но он не является изолированной программной системой подключения и не записывает сервер. Если приложение сохраняет настройки удаленно, узнайте у владельца приложения прикладную кнопку сброса. Устройство может сообщить о том, что браузер наблюдал до и после этой операции.

Параллельные работники должны использовать синтетические записи и получение доходов от частных выплат. Если два исполнителя изменяют одну запись, то в чистом контексте не получится предотвратить гонку службы. Отдайте предпочтение независимым записям или сериализуйте конкретную мутацию. Повторная попытка , это новая попытка: закрыть старый контекст, когда его состояние определено, создать новый контекст и сообщить, что первое действие, возможно, достигло приложения. Никогда не скрывайте возможную дублирующую отправку для длительного ожидания.

Исключите случай непреднамеренного отказа в наборе креплений. Укажите из ориентира, задержите обновление запроса или верните задокументированную проверку ошибок с синтетической страницей. Ожидаемый результат , ограниченная ошибка при заключении имени отсутствующего контракта с оформлением детерминированной очистки. При этом впоследствии тестируется оборудование, непроизводственная служба, и, следовательно, обеспечивается доказательство доступности, пропорциональных задаваемых вопросов.

Separate tool support from conformance claims

Драматург и Selenium могут управлять вводами с клавиатуры, проверять доступные имена и вызывать появление видимого или семантического состояния. Их API различаются, поддержка функций браузера и специальные функции могут различаться в зависимости от версии. Запишите вместе с структурой текстуры, драйвером, браузером, включенной системой и соответствующими настройками. Прохождение одного кортежа является свидетельством существования этого кортежа; Я не обещаю, что все браузеры и вспомогательные технологии будут вести себя одинаково.

Автоматизированные механизмы могут обнаруживать пропущенные имена, повторяющиеся идентификаторы, риски контрастирования и некоторые структурные проблемы. Используйте их в качестве вспомогательных средств при просмотре, а не вместо функций исследования, масштабирования, перекомпоновки, программ проверки, чтения с экрана или исследований пользователей в области поведения. В отчете о правилах должен быть конкретно указан узел и правило: тест на путешествия должен объяснить, что пользователь может выбрать задачу. Разделите оба инструмента, чтобы предупреждение о правилах не было ошибочно истолковано как неудачный бизнес-результат.

Когда браузер обеспечивает доступность или ожидаемую роль, используйте только стабильные, соответствующие полям пользователя. Форматы моментальных кадров могут меняться в зависимости от версии платформы. Предположение типа «кнопка «Сохранить» обеспечивает «Сохранить профиль» и активируется после ввода», а не побайтовое сравнение дерева. Сохраняйте небольшие отклонения или ссылки на элемент и намеренно просматривайте более серьезные изменения при добавлении семантического компонента.

Спецификации W3C WebDriver определяют границы автоматизации, а WCAG определяет результаты, в которых участвуют люди и контент. Ни в одном из источников не сообщается, что конкретный продукт, профиль или драйвер автоматизации могут обеспечить соответствие. Сформулируйте свой отчет соответствующим образом: перечислите проверенные пути, среду, наблюдательные процедуры и все необходимые ручные проверки.

Возможности и ограничения BotBrowser

BotBrowser поддерживает изолированные контексты браузера с отдельными cookie, хранилищем и состоянием сеанса, что помогает команде повторять авторизованные пути обеспечения доступности известных отправных точек на стороне браузера. BotBrowser не заменяет условия доступности Playwright или Selenium, политику чтения с экрана или клавиатуры, семантику приложений, проверку WCAG или очистку на стороне сервера. Он не может гарантировать, что целевое приложение обеспечивает правильное доступное имя, что вспомогательная технология передает обновление живого региона или что удаленный сеанс и запись становятся недействительными. BotBrowser не гарантирует соответствие WCAG или работу каждой вспомогательной технологии. Владелец устройства по-прежнему выбирает платформу, создает и закрывает контексты, управляет синтетическими данными и получает доказательства от браузера владельца приложения.

Сохраняйте возможности и вместе с ограничениями в отчетах. Запишите контекстную цель, версию браузера, назначенные пожелания, контракт на встречу, наблюдение и результаты ручных просмотров. Не описывайте изолированный профиль как доказательство доступности или способ обойти элементы управления приложением. Чистое локальное состояние, делающее тест повторяемым; это не меняет ответственности за страницы, службы или вспомогательные технологии.

Просмотр ошибок и поддержка набора тестов

Классифицируйте сбой перед изменением локатора или тайм-аута. Отсутствие доступного имени является дефектом компонента. Ловушка фокуса, которая никогда не освобождается, может быть дефектом жизненного цикла виджета. Отсутствие объявления может быть связано с состоянием страницы или проблемой использования вспомогательных технологий. Отключение драйвера является свидетельством неисправности. Отказ сервера представляет собой предложение. Браузерный тест должен сохранить первый отсутствующий контракт и направить следующее действие владельцу, который сможет его изменить.

Просмотрите отрицательные пути после каждого изменения компонента. Протестируйте пустую форму, отклоненное значение, отказ в разрешении, медленный ответ, закрытый диалог и прерванную навигацию, где эти состояния являются частью пути. Убедитесь, что эта ошибка имеет понятное объяснение и доступное следующее действие. Сохраняйте одни и те же доказательства границ для выгодного и неудачного совершения, чтобы в случае внезапного сбоя не было собрано больше конфиденциальной информации на странице.

Прежде чем слиянием запустите проверку батарей на чистоту, обработайте их с учетом особенностей страны, если это применимо, и один раз принудительный сбой при демонтаже. Убедитесь, что фокус возвращается к намеренному владельцу, что включает принципы от конкретного работника и что очистка запускается после ошибок и настроек. Проверьте поддержку браузера и платформы на платформе. Стабильный тест , это не тот, который никогда не дает сбоев; то, что чей сбой идентифицирует контракт, ориентированный на пользователя, и не оставляет состояние, можно было бы исказить следующий запуск.

Автоматизация доступности лучше всего работает, как и многовая практика: семантические локаторы защищают компоненты результатов, с помощью кнопок защищают завершение задач, ошибочные оповещения и состояние защищают общение, проверяют уровни действий человека, которые код не может смоделировать. Сохраняйте каждый явный, ограниченный и честный уровень в отношении того, что он наблюдает. Эта дисциплина дает командам разработчиков полезные доказательства регрессии, не превращая возможности браузера в неподдерживаемую надежность соответствия.

Проверка доступности становится все более легкой поддержкой, когда в результате каждого путешествия, окружающей среды, владельца и остается неопределенность. Проведите краткую историю протестированного браузера и платформы, отметьте, охватите масштаб наблюдения за человеческим телом или программу чтения с экрана, и вернитесь к контракту при сохранении компонента. Эта запись помогает клиентам сопоставить выпуски, определить приоритеты исправлений и рассмотреть вопрос об одном автоматическом процессе как о универсальных обещаниях.

Sources

См. также жизненный цикл BrowserContext и проверку взаимодействия браузера.

BotBrowser обеспечивает изолированные BrowserContexts для повторяющихся разрешённых событий с обнаружением файлов cookie и хранилищ. Он не заменяет проверки Playwright или Selenium, аудит WCAG, работу программы чтения с экрана и очистку сервера.

#Browser Automation#Accessibility Testing#Keyboard Testing#Playwright#Selenium

Переведите BotBrowser из исследований в продакшн

Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.