33 lines
1.6 KiB
TypeScript
33 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { isBlockingAxeImpact, summarizeAxeViolations } from "../tests/e2e/utils/axe";
|
|
|
|
describe("summarizeAxeViolations", () => {
|
|
it("deduplicates repeated advisory violations while preserving node counts", () => {
|
|
const summary = summarizeAxeViolations([
|
|
{ id: "color-contrast", impact: "moderate", help: "Elements must meet contrast", nodes: [{}, {}] },
|
|
{ id: "color-contrast", impact: "moderate", help: "Elements must meet contrast", nodes: [{}] },
|
|
{ id: "image-alt", impact: "minor", help: "Images must have alternate text", nodes: [{}] },
|
|
]);
|
|
|
|
expect(summary).toEqual([
|
|
{ id: "color-contrast", impact: "moderate", help: "Elements must meet contrast", nodes: 3 },
|
|
{ id: "image-alt", impact: "minor", help: "Images must have alternate text", nodes: 1 },
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe("isBlockingAxeImpact", () => {
|
|
it("blocks critical and serious violations by default", () => {
|
|
expect(isBlockingAxeImpact("critical", {} as NodeJS.ProcessEnv)).toBe(true);
|
|
expect(isBlockingAxeImpact("serious", {} as NodeJS.ProcessEnv)).toBe(true);
|
|
expect(isBlockingAxeImpact("moderate", {} as NodeJS.ProcessEnv)).toBe(false);
|
|
expect(isBlockingAxeImpact("minor", {} as NodeJS.ProcessEnv)).toBe(false);
|
|
});
|
|
|
|
it("also blocks moderate violations in strict readiness mode", () => {
|
|
expect(isBlockingAxeImpact("moderate", { E2E_A11Y_STRICT: "1" } as NodeJS.ProcessEnv)).toBe(true);
|
|
expect(isBlockingAxeImpact("minor", { E2E_A11Y_STRICT: "1" } as NodeJS.ProcessEnv)).toBe(false);
|
|
});
|
|
});
|