fix(a11y): complement de #141 fusionnee trop tot - contrastes, borne sans a11y-dialog, total anime #142

Merged
Corentin merged 3 commits from fix/bloc1-complement-141 into dev 2026-09-23 08:24:02 +02:00
Owner
No description provided.
L audit livre ce matin mesurait 10 violations serieuses, toutes sur la regle de
contraste. Elles sont corrigees et la remesure le prouve : 0 violation sur les
11 ecrans, 407 mesures sur 407 conformes.

Trois causes, trois corrections :
- borne, texte attenue : #767676 donnait 4,16 sur le fond gris, il fallait 4,5.
  Devient #6E6E6E, mesure a 4,67. Le commentaire du token affirmait un contraste
  AA minimum sur blanc : c etait vrai sur blanc (4,54, marge de 0,04) et faux des
  que le fond changeait. Le commentaire dit desormais la verite.
- back-office, sous-titres : #6B7280 donnait 4,43, devient #69707D a 4,57.
- back-office, le do de Wakdo : #C8920A donnait 2,77 pour un seuil de 3.

Sur ce dernier, la valeur que j avais calculee (#B8860B) a ete ecartee a raison.
Elle corrigeait le point qui echouait mais tombait a 2,94 sur le fond dore doux
des tuiles du point de vente comptoir et drive, un ecran hors des 11 audites.
#AE7F09 tient des deux cotes : 3,60 sur blanc, 3,25 sur le fond doux. Verifie
par recalcul independant.

Tous les autres usages des tokens ont ete revus, pas seulement ceux qui
echouaient : 9 regles cote borne, 48 cote back-office. Un cas limite trouve au
passage, du CSS mort sur un bouton desactive, qui etait deja sous le seuil avant
ce lot et se trouve corrige de fait.

Le jaune de marque #FFC72C n est pas touche. Seuls des accents secondaires
bougent, d un a deux pour cent, sous le seuil de perception.

La barriere de non-regression est videe : elle decrivait l etat mesure, cet etat
est desormais sans violation. Le dossier garde les DEUX campagnes, avant et
apres, avec leurs empreintes.

217 tests JS, 755 tests PHP, PHPStan niveau 6 sans erreur.
Decision de l auteur du projet : aucune dependance livree au navigateur. La
borne reste integralement en JavaScript ecrit a la main, ce qui etait sa ligne
depuis le debut.

Ce qui est retire : la librairie embarquee sous assets/vendor/, son import dans
confirm-modal.js, et l exception du .gitignore qui la rendait versionnable. La
modale de confirmation retrouve son implementation manuelle, celle qui gere
elle-meme le piege de tabulation, la touche Echap, la restauration du focus, le
masquage du fond et le blocage du defilement.

L outillage de MESURE n est pas concerne : axe-core, PHPUnit et PHPStan ne sont
pas livres au navigateur, ils mesurent le code sans en faire partie.

209 tests JS et 755 tests PHP au vert, retour a l etat d avant l integration.
feat(borne): total du panier anime en JavaScript, sans librairie
All checks were successful
CI / secret-scan (push) Successful in 25s
CI / php-lint (push) Successful in 28s
CI / static-tests (push) Successful in 1m19s
CI / js-tests (push) Successful in 46s
CI / secret-scan (pull_request) Successful in 25s
CI / php-lint (pull_request) Successful in 25s
CI / static-tests (pull_request) Successful in 1m17s
CI / js-tests (pull_request) Successful in 43s
828dc75506
Le referentiel demande des animations JAVASCRIPT DEVELOPPEES (Cr 2.a.3). Les
trois animations du projet etaient en CSS, et les quatre appels a
requestAnimationFrame servaient tous a differer un focus, pas a animer. Le
critere n etait donc pas couvert.

Le total du panneau de commande compte desormais de l ancienne valeur vers la
nouvelle au lieu de sauter. Sur une borne ou les gestes s enchainent vite, un
total qui defile est plus difficile a manquer qu un texte qui change d un coup,
et son sens confirme au client le type de geste qu il vient de faire sans qu il
ait a lire le chiffre.

Ecrit a la main : fonction d attenuation, duree bornee, annulation reelle si un
nouvel ajout arrive avant la fin. Le texte porte la valeur finale exacte des sa
creation : l animation ameliore un etat deja correct, elle n est jamais la
condition pour l obtenir.

prefers-reduced-motion etait absent des 4511 lignes de CSS du projet. Il est
desormais respecte des deux cotes : une regle universelle cote CSS, qui couvrira
aussi les animations futures sans risque d oubli, et un chemin dedie cote
JavaScript qui pose directement la valeur finale.

Point d accessibilite non demande, trouve et traite : le panneau de commande est
une region annoncee aux lecteurs d ecran. Une animation qui reecrit un texte
trente fois en quelques centaines de millisecondes y aurait multiplie les
annonces. Le total est sorti du flux d annonces individuelles sans sortir de
l arbre d accessibilite. C est un raisonnement documente, pas une mesure sur
lecteur d ecran reel, et la fiche le dit ainsi.

233 tests JS (209 avant, 24 ajoutes), 755 tests PHP, PHPStan niveau 6 sans
erreur. Audit d accessibilite relance : 0 violation sur les 11 ecrans, 407
contrastes mesures, minimum 3,59.
Corentin scheduled this pull request to auto merge when all checks succeed 2026-09-23 08:18:05 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AcadeNice/corentin_wakdo!142
No description provided.