|
| 1 | +# Accessibilité (A11Y) - Ultraviolet Design System |
| 2 | + |
| 3 | +## 🎯 Vision |
| 4 | + |
| 5 | +Rendre la Design System Ultraviolet **entièrement accessible** et conforme aux standards **WCAG 2.1 niveau AA**, afin que tous les utilisateurs, quel que soit leur handicap, puissent utiliser les composants UI. |
| 6 | + |
| 7 | +## 📂 Structure |
| 8 | + |
| 9 | +Toute la documentation, l'outillage et les tickets relatifs à l'accessibilité sont centralisés dans le dossier [`a11y/`](./a11y/). |
| 10 | + |
| 11 | +## 📋 Ce que nous allons faire |
| 12 | + |
| 13 | +### Phase 1 : Infrastructure & Outillage 🔧 |
| 14 | +- [`UV-001`](./a11y/UV-001-setup-eslint-plugin-jsx-a11y.txt) : Configuration de `oxlint` avec règles A11y |
| 15 | +- [`UV-002`](./a11y/UV-002-configuration-jest-axe-tests-unitaires.txt) : Mise en place de `vitest-axe` pour les tests unitaires |
| 16 | +- [`UV-003`](./a11y/UV-003-storybook-a11y-configuration-avancee.txt) : Configuration avancée de Storybook avec addon a11y |
| 17 | +- [`UV-004`](./a11y/UV-004-ci-cd-tests-a11y-automatises.txt) : Intégration des tests A11y dans la CI/CD |
| 18 | + |
| 19 | +### Phase 2 : Audit & Correctifs 🔍 |
| 20 | +- [`UV-005`](./a11y/UV-005-audit-complet-composants-ui.txt) : Audit complet de tous les composants UI |
| 21 | +- [`UV-006`](./a11y/UV-006-corriger-violations-critiques.txt) : Correction des violations critiques et serious |
| 22 | +- [`UV-007`](./a11y/UV-007-focus-management-modal-dialog.txt) : Focus management pour les modals/dialogs |
| 23 | +- [`UV-008`](./a11y/UV-008-navigation-clavier-composants-interactifs.txt) : Navigation clavier sur les composants interactifs |
| 24 | +- [`UV-009`](./a11y/UV-009-aria-labels-roles.txt) : ARIA labels et roles |
| 25 | + |
| 26 | +### Phase 3 : Tests E2E A11y 🧪 |
| 27 | +- [`UV-010`](./a11y/UV-010-setup-playwright-a11y-tests.txt) : Setup de Playwright pour les tests d'accessibilité |
| 28 | +- [`UV-011`](./a11y/UV-011-tests-navigation-clavier-e2e.txt) : Tests automatisés de navigation clavier |
| 29 | +- [`UV-012`](./a11y/UV-012-tests-screen-readers.txt) : Tests de compatibilité avec les screen readers |
| 30 | + |
| 31 | +### Phase 4 : Documentation & Guidelines 📚 |
| 32 | +- [`UV-013`](./a11y/UV-013-documentation-a11y-developpeurs.txt) : Documentation A11y pour les développeurs |
| 33 | +- [`UV-014`](./a11y/UV-014-stories-demonstration-a11y.txt) : Stories de démonstration des bonnes pratiques |
| 34 | +- [`UV-015`](./a11y/UV-015-template-pr-checklist-a11y.txt) : Template de PR avec checklist A11y obligatoire |
| 35 | + |
| 36 | +### Phase 5 : Monitoring & Maintenance 📊 |
| 37 | +- [`UV-016`](./a11y/UV-016-dashboard-suivi-a11y.txt) : Dashboard de suivi des violations |
| 38 | +- [`UV-017`](./a11y/UV-017-audit-regulier-automatise.txt) : Audit régulier automatisé |
| 39 | + |
| 40 | +## 🤔 Pourquoi faire ça ? |
| 41 | + |
| 42 | +### 1. **Inclusion** 🌍 |
| 43 | +L'accessibilité numérique est un droit fondamental. Environ **15% de la population mondiale** vit avec un handicap. Rendre nos composants accessibles, c'est permettre à tous d'utiliser nos applications. |
| 44 | + |
| 45 | +### 2. **Conformité légale** ⚖️ |
| 46 | +De nombreuses réglementations imposent l'accessibilité numérique : |
| 47 | +- **RGAA** en France (Référentiel Général d'Amélioration de l'Accessibilité) |
| 48 | +- **ADA** aux États-Unis |
| 49 | +- **European Accessibility Act** pour l'UE |
| 50 | + |
| 51 | +### 3. **Qualité technique** 💎 |
| 52 | +L'accessibilité améliore : |
| 53 | +- La sémantique HTML |
| 54 | +- La navigation clavier |
| 55 | +- La compatibilité avec les technologies d'assistance |
| 56 | +- Le SEO (les bonnes pratiques A11y beneficient aussi au référencement) |
| 57 | + |
| 58 | +### 4. **Expérience utilisateur** ✨ |
| 59 | +Les fonctionnalités accessibles profitent à tous : |
| 60 | +- Sous-titres → utiles dans un environnement bruyant |
| 61 | +- Navigation clavier → utile pour les power users |
| 62 | +- Contrastes élevés → utile en extérieur ou sur écrans de mauvaise qualité |
| 63 | + |
| 64 | +## 🛠️ Comment nous allons procéder |
| 65 | + |
| 66 | +### 1. Outillage automatique |
| 67 | +```bash |
| 68 | +# Linting A11y en temps réel |
| 69 | +oxlint |
| 70 | + |
| 71 | +# Tests unitaires |
| 72 | +npm test -- --testNamePattern="a11y" |
| 73 | + |
| 74 | +# Tests E2E |
| 75 | +npm run test:e2e:a11y |
| 76 | +``` |
| 77 | + |
| 78 | +### 2. Workflow de développement |
| 79 | +- **Avant chaque commit** : lint A11y via pre-commit hooks |
| 80 | +- **Avant chaque PR** : tests A11y automatisés + checklist manuelle |
| 81 | +- **Dans la CI** : blocage si violations critiques ou serious |
| 82 | +- **Dans Storybook** : validation A11y sur chaque story |
| 83 | + |
| 84 | +### 3. Processus de correction |
| 85 | +1. Détection automatique via oxlint/storybook |
| 86 | +2. Audit manuel sur les composants critiques |
| 87 | +3. Correction des violations par ordre de priorité (critical → serious → moderate) |
| 88 | +4. Tests de validation (clavier + screen reader) |
| 89 | +5. Documentation des patterns utilisés |
| 90 | + |
| 91 | +### 4. Formation & Sensibilisation |
| 92 | +- Documentation des bonnes pratiques |
| 93 | +- Exemples concrets dans Storybook |
| 94 | +- Revue de code systématique sur les aspects A11y |
| 95 | + |
| 96 | +## 📊 Métriques de succès |
| 97 | + |
| 98 | +| Objectif | Cible | Échéance | |
| 99 | +|----------|-------|----------| |
| 100 | +| 0 violation critical | ✅ 0 | Sprint 2 | |
| 101 | +| 0 violation serious | ✅ 0 | Sprint 3 | |
| 102 | +| < 50 violations moderate | ⚠️ < 50 | Sprint 4 | |
| 103 | +| WCAG AA compliance | 📈 95%+ | Sprint 6 | |
| 104 | +| Composants testés | ✅ 100% | Sprint 4 | |
| 105 | + |
| 106 | +## 📚 Ressources |
| 107 | + |
| 108 | +- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/) |
| 109 | +- [WAI-ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/) |
| 110 | +- [RGAA 4.1](https://accessibilite.numerique.gouv.fr/rgaa/) |
| 111 | +- [A11y Project Checklist](https://www.a11yproject.com/checklist/) |
| 112 | + |
| 113 | +## 🚀 Démarrage |
| 114 | + |
| 115 | +1. Consulter la [roadmap détaillée et les 17 tickets](./a11y/README.md) |
| 116 | +2. Review des tickets dans [`a11y/`](./a11y/) : |
| 117 | + - Phase 1 : [`UV-001`](./a11y/UV-001-setup-eslint-plugin-jsx-a11y.txt), [`UV-002`](./a11y/UV-002-configuration-jest-axe-tests-unitaires.txt), [`UV-003`](./a11y/UV-003-storybook-a11y-configuration-avancee.txt), [`UV-004`](./a11y/UV-004-ci-cd-tests-a11y-automatises.txt) |
| 118 | + - Phase 2 : [`UV-005`](./a11y/UV-005-audit-complet-composants-ui.txt) à [`UV-009`](./a11y/UV-009-aria-labels-roles.txt) |
| 119 | + - Phase 3 : [`UV-010`](./a11y/UV-010-setup-playwright-a11y-tests.txt) à [`UV-012`](./a11y/UV-012-tests-screen-readers.txt) |
| 120 | + - Phase 4 : [`UV-013`](./a11y/UV-013-documentation-a11y-developpeurs.txt) à [`UV-015`](./a11y/UV-015-template-pr-checklist-a11y.txt) |
| 121 | + - Phase 5 : [`UV-016`](./a11y/UV-016-dashboard-suivi-a11y.txt), [`UV-017`](./a11y/UV-017-audit-regulier-automatise.txt) |
| 122 | +3. Priorisation avec l'équipe |
| 123 | +4. Lancement du Sprint 1 |
| 124 | + |
| 125 | +--- |
| 126 | + |
| 127 | +**Contact** : A11y Audit Team |
| 128 | +**Date** : Avril 2026 |
| 129 | +**Statut** : En cours |
0 commit comments