# 19. Accessibility Audit (TalkBack) meta: id: android-production-19 feature: android-production priority: P2 depends_on: [] tags: [testing, accessibility, compliance] objective: - Ensure the Android app is fully accessible with TalkBack and meets WCAG 2.1 AA mobile guidelines deliverables: - TalkBack audit report - Accessibility labels on all elements - Dynamic Type support - Color contrast verification steps: 1. Audit all screens with TalkBack: - Enable TalkBack (Settings → Accessibility) - Navigate every screen using swipe gestures - Verify all interactive elements have labels - Verify logical reading order - Test with eyes closed 2. Add missing accessibility labels: - Add contentDescription to all Image composables - Add semantics { contentDescription = "..." } to icons - Group related elements with mergeDescendants - Add state descriptions for toggles 3. Test Dynamic Type: - Enable largest font size in Settings - Test all screens at largest text size - Verify no truncation or overlap - Use scrollable containers where needed 4. Verify color contrast: - Test all text/background combinations - Ensure 4.5:1 ratio for normal text - Ensure 3:1 ratio for large text and UI components - Test in both light and dark themes 5. Test Switch Access: - Enable Switch Access - Verify all actions reachable - Test focus traversal order 6. Test keyboard navigation: - Navigate with Bluetooth keyboard - Verify Tab order logical - Verify Enter/Space activation 7. Add automated tests: - Use AccessibilityScanner for quick checks - Add Compose semantics tests - Test with uiautomator tests: - Manual: Full TalkBack navigation of all screens - Automated: AccessibilityScanner results - Visual: Color contrast verification acceptance_criteria: - All interactive elements have content descriptions - TalkBack reads logical description for every element - Dynamic Type supported at all sizes - Color contrast ≥4.5:1 for all text - Switch Access navigable - Keyboard navigation works - No accessibility warnings in lint - Accessibility audit report completed - Screenshots at largest font size showing no issues - Compose semantics tests passing validation: - Turn on TalkBack → navigate entire app without visual - Enable largest font size → all screens readable - Check contrast → all combinations pass - Run AccessibilityScanner → no suggestions - Lint check → no accessibility warnings notes: - Compose has good accessibility by default but custom composables need attention - Use Modifier.semantics { } for custom accessibility - Test on physical device — emulator TalkBack is limited - Consider hiring accessibility consultant for thorough audit