Files
HiveGrid-Wireframes/hivegrid-cloud/scripts/e2e-axe-utils.test.ts
T

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);
});
});