-
Notifications
You must be signed in to change notification settings - Fork 5
/
axe-test.js
55 lines (39 loc) · 1.73 KB
/
axe-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const { AxePuppeteer } = require('@axe-core/puppeteer');
const puppeteer = require('puppeteer');
// テスト結果を日本語で出力するように設定する。
const AXE_LOCALE_JA = require('axe-core/locales/ja.json');
const config = {
locale: AXE_LOCALE_JA
}
// テスト結果の出力に、axe-reports を使用するように設定する。
const AxeReports = require('axe-reports');
// テスト対象の URL を、外部テキストファイルから読み込んで、配列に整形する。
const fs = require('fs');
let urls_list = fs.readFileSync("./urls.txt", "utf-8");
urls_list = urls_list.replace(/\r?\n/g, ',');
urls_list = urls_list.split(',');
(async () => {
const urls = urls_list
// axe-reports で、見出し行をまずは作成する。
AxeReports.createCsvReportHeaderRow();
const browser = await puppeteer.launch();
for (let i = 0; i < urls.length; i++) {
const url = urls[i];
const page = await browser.newPage();
await page.setBypassCSP(true);
// デバイスのエミュレートをする場合は、下記を適用する。
// await page.emulate(puppeteer.devices['iPhone 8']);
// ページを読み込む。
await Promise.all([
page.setDefaultNavigationTimeout(0),
page.waitForNavigation({waitUntil: ['load', 'networkidle2']}),
page.goto(`${url}`)
]);
// テストを実行する。withTags で、テスト基準をいろいろ設定できる。
const results = await new AxePuppeteer(page).configure(config).withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22aa', 'best-practice']).analyze();
// axe-reports で、検証結果の行を追加する。
AxeReports.createCsvReportRow(results);
await page.close();
}
await browser.close();
})();