Loading
Quatorze étiquettes qui ne nommaient rien
Un « label » sans « htmlFor » et qui n'enveloppe aucun contrôle ne porte aucune
association. Le lecteur d'écran lit son texte comme une phrase en l'air, puis
annonce les commandes qui suivent sans dire de quoi elles relèvent : « Gravité »,
puis quatre boutons anonymes.
Le relevé en annonçait onze. En les cherchant une par une, il y en avait
quatorze — treize noms de groupe et une étiquette de champ.
── Treize noms de groupe
Un « label » ne peut nommer ni un jeu de boutons, ni un tableau : l'élément
n'accepte qu'un contrôle de formulaire. Le nom vit désormais dans un « span » et
le conteneur porte « role=group » avec « aria-label ».
Pas d'« aria-labelledby » ici, à dessein : il aurait fallu un identifiant unique
par groupe, donc un « useId » dans dix composants, pour un résultat identique à
l'oreille. « aria-label » reçoit le même appel de traduction que le texte
visible, sur la ligne d'à côté — les deux ne peuvent pas diverger sans qu'on le
voie.
Déclenchement (gravité, cellules à ouvrir), Membres (par quel canal), Tableaux
(modèle), Continuité (criticité), Recensement (à qui), Destinataires (étiquettes,
deux fois), Annuaire, Fiches réflexes (types de crise), Mobilisations prêtes
(qui est mobilisé, réponses proposées), Modèles (ciblage habituel).
── Une étiquette de champ posée à côté du champ
Celle de l'import de destinataires coiffait un « textarea » sans le nommer.
Rattachée par « htmlFor ». Vérifié dans le DOM : « label.control » désigne bien
le champ.
── Le style ne change pas d'un pixel
La règle de « label » accueille « .nom-groupe » : mêmes taille, graisse et
couleur. Vérifié à l'écran sur trois écrans — « Gravité » se lit exactement
comme « Type » au-dessus.
── La garantie
Elle interdit ce que la campagne a trouvé : un « label » sans « htmlFor » et
sans « input », « select » ou « textarea » avant sa fermeture. Elle balaie les
sources de l'interface, pas une liste d'écrans — c'est ce qui manquait aux
contrôles de titre de page, qui portaient sur six fichiers nommés à la main.
1177 garanties au vert.
── Ce que la vérification a fait apparaître, hors de ce lot
Le sélecteur de gravité du déclenchement affiche encore les codes bruts :
« vigilance », « mineure », « majeure », « critique », en minuscules, alors que
tout autre écran dit « Majeure ». Il boucle sur un tableau littéral avec « g »
pour variable, et la garantie posée au lot précédent ne cherche que « {gravite} »
et « {statut} » : elle ne le voit pas. C'est un écart, non corrigé ici — il
n'était pas dans la demande.
Co-Authored-By: Claude (RCA)