test(e2e): add axe-core accessibility fixture and smoke spec

Adds @axe-core/playwright with a shared fixture providing an `axe`
helper. New a11y.spec.ts runs WCAG 2.1 AA checks on signin, dashboard,
timeline, allocations, resources, and projects pages. Currently reports
violations as warnings — upgrade to hard failures after fixes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-11 07:20:10 +02:00
parent c794e82464
commit d8aac21e2d
4 changed files with 101 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
import { test as base, expect } from "@playwright/test";
import AxeBuilder from "@axe-core/playwright";
/**
* Shared Playwright fixture that adds an `axe` helper to every test.
* Usage:
* import { test, expect } from "./a11y-fixture.js";
* test("page is accessible", async ({ axe }) => {
* const results = await axe.analyze();
* expect(results.violations).toEqual([]);
* });
*/
export const test = base.extend<{ axe: AxeBuilder }>({
axe: async ({ page }, use) => {
const builder = new AxeBuilder({ page })
// Exclude known third-party widgets that we cannot control
.exclude("#__next-build-indicator")
// Only check WCAG 2.1 AA — the standard most teams target
.withTags(["wcag2a", "wcag21a", "wcag2aa", "wcag21aa"]);
await use(builder);
},
});
export { expect };