Skip to content

Commit d05e148

Browse files
Merge pull request #399 from JLG-WOCFR-DEV/codex/review-code-and-accessibility-compliance-wfj27g
test: add axe accessibility audit
2 parents 9ba95c9 + 1ba7144 commit d05e148

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

package-lock.json

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"test:all": "npm run test && npm run test:e2e"
99
},
1010
"devDependencies": {
11+
"@axe-core/playwright": "^4.10.2",
1112
"@babel/core": "^7.24.0",
1213
"@playwright/test": "^1.56.0",
1314
"@wordpress/jest-preset-default": "^12.31.0",
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { expect, test } from '@playwright/test';
2+
import AxeBuilder from '@axe-core/playwright';
3+
4+
const baseURL = process.env.WP_E2E_BASE_URL;
5+
const username = process.env.WP_E2E_USERNAME;
6+
const password = process.env.WP_E2E_PASSWORD;
7+
8+
const shouldSkip = !baseURL || !username || !password;
9+
10+
const SERIOUS_IMPACTS = new Set(['serious', 'critical']);
11+
12+
test.describe('Accessibilité des réglages Liens Morts Detector', () => {
13+
test.skip(shouldSkip, 'Les variables WP_E2E_* doivent être définies pour exécuter les tests d\'accessibilité.');
14+
15+
test('ne présente pas de violations d\'impact sérieux ou critique sur la page des réglages', async ({ page }) => {
16+
await page.goto('/wp-admin/admin.php?page=blc-settings', { waitUntil: 'domcontentloaded' });
17+
18+
if (page.url().includes('wp-login.php')) {
19+
await page.fill('input#user_login', username!);
20+
await page.fill('input#user_pass', password!);
21+
await Promise.all([
22+
page.waitForURL(/\/wp-admin\//, { timeout: 60_000 }),
23+
page.click('input#wp-submit'),
24+
]);
25+
26+
await page.goto('/wp-admin/admin.php?page=blc-settings', { waitUntil: 'domcontentloaded' });
27+
}
28+
29+
const settingsForm = page.locator('.blc-settings-form');
30+
await expect(settingsForm, 'Le formulaire de réglages doit être visible avant l\'audit axe.').toBeVisible();
31+
32+
const helpButton = settingsForm.locator('.blc-field-help').first();
33+
if (await helpButton.count()) {
34+
await helpButton.click();
35+
}
36+
37+
const axe = new AxeBuilder({ page })
38+
.include('.blc-settings-form')
39+
.withTags(['wcag2a', 'wcag2aa', 'section508']);
40+
41+
const results = await axe.analyze();
42+
43+
const seriousViolations = results.violations.filter((violation) =>
44+
violation.impact ? SERIOUS_IMPACTS.has(violation.impact) : false
45+
);
46+
47+
expect(seriousViolations, 'La page des réglages ne doit pas comporter de violations critiques détectées par axe-core.').toEqual([]);
48+
});
49+
});

0 commit comments

Comments
 (0)