Skip to content

Accessibility evidence

Policy 5.0.0 adds an accessibility domain to the project assessment. The default requires at least one nonempty axe-core Playwright scan in both chromium-desktop and android-chrome. Each scan must use wcag2a, wcag2aa, wcag21a and wcag21aa, and report axe version, route path, checked-rule count, violations and inconclusive checks. A measured violation is fail. Missing scans, zero checks, malformed output or inconclusive checks are incomplete.

Install @axe-core/playwright in each tested app or its workspace and commit the lockfile. Add an axe scan to a rendered-page Playwright test. The sample apps contain a complete example; the essential pattern is:

import AxeBuilder from "@axe-core/playwright";
import { expect, test } from "@playwright/test";
test("home page accessibility", async ({ page }) => {
await page.goto("/");
const tags = ["wcag2a", "wcag2aa", "wcag21a", "wcag21aa"];
const result = await new AxeBuilder({ page }).withTags(tags).analyze();
test.info().annotations.push({ type: "lattice-axe", description: JSON.stringify({
route: new URL(page.url()).pathname,
axeVersion: result.testEngine.version,
tags,
checks: result.passes.length + result.violations.length + result.incomplete.length,
needsReview: result.incomplete.length,
violations: result.violations.flatMap(rule => rule.nodes.map(node => ({
id: rule.id, impact: rule.impact ?? "critical",
selector: node.target[0] ?? "unknown", help: rule.help,
}))),
}) });
expect(result.violations).toEqual([]);
});

Use the two project names in your Playwright config and let lattice governance run execute the tests. The collector reads lattice-axe annotations from the Playwright JSON reporter; it does not crawl routes on its own. It keeps only a route path, rule and selector in normalized evidence, avoiding full URLs and page content. The HTML and JSON report show scanned routes, findings, and missing projects.

A pass means the configured automatic checks found no violations on the routes and contexts actually tested. It does not prove full WCAG conformance. Playwright’s guidance notes that automation cannot detect all accessibility problems; keyboard interaction, focus order, screen reader behavior, language and content meaning still need human review. Android Chrome here is browser emulation, not a physical device. Test authors can omit routes or forge annotations, so protect CI and review test changes.

This is NKLattice’s product baseline using WCAG 2.1 A/AA tagged axe rules. Vietnam’s Circular 26/2020/TT-BTTTT has its own scope and references. The report is technical evidence, not a legal determination for your website.