docfast/src/__tests__/modal-accessibility.test.ts

24 lines
912 B
TypeScript

import { describe, it, expect } from "vitest";
import fs from "fs";
import path from "path";
const indexHtml = fs.readFileSync(path.join(__dirname, "../../public/src/index.html"), "utf-8");
describe("Modal accessibility attributes", () => {
it("close buttons must have aria-label='Close'", () => {
// All close buttons in modals should have aria-label="Close"
const closeButtons = indexHtml.match(/<button[^>]*class="close"[^>]*>/g) || [];
expect(closeButtons.length).toBeGreaterThan(0);
for (const btn of closeButtons) {
expect(btn).toContain('aria-label="Close"');
}
});
it("modal overlays with role='dialog' must have aria-modal='true'", () => {
const dialogs = indexHtml.match(/<div[^>]*role="dialog"[^>]*>/g) || [];
expect(dialogs.length).toBeGreaterThan(0);
for (const dialog of dialogs) {
expect(dialog).toContain('aria-modal="true"');
}
});
});