WCAG 2.1 AA Accessibility Audit
System: MSF AI Training Bot (AITB) · ITQ: CDVHQ0ETQ26000013 (para 6.3 — accessibility)
Supplier: Tiny Codes Software Pte Ltd (UEN 202405170H)
Date: 30 June 2026 · Target conformance: WCAG 2.1 Level AA
1. Scope & method
Automated testing with axe-core 4.10.2 (Deque) — the standard accessibility engine, whose rules map directly to WCAG success criteria — run against the live build in Chromium, filtered to the wcag2a, wcag2aa, wcag21a, wcag21aa rule sets. Supplemented by manual code/CSS review for criteria automation cannot decide.
Pages audited: /login, /app (officer voice session), /admin (dashboard), /admin/analytics (data tables), /admin/users (forms).
Automated tooling reliably decides roughly a third to a half of WCAG criteria; the remainder (meaningful alt text, focus order, assistive-technology behaviour) require human/AT review. This report documents the automated layer (clean) plus a manual checklist; the formal conformance sign-off is completed with the screen-reader testing scheduled in Phase 4 (Testing & AI Assurance).
2. Automated results
| Page | Violations (initial) | Violations (after fix) | Checks passed |
|---|---|---|---|
/login |
1 | 0 | 21 |
/app |
1 | 0 | 24 |
/admin |
1 | 0 | 23 |
/admin/analytics |
1 | 0 | 24 |
/admin/users |
1 | 0 | 24 |
Result: 0 automated WCAG 2.1 A/AA violations across all audited pages, 0 "incomplete" items requiring review.
3. Finding & remediation
| # | Criterion | Severity | Finding | Remediation | Status |
|---|---|---|---|---|---|
| 1 | 1.4.4 Resize text (AA) | Critical | The viewport meta set maximum-scale=1, disabling pinch-zoom on mobile — users could not enlarge text to 200%. (Global, all pages.) |
Removed maximumScale/userScalable limits in the root layout; zoom is now unrestricted. |
Fixed & re-verified (0 violations) |
4. Manual review checklist
| WCAG criterion | Status | Notes |
|---|---|---|
| 1.1.1 Non-text content (A) | Pass | image-alt passes; persona portraits have alt text, the audio-reactive orb is decorative canvas. |
| 1.3.1 Info & relationships (A) | Pass | Semantic landmarks, table headers, associated form labels (axe-verified). |
| 1.4.3 Contrast minimum (AA) | Pass | color-contrast passes across the light theme tokens. |
| 1.4.4 Resize text (AA) | Pass | Fixed (see para 3); pinch-zoom to ≥200% now permitted. |
| 1.4.10 Reflow (AA) | Pass (design) | Responsive layout with desktop/tablet (≥768px)/mobile (≥375px) breakpoints per para 6.3; no horizontal scroll at 320px. |
| 2.1.1 Keyboard (A) | Pass (by construction) | All non-conversational controls are native button/input/select/a and keyboard-operable; speech is the conversational input by design (para 6.3), with captions as read-only AT support. |
| 2.4.7 Focus visible (AA) | Pass | Global :focus-visible outline (2px, --accent-strong). |
| 4.1.2 Name, role, value (A) | Pass | button-name, label, ARIA checks pass. |
| 4.1.3 Status messages (AA) | Pass | Live regions added: session status and queue position (role="status"), errors (role="alert"), and the conversation transcript (role="log", aria-live="polite"). |
| Screen readers — NVDA / JAWS / VoiceOver (para 6.3) | Phase 4 | Requires human assistive-technology testing — scheduled in Phase 4 with remediation backlog. |
5. Conformance statement
As of the audit date, the AITB build shows no automated WCAG 2.1 Level A/AA violations across the audited pages, and the manual code-level checks above pass. The outstanding item — full screen-reader walkthroughs on NVDA/JAWS/VoiceOver — is scheduled in Phase 4 (Testing & AI Assurance) ahead of UAT, consistent with the para 6.3 commitment to "Full compliance with WCAG 2.1 AA."
Reproduce: run axe-core 4.10.2 against each page filtered to the WCAG 2.1 A/AA tag set; expected result is 0 violations.