get to prod tasks
This commit is contained in:
80
tasks/ios-production/19-accessibility-audit.md
Normal file
80
tasks/ios-production/19-accessibility-audit.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# 19. Accessibility Audit (VoiceOver)
|
||||
|
||||
meta:
|
||||
id: ios-production-19
|
||||
feature: ios-production
|
||||
priority: P2
|
||||
depends_on: []
|
||||
tags: [testing, accessibility, compliance]
|
||||
|
||||
objective:
|
||||
- Ensure the iOS app is fully accessible with VoiceOver and meets WCAG 2.1 AA mobile guidelines
|
||||
|
||||
deliverables:
|
||||
- VoiceOver audit report
|
||||
- Accessibility labels on all elements
|
||||
- Dynamic Type support
|
||||
- Color contrast verification
|
||||
|
||||
steps:
|
||||
1. Audit all screens with VoiceOver:
|
||||
- Turn on VoiceOver (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 .accessibilityLabel to all buttons
|
||||
- Add .accessibilityHint where helpful
|
||||
- Add .accessibilityValue for dynamic content
|
||||
- Group related elements with .accessibilityElement(children:)
|
||||
3. Test Dynamic Type:
|
||||
- Enable Larger Text in Settings
|
||||
- Test all screens at largest text size
|
||||
- Verify no truncation or overlap
|
||||
- Use ScrollView where content may overflow
|
||||
4. Verify color contrast:
|
||||
- Test all text/background color 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 mode
|
||||
5. Test Switch Control:
|
||||
- Enable Switch Control
|
||||
- Verify all actions reachable
|
||||
- Test with external switch device if available
|
||||
6. Test Reduce Motion:
|
||||
- Enable Reduce Motion
|
||||
- Verify app still functional without animations
|
||||
- Respect prefersReducedMotion
|
||||
7. Add accessibility tests:
|
||||
- XCTest checks for accessibility labels
|
||||
- Verify no unlabeled elements
|
||||
- Test with accessibility inspector
|
||||
|
||||
tests:
|
||||
- Manual: Full VoiceOver navigation of all screens
|
||||
- Automated: XCTest accessibility label checks
|
||||
- Visual: Color contrast verification
|
||||
|
||||
acceptance_criteria:
|
||||
- All interactive elements have accessibility labels
|
||||
- VoiceOver reads logical description for every element
|
||||
- Dynamic Type supported at all sizes (AX5)
|
||||
- Color contrast ≥4.5:1 for all text
|
||||
- Reduce Motion respected
|
||||
- Switch Control navigable
|
||||
- No accessibility warnings in Xcode
|
||||
- Accessibility audit report completed
|
||||
- Screenshots at largest text size showing no layout issues
|
||||
|
||||
validation:
|
||||
- Turn on VoiceOver → navigate entire app without visual
|
||||
- Enable largest text size → all screens readable
|
||||
- Check contrast → all combinations pass
|
||||
- Xcode accessibility inspector → 0 warnings
|
||||
|
||||
notes:
|
||||
- SwiftUI has good accessibility by default but custom views need attention
|
||||
- Use .accessibilityElement(children: .combine) for complex views
|
||||
- Test on physical device — simulator VoiceOver is limited
|
||||
- Consider hiring accessibility consultant for thorough audit
|
||||
Reference in New Issue
Block a user