GitScrum / Docs
All Best Practices

Accessibility in Development | WCAG A11y Integration Guide

Integrate accessibility from project start. Track WCAG 2.1 compliance, add a11y to Definition of Done, and build products everyone can use. Reduce legal risk.

9 min read

Accessibility isn't optional - it's essential. GitScrum helps teams track accessibility requirements and ensure a11y is part of every feature.

Accessibility Fundamentals

Why A11y Matters

ACCESSIBILITY IMPACT:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ WHO BENEFITS:                                               β”‚
β”‚                                                             β”‚
β”‚ PERMANENT DISABILITIES:                                     β”‚
β”‚ β€’ Blind users (screen readers)                            β”‚
β”‚ β€’ Deaf users (captions, transcripts)                      β”‚
β”‚ β€’ Motor disabilities (keyboard nav)                       β”‚
β”‚ β€’ Cognitive disabilities (clear design)                   β”‚
β”‚                                                             β”‚
β”‚ TEMPORARY CONDITIONS:                                       β”‚
β”‚ β€’ Broken arm (can't use mouse)                           β”‚
β”‚ β€’ Eye infection (can't see well)                         β”‚
β”‚ β€’ Loud environment (can't hear)                          β”‚
β”‚                                                             β”‚
β”‚ SITUATIONAL:                                                β”‚
β”‚ β€’ Bright sunlight (low contrast)                          β”‚
β”‚ β€’ One hand occupied (holding baby)                        β”‚
β”‚ β€’ Slow connection (need lightweight)                      β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ BUSINESS CASE:                                              β”‚
β”‚                                                             β”‚
β”‚ LEGAL: Many countries require accessibility               β”‚
β”‚ β€’ ADA (USA), EN 301 549 (EU), AODA (Canada)              β”‚
β”‚ β€’ Lawsuits increasing annually                            β”‚
β”‚                                                             β”‚
β”‚ MARKET: 15% of world population has disability           β”‚
β”‚ β€’ Significant customer segment                            β”‚
β”‚ β€’ Aging population increasing                             β”‚
β”‚                                                             β”‚
β”‚ SEO: Accessible sites rank better                         β”‚
β”‚ β€’ Semantic HTML helps search engines                     β”‚
β”‚ β€’ Alt text improves image search                         β”‚
β”‚                                                             β”‚
β”‚ QUALITY: Accessible = better for everyone                 β”‚
β”‚ β€’ Clearer design                                          β”‚
β”‚ β€’ Better keyboard support                                 β”‚
β”‚ β€’ Improved performance                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

WCAG Guidelines

WCAG 2.1 OVERVIEW:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ FOUR PRINCIPLES (POUR):                                     β”‚
β”‚                                                             β”‚
β”‚ PERCEIVABLE:                                                β”‚
β”‚ Content must be presentable to users                      β”‚
β”‚ β€’ Text alternatives for images                            β”‚
β”‚ β€’ Captions for video                                      β”‚
β”‚ β€’ Sufficient color contrast                               β”‚
β”‚ β€’ Resizable text                                           β”‚
β”‚                                                             β”‚
β”‚ OPERABLE:                                                   β”‚
β”‚ Interface must be navigable                               β”‚
β”‚ β€’ Keyboard accessible                                      β”‚
β”‚ β€’ No seizure-inducing content                             β”‚
β”‚ β€’ Enough time to read/interact                           β”‚
β”‚ β€’ Clear navigation                                         β”‚
β”‚                                                             β”‚
β”‚ UNDERSTANDABLE:                                             β”‚
β”‚ Content and interface must be clear                       β”‚
β”‚ β€’ Readable text                                            β”‚
β”‚ β€’ Predictable navigation                                  β”‚
β”‚ β€’ Input assistance                                        β”‚
β”‚                                                             β”‚
β”‚ ROBUST:                                                     β”‚
β”‚ Content must work with assistive tech                     β”‚
β”‚ β€’ Valid HTML                                               β”‚
β”‚ β€’ Proper ARIA usage                                       β”‚
β”‚ β€’ Compatible with screen readers                         β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ CONFORMANCE LEVELS:                                         β”‚
β”‚                                                             β”‚
β”‚ Level A:   Minimum accessibility (bare minimum)           β”‚
β”‚ Level AA:  Standard target (most requirements)            β”‚
β”‚ Level AAA: Highest level (specialized needs)              β”‚
β”‚                                                             β”‚
β”‚ RECOMMENDATION: Target WCAG 2.1 Level AA                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Integrating A11y

In Requirements

ACCESSIBILITY IN REQUIREMENTS:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ STORY WITH A11Y CRITERIA:                                   β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ PROJ-123: Add Image Upload Feature                      β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ As a user                                               β”‚β”‚
β”‚ β”‚ I can upload images to my projects                     β”‚β”‚
β”‚ β”‚ So that I can include visuals in documentation         β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ ACCEPTANCE CRITERIA:                                     β”‚β”‚
β”‚ β”‚ ☐ Upload button with clear label                       β”‚β”‚
β”‚ β”‚ ☐ Drag-and-drop zone has keyboard alternative         β”‚β”‚
β”‚ β”‚ ☐ Progress indicator announced to screen readers      β”‚β”‚
β”‚ β”‚ ☐ Error messages are accessible                        β”‚β”‚
β”‚ β”‚ ☐ Uploaded images require alt text                    β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ A11Y REQUIREMENTS:                                       β”‚β”‚
β”‚ β”‚ ☐ Upload button keyboard accessible (Enter/Space)     β”‚β”‚
β”‚ β”‚ ☐ Focus management after upload                       β”‚β”‚
β”‚ β”‚ ☐ ARIA live region for progress                       β”‚β”‚
β”‚ β”‚ ☐ Color contrast on all states                        β”‚β”‚
β”‚ β”‚ ☐ Alt text input is required field                    β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                             β”‚
β”‚ A11Y IN DEFINITION OF DONE:                                β”‚
β”‚                                                             β”‚
β”‚ ☐ Keyboard navigation works                              β”‚
β”‚ ☐ Screen reader tested                                   β”‚
β”‚ ☐ Color contrast meets AA                                β”‚
β”‚ ☐ Focus states visible                                   β”‚
β”‚ ☐ Form inputs have labels                                β”‚
β”‚ ☐ Automated a11y tests pass                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

A11y Checklist

DEVELOPER A11Y CHECKLIST:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ KEYBOARD:                                                   β”‚
β”‚ ☐ All interactive elements focusable                     β”‚
β”‚ ☐ Focus order is logical                                  β”‚
β”‚ ☐ Focus is visible (outline)                              β”‚
β”‚ ☐ No keyboard traps                                       β”‚
β”‚ ☐ Skip links for main content                            β”‚
β”‚ ☐ Custom components have proper keyboard support         β”‚
β”‚                                                             β”‚
β”‚ SCREEN READERS:                                             β”‚
β”‚ ☐ All images have alt text                               β”‚
β”‚ ☐ Decorative images have alt=""                          β”‚
β”‚ ☐ Headings are hierarchical (h1β†’h2β†’h3)                   β”‚
β”‚ ☐ Form inputs have labels                                β”‚
β”‚ ☐ Links have descriptive text (not "click here")        β”‚
β”‚ ☐ Dynamic content announced (ARIA live)                  β”‚
β”‚                                                             β”‚
β”‚ VISUAL:                                                     β”‚
β”‚ ☐ Color contrast 4.5:1 (text) / 3:1 (large text)        β”‚
β”‚ ☐ Color not only indicator                               β”‚
β”‚ ☐ Text resizable to 200%                                 β”‚
β”‚ ☐ Motion can be reduced (prefers-reduced-motion)         β”‚
β”‚                                                             β”‚
β”‚ STRUCTURE:                                                  β”‚
β”‚ ☐ Semantic HTML (nav, main, aside, etc.)                 β”‚
β”‚ ☐ Valid HTML                                              β”‚
β”‚ ☐ Language attribute on html                             β”‚
β”‚ ☐ Page titles are descriptive                            β”‚
β”‚                                                             β”‚
β”‚ FORMS:                                                      β”‚
β”‚ ☐ Labels associated with inputs                          β”‚
β”‚ ☐ Required fields indicated                              β”‚
β”‚ ☐ Error messages clear and associated                    β”‚
β”‚ ☐ Success/error states announced                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Testing A11y

Testing Approach

ACCESSIBILITY TESTING STRATEGY:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ AUTOMATED TESTING (Catch ~30% of issues):                  β”‚
β”‚                                                             β”‚
β”‚ TOOLS:                                                      β”‚
β”‚ β€’ axe-core (most popular)                                 β”‚
β”‚ β€’ Lighthouse accessibility audit                          β”‚
β”‚ β€’ WAVE browser extension                                  β”‚
β”‚ β€’ ESLint jsx-a11y plugin                                  β”‚
β”‚                                                             β”‚
β”‚ INTEGRATION:                                                β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ // In test suite                                        β”‚β”‚
β”‚ β”‚ import { axe } from 'jest-axe';                        β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ it('should have no a11y violations', async () => {     β”‚β”‚
β”‚ β”‚   const { container } = render(<MyComponent />);       β”‚β”‚
β”‚ β”‚   const results = await axe(container);                β”‚β”‚
β”‚ β”‚   expect(results).toHaveNoViolations();                β”‚β”‚
β”‚ β”‚ });                                                      β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                             β”‚
β”‚ MANUAL TESTING (Catch remaining ~70%):                     β”‚
β”‚                                                             β”‚
β”‚ KEYBOARD:                                                   β”‚
β”‚ β€’ Tab through entire page                                 β”‚
β”‚ β€’ Use Enter/Space on all interactive elements            β”‚
β”‚ β€’ Check focus is always visible                          β”‚
β”‚                                                             β”‚
β”‚ SCREEN READER:                                              β”‚
β”‚ β€’ Test with VoiceOver (Mac), NVDA (Windows)              β”‚
β”‚ β€’ Navigate headings, landmarks, links                    β”‚
β”‚ β€’ Complete key user flows                                 β”‚
β”‚                                                             β”‚
β”‚ ZOOM:                                                       β”‚
β”‚ β€’ Zoom to 200%                                            β”‚
β”‚ β€’ Check no content lost or overlapping                   β”‚
β”‚                                                             β”‚
β”‚ COLOR:                                                      β”‚
β”‚ β€’ Use colorblind simulator                                β”‚
β”‚ β€’ Check meaning without color                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

A11y Tasks

Tracking A11y Work

A11Y WORK IN GITSCRUM:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ A11Y AUDIT TASK:                                            β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ A11Y-01: Q1 Accessibility Audit                        β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Scope: Full application audit                          β”‚β”‚
β”‚ β”‚ Standard: WCAG 2.1 AA                                  β”‚β”‚
β”‚ β”‚ Due: End of Q1                                          β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Checklist:                                              β”‚β”‚
β”‚ β”‚ ☐ Automated scan with axe                             β”‚β”‚
β”‚ β”‚ ☐ Manual keyboard testing                             β”‚β”‚
β”‚ β”‚ ☐ Screen reader testing (VoiceOver + NVDA)            β”‚β”‚
β”‚ β”‚ ☐ Document all issues found                           β”‚β”‚
β”‚ β”‚ ☐ Prioritize and create fix tasks                     β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Output: A11Y issue backlog                             β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                             β”‚
β”‚ A11Y FIX TASK:                                              β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ A11Y-15: Fix missing form labels on checkout           β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ WCAG: 1.3.1 (Info and Relationships)                   β”‚β”‚
β”‚ β”‚ Severity: Serious                                       β”‚β”‚
β”‚ β”‚ Found in: /checkout page                               β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Issue:                                                  β”‚β”‚
β”‚ β”‚ Form inputs missing associated labels                  β”‚β”‚
β”‚ β”‚ Screen readers cannot identify fields                  β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Fix:                                                    β”‚β”‚
β”‚ β”‚ Add <label for="..."> to all inputs                   β”‚β”‚
β”‚ β”‚ Or use aria-labelledby                                 β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Acceptance:                                             β”‚β”‚
β”‚ β”‚ ☐ All inputs have visible labels                      β”‚β”‚
β”‚ β”‚ ☐ Labels correctly associated                         β”‚β”‚
β”‚ β”‚ ☐ Screen reader announces labels                      β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                             β”‚
β”‚ LABELS:                                                     β”‚
β”‚ accessibility, wcag-aa, screen-reader, keyboard           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Common Patterns

Accessible Components

ACCESSIBLE COMPONENT PATTERNS:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ MODAL DIALOG:                                               β”‚
β”‚ βœ… Traps focus inside modal                               β”‚
β”‚ βœ… Escape closes modal                                    β”‚
β”‚ βœ… Returns focus to trigger on close                     β”‚
β”‚ βœ… role="dialog" aria-modal="true"                       β”‚
β”‚ βœ… Labeled with aria-labelledby                          β”‚
β”‚                                                             β”‚
β”‚ CUSTOM DROPDOWN:                                            β”‚
β”‚ βœ… role="listbox" and role="option"                      β”‚
β”‚ βœ… Arrow keys navigate options                           β”‚
β”‚ βœ… Enter/Space selects                                    β”‚
β”‚ βœ… Escape closes                                          β”‚
β”‚ βœ… aria-expanded on trigger                              β”‚
β”‚                                                             β”‚
β”‚ TABS:                                                       β”‚
β”‚ βœ… role="tablist", role="tab", role="tabpanel"          β”‚
β”‚ βœ… Arrow keys switch tabs                                 β”‚
β”‚ βœ… aria-selected on active tab                           β”‚
β”‚ βœ… Tab panels labeled                                     β”‚
β”‚                                                             β”‚
β”‚ TOAST NOTIFICATIONS:                                        β”‚
β”‚ βœ… role="alert" or aria-live="polite"                    β”‚
β”‚ βœ… Important: role="alert" (urgent)                      β”‚
β”‚ βœ… Less urgent: aria-live="polite"                       β”‚
β”‚ βœ… Can be dismissed by user                              β”‚
β”‚                                                             β”‚
β”‚ TOGGLE/SWITCH:                                              β”‚
β”‚ βœ… role="switch" (or checkbox)                           β”‚
β”‚ βœ… aria-checked state                                     β”‚
β”‚ βœ… Clear label indicating what's toggled                 β”‚
β”‚ βœ… State change announced                                β”‚
β”‚                                                             β”‚
β”‚ RESOURCES:                                                  β”‚
β”‚ β€’ WAI-ARIA Authoring Practices (official patterns)       β”‚
β”‚ β€’ Inclusive Components (book)                            β”‚
β”‚ β€’ a11y-style-guide                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Related Solutions