File size: 6,900 Bytes
17cc547
 
1992441
 
 
17cc547
1992441
 
 
17cc547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1992441
17cc547
 
 
 
 
 
 
 
 
 
1992441
17cc547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1992441
17cc547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1992441
2f5797b
1992441
17cc547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1992441
17cc547
 
 
 
 
 
 
 
1992441
 
17cc547
 
 
 
 
 
 
 
 
1992441
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Déclaration d'accessibilité — Picarones

> Déclaration d'engagement Picarones vis-à-vis du standard WCAG 2.1
> AA et de la norme française RGAA 4.1.  Contexte historique :
> [`docs/archive/2026-audits/remediation-plan.md`](../archive/2026-audits/remediation-plan.md).
>
> **Statut au 2 mai 2026** : audit interne validé ; audit externe
> RGAA / WCAG **en cours**.  Cette déclaration est **provisoire**
> jusqu'à validation par un cabinet d'audit indépendant.

## Engagement

Picarones s'engage à rendre son interface web et le rapport HTML
qu'elle génère accessibles conformément à :

- **WCAG 2.1** (Web Content Accessibility Guidelines, W3C) niveau **AA**,
- **RGAA 4.1** (Référentiel général d'amélioration de l'accessibilité,
  France, art. 47 de la loi 2005-102),
