Что такое тестирование доступности?
Тестирование доступности — это практика, позволяющая сделать ваши веб-приложения и мобильные приложения доступными как можно большему количеству людей. Это делает приложения доступными для людей с ограниченными возможностями, такими как нарушения зрения, слуха и другие физические или когнитивные нарушения.
Сегодня мы собираемся создать простой проект драматурга с помощью @axe-core/playwright и сохранить результат в виде файла Excel.
- Во-первых, давайте создадим новый проект драматурга, используя настройку по умолчанию.
npm init playwright@latest
2. Установите библиотеки
npm install @axe-core/playwright npm install xlsx
3. Откройте example.spec.ts в каталоге тестов и измените файл, это пример того, что для проверки проверки для google.com сохраните файл.
import { test } from "@playwright/test"; import AxeBuilder from "@axe-core/playwright"; test("example with attachment", async ({ page }, testInfo) => { await page.goto("https://google.com/"); const accessibilityScanResults = await new AxeBuilder({ page }) .analyze(); await testInfo.attach("accessibility-scan-results", { body: JSON.stringify(accessibilityScanResults, null, 2), contentType: "application/json", }); });
4. Запустите тест
npx playwright test --project=chromium
Затем проверьте отчет
npx playwright show-report
Тест пройден и мы можем увидеть информацию в формате JSON в разделе вложений
5. Например, если мы хотим проанализировать только часть страницы, следующий код будет проверять только элементы ввода.
const accessibilityScanResults = await new AxeBuilder({ page }) .include("input") .analyze();
Вы также можете исключить элементы ввода
const accessibilityScanResults = await new AxeBuilder({ page }) .exclude("input") .analyze();
6. Если мы хотим проверить валидацию только с использованием WCAG AA в качестве критериев, вы можете использовать .withTags().
const accessibilityScanResults = await new AxeBuilder({ page }) .withTags("wcag2a") .analyze();
7. Теперь можно попробовать преобразовать результат из формата JSON в файл excel.
Примечание: код предназначен для демонстрационных целей, вы не должны помещать функции и тесты в один и тот же файл.
import { test } from "@playwright/test"; import AxeBuilder from "@axe-core/playwright"; const XLSX = require("xlsx"); test("example with attachment", async ({ page }, testInfo) => { await page.goto("https://google.com/"); const accessibilityScanResults = await new AxeBuilder({ page }).analyze(); await testInfo.attach("accessibility-scan-results", { body: JSON.stringify(accessibilityScanResults, null, 2), contentType: "application/json", }); await exportWS(processData(accessibilityScanResults.violations)); }); const processData = (result) => [...result].map((element) => { element.tags = element.tags.join(); element.nodes = element.nodes[0].html; return element; }); const exportWS = (content) => { var myFile = "myFile.xlsx"; var myWorkSheet = XLSX.utils.json_to_sheet(content); var myWorkBook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "myWorkSheet"); XLSX.writeFile(myWorkBook, myFile); };
Здесь я создал 2 функции для этой цели. Поскольку «xlsx» не поддерживает преобразование массива в ячейку Excel, нам необходимо обработать данные перед преобразованием.
Он создаст файл с именем myFile.xlsx, поэтому мы обнаружили 2 нарушения на этой странице, и мы можем проверить helpUrl для более подробной информации.
Более подробную информацию можно найти на официальном сайте драматурга.
Спасибо за прочтение!