import { expect, test } from "bun:test"; import { analyzeHtml } from "../modules/analysis/index.ts"; import { App } from "../core/app.ts"; import { terserIntegration, htmlMinifyIntegration, imageOptimizationIntegration, } from "../integrations/optimize.ts"; test("accessibility scoring reports semantics, alpha contrast and visual-effect uncertainty", async () => { const html = '
Low contrast
Filtered text
';
const [report] = await analyzeHtml(html, "accessible", {
viewports: [{ width: 390, height: 844 }],
});
expect(report!.findings.map((finding) => finding.rule)).toContain(
"control-name",
);
expect(report!.findings.map((finding) => finding.rule)).toContain(
"text-contrast",
);
expect(report!.findings.map((finding) => finding.rule)).toContain(
"visibility-effects",
);
expect(report!.score).toBeLessThan(100);
expect(
report!.findings.find((finding) => finding.rule === "visibility-effects")!
.severity,
).toBe("review");
});
test("overflow analysis distinguishes intentional scrolling and clipped content", async () => {
const html =
'Text
", }); expect(String(html.content)).not.toContain(" "); const image = await app.transformAsset({ path: "image.png", contentType: "image/png", content: new Uint8Array([0, 255, 128]), }); expect(bytes).toEqual([0, 255, 128]); expect([...(image.content as Uint8Array)]).toEqual([9, 8]); });