as-app/docs/a11y-audit-log.md
2026-01-12 18:27:57 +01:00

4.9 KiB

A11y audit log

Keep this log lightweight and practical. Prefer short entries that state:

  • what was checked
  • what was fixed
  • what remains

Format:

YYYY-MM-DD - Area - Result - Notes

Log

  • 2026-01-06 - P0 conventions - Added documentation and testID conventions; added minimal testID for header actions, Send Alert CTAs, and ChatInput controls. (lint clean)

Accessibility Audit Log

This log tracks manual accessibility verification for WCAG 2.2 AA on iOS (VoiceOver) and Android (TalkBack).

Reference docs:


Template (copy/paste for each audit run)

Audit run

  • Date:
  • Commit SHA:
  • App version/build:
  • Tester:

Devices

  • iOS device:

  • iOS version:

  • VoiceOver settings used:

  • Android device:

  • Android version:

  • TalkBack settings used:

Global checks (apply on every screen)

  • Focus order matches visual order
  • No focus traps (especially maps, drawers, modals)
  • Controls have correct name/role/state
  • Target size: 44x44 pt (iOS) / 48dp (Android) for primary controls
  • Dynamic type / font scaling does not clip or hide text
  • Error/success states are perceivable and announced when appropriate
  • No duplicate focusable decorative elements

Results summary

  • Blockers:
  • Majors:
  • Minors:
  • Notes:

Core journeys checklist (fill out)

1) Send Alert (P0)

Targets:

Steps:

  • Navigate to Send Alert
  • Help toggle readable + state announced
  • Radar button opens modal, focus goes to modal title
  • Radar loading/success/error announced once (no spam)
  • Close radar modal, focus returns to radar trigger
  • All CTAs (red/yellow/green/unknown/call) are reachable and correctly described

Findings:

  • iOS:
  • Android:

2) Chat + Messaging (P0)

Targets:

Precondition:

  • An alert with an open chat thread is available (or use a staging account).

Steps:

  • Open chat thread
  • Message list reads in correct order (sender, time, content)
  • Text input is labeled and discoverable (testID chat-input-text)
  • Send/mic control describes current action
  • Start recording: announcement once
  • Stop recording: announcement once
  • Delete recording: destructive hint present
  • Send text message: focus remains stable
  • Play/pause audio: control labeled + state conveyed
  • New incoming message: concise announcement (no spam)

Findings:

  • iOS:
  • Android:

3) Map + Routing (P0)

Targets:

Steps:

  • Open Alert map screen
  • Map surface is not focusable (no trap)
  • Overlay controls are reachable and described (zoom/recenter/toggles)
  • Non-visual alternative entry is discoverable before the map
  • Open route steps list/drawer, focus goes to title
  • Close route steps list/drawer, focus returns to trigger

Findings:

  • iOS:
  • Android:

4) Settings / Permissions (P0)

Targets:

Steps:

  • Open Permissions settings
  • Each permission item exposes switch semantics (role switch + checked/disabled)
  • Blocked permission shows accessible button to open OS settings
  • Permission request success/failure is announced once
  • Permission wizard screens have headings and initial focus

Findings:

  • iOS:
  • Android:

5) Profile + Account management (P0)

Targets:

Steps:

  • Open Profile
  • Edit fields: labels and errors announced
  • Open avatar edit modal: focus to modal header
  • Close avatar edit modal: focus returns to trigger
  • Open account modal(s): focus to modal header
  • Destructive action confirmation: clear label/hint and error focus

Findings:

  • iOS:
  • Android:

Audit runs