- **EN 301 549** (norme européenne d'accessibilité des produits TIC).

## Périmètre couvert

- L'application web FastAPI servie sur ``picarones serve``
  (configuration, lancement de benchmarks, suivi en temps réel).
- Le rapport HTML interactif généré par ``picarones report``
  (tableau de classement, galerie, vue document, vues d'analyses,
  panneau Avancé, glossaire contextuel).

## État de conformité

### Critères WCAG 2.1 niveau A — **conforme**

| Critère | Statut | Mécanisme |
|---|---|---|
| 1.1.1 Non-text Content | ✓ | Tous les graphiques Chart.js ont `aria-label` + `<table>` jumelle accessible via bouton « Voir les données ». |
| 1.3.1 Info and Relationships | ✓ | `scope="col"` sur tous les `<th>` rendus. `<main>` avec `id` et `role`. |
| 2.1.1 Keyboard | ✓ | Toute interaction utilise `<button>`, `<a>`, `<input>` natifs — accessible au clavier. |
| 2.4.1 Bypass Blocks | ✓ | Skip-link `<a class="skip-link" href="#main">` premier enfant focusable du `<body>`. |
| 3.1.1 Language of Page | ✓ | `<html lang="fr|en">` dynamique selon le rendu. |
| 4.1.2 Name, Role, Value | ✓ | Contrôles natifs, labels ARIA appropriés. |

### Critères WCAG 2.1 niveau AA — **conforme**

| Critère | Statut | Mécanisme |
|---|---|---|
| 1.4.3 Contrast (Minimum) | ✓ | Palette par défaut Okabe-Ito, contraste ≥ 4,5:1 sur fond blanc et fond de tableaux. |
| 1.4.5 Images of Text | ✓ | Aucun texte rendu en image — tout est HTML/SVG sélectionnable. |
| 1.4.10 Reflow | ✓ | Layout responsive ; pas de scroll horizontal forcé jusqu'à 320 px de large. |
| 1.4.11 Non-text Contrast | ✓ | Bordures de boutons, focus rings ≥ 3:1 contre l'environnement. |
| 2.4.6 Headings and Labels | ✓ | Hiérarchie h1/h2/h3 respectée, labels descriptifs. |
| 3.1.2 Language of Parts | ✓ | Termes techniques marqués si la langue diffère du rapport. |
| 4.1.3 Status Messages | ✓ | Messages d'état (« Chargement… », « Aucune donnée ») dans des régions `role="status"` ou `aria-live`. |

### Critères WCAG 2.1 niveau AAA — **partiellement conforme**

Le niveau AAA est un objectif d'amélioration continue, non une exigence
légale. Sont actuellement non conformes par décision éditoriale :

| Critère | Décision | Justification |
|---|---|---|
| 1.4.6 Contrast (Enhanced) — 7:1 | Reporté | La palette Okabe-Ito tient 4,5:1 mais pas systématiquement 7:1. Un thème AAA dédié pourra être ajouté à la demande institutionnelle. |
| 2.3.2 Three Flashes | N/A | Aucun contenu clignotant produit par le rapport. |

## Mécanismes d'accessibilité notables

### Palette daltonien-friendly (par défaut)

La palette par défaut est **Okabe-Ito 2008**
(palette qualitative recommandée pour la déficience de la vision
des couleurs : deutéranopie, protanopie, tritanopie). L'ancienne
palette rouge/vert/jaune reste accessible via :

- la case « Mode daltonien-friendly » du panneau « ⚙ Avancé »,
- le paramètre URL ``?palette=classic`` (état partageable).

### Tableau de données pour graphiques

Chaque graphique Chart.js du rapport propose un bouton « Voir les
données » qui révèle un `<table>` avec les valeurs sources. Cette
table est rendue à la demande (lazy) pour ne pas alourdir le DOM
initial mais reste annoncée par les lecteurs d'écran via
`aria-describedby`.

### Skip-to-content

Un lien « Aller au contenu » apparaît au focus en haut de la page
(Tab depuis la URL bar y mène en 1 tabulation) et permet d'éviter
la navigation principale et les bandeaux contextuels.

### Bilinguisme intégral

Le rapport est livré en français ou en anglais (paramètre
``--lang``). Les libellés a11y (skip-link, boutons, ARIA labels,
captions de tableaux jumeaux) sont localisés dans les deux langues.

## Dérogations connues et plan de remédiation

| Item | Statut | Échéance |
|---|---|---|
| Matrice de confusion Unicode (vue Caractères) | Densité visuelle élevée — la table jumelle accessible reste l'alternative principale. | Refonte UX planifiée (cf. backlog). |
| Génération PDF du rapport | Non livrée (cf. [`../reference/specification.md`](../reference/specification.md) « Promesses non tenues »). | Pas de plan d'ajout, le HTML couvre les usages observés. |
| Audit RGAA externe | En cours, prestataire à contractualiser. | Prochain trimestre. |

## Tests automatisés

Le contrat d'accessibilité est verrouillé par deux suites de tests :

- ``tests/report/test_a11y_level_a.py`` — 13 cas, valident le niveau A
  bloquant (skip-link, canvas a11y, scope=col, i18n du Reset).
- ``tests/report/test_a11y_level_aa.py`` — 12+ cas, valident le niveau
  AA (palette par défaut, locale FR/EN, toggle daltonien, fallback
  i18n des messages d'erreur charts).

Toute régression sur ces tests bloque le merge en CI.

## Agents utilisateurs supportés

L'accessibilité est validée sur :

- **Lecteurs d'écran** : NVDA 2024.x (Windows), VoiceOver (macOS),
  TalkBack (Android). Test JAWS prévu lors de l'audit externe.
- **Navigateurs** : Firefox ESR, Chrome stable, Safari récent, Edge
  stable. Aucune dépendance à une fonctionnalité non standard.
- **Agrandissements** : confort visuel jusqu'à zoom 200 %.

## Voies de recours

Si une difficulté d'accès vous empêche d'utiliser Picarones, vous
pouvez :

1. ouvrir une issue GitHub étiquetée ``a11y`` :
   <https://github.com/maribakulj/Picarones/issues/new?labels=a11y>,
2. contacter le mainteneur référent accessibilité (canal défini dans
   ``GOVERNANCE.md``).

En cas de discrimination caractérisée, le défenseur des droits
(France) peut être saisi : <https://www.defenseurdesdroits.fr/>.

## Calendrier de réaudit

- Audit interne automatisé : à chaque PR via la CI.
- Audit interne manuel (NVDA / VoiceOver) : à chaque release majeure.
- **Audit externe RGAA / WCAG complet** : annuel, premier audit
  prévu mi-2026.

## Remerciements

La palette Okabe-Ito (Okabe & Ito, 2008,
<https://jfly.uni-koeln.de/color/>) est utilisée avec leur
permission de diffusion ouverte.

---

*Dernière mise à jour : 2 mai 2026.*