Accessibility Snapshots в Playwright — это механизм, позволяющий захватывать доступность элементов на странице, генерируя снимки, которые можно использовать для тестирования и анализа доступности веб-страниц. Снимки доступности помогают выявить потенциальные проблемы с доступностью для пользователей, которые полагаются на вспомогательные технологии, такие как экранные читалки.
Playwright предоставляет API для получения снимков доступности с
помощью метода page.accessibility.snapshot(). Этот метод
позволяет получить описание структуры доступности страницы в виде
объекта JSON, который содержит информацию о различных элементах на
странице, их роли, состояниях и отношениях между ними. Это особенно
полезно для автоматизированного тестирования, когда нужно проверить, как
элементы страницы воспринимаются системой доступности.
Метод page.accessibility.snapshot() создает снимок
доступности текущего состояния страницы или конкретного элемента. Снимок
включает в себя:
accessibility.snapshot()Чтобы получить снимок доступности с использованием Playwright,
необходимо использовать метод snapshot() объекта
page, передавая ему параметры, которые могут включать
указание конкретного элемента, для которого будет сделан снимок.
Пример использования:
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const snapshot = await page.accessibility.snapshot();
console.log(snapshot);
await browser.close();
})();
В этом примере создается браузер, открывается страница, и затем выполняется захват снимка доступности для всей страницы. Снимок будет представлен в виде объекта, который можно анализировать и использовать для проверки соответствия стандартам доступности.
snapshot()Метод snapshot() поддерживает несколько параметров,
которые позволяют настроить захват снимка в зависимости от нужд
тестирования.
true, снимок будет включать только те элементы, которые
могут быть интересны с точки зрения доступности (например, элементы с
текстовыми альтернативами или фокусируемые элементы).Пример с параметрами:
const snapshot = await page.accessibility.snapshot({
root: await page.$('main'), // Снимок только для элемента <main>
interestingOnly: true // Включать только важные элементы
});
console.log(snapshot);
Снимок доступности, возвращаемый методом snapshot(),
представляет собой объект, который содержит ключевые данные о
доступности элементов на странице. Вот основные части, которые могут
присутствовать в этом объекте:
button, для поля ввода — textbox.Пример структуры снимка:
{
"role": "button",
"name": "Submit",
"value": "Submit Form",
"focused": false,
"childIds": [],
"selected": false,
"description": "Click to submit the form"
}
Accessibility Snapshots используются для создания автоматизированных тестов доступности. Это позволяет тестировать, насколько корректно элементы на странице взаимодействуют с вспомогательными технологиями, такими как экранные читалки, и соответствуют ли они стандартам доступности (например, WCAG).
Пример автоматизированного теста доступности с использованием снимков:
const { chromium } = require('playwright');
const assert = require('assert');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const snapshot = await page.accessibility.snapshot();
const button = snapshot.find(element => element.role === 'button' && element.name === 'Submit');
assert.ok(button, 'Submit button is accessible');
assert.strictEqual(button.focused, false, 'Submit button should not be focused initially');
assert.strictEqual(button.selected, false, 'Submit button should not be selected');
await browser.close();
})();
В данном примере создается тест, который проверяет доступность кнопки с именем “Submit”. Мы проверяем, что кнопка доступна, не имеет фокуса и не выбрана.
Использование снимков доступности в тестах помогает выявить скрытые проблемы на ранних этапах разработки. Это особенно важно в условиях современного веба, где доступность является неотъемлемой частью качественного пользовательского опыта. Вместо того чтобы полагаться исключительно на ручные проверки, автоматизация с помощью снимков доступности позволяет интегрировать тесты доступности в процесс CI/CD, что способствует повышению качества и инклюзивности веб-приложений.
Кроме того, с помощью снимков доступности можно эффективно тестировать страницы на соответствие рекомендациям WCAG, выявлять элементы, которые могут быть не распознаны вспомогательными технологиями, и устранять проблемы, влияющие на пользователей с ограниченными возможностями.