Comment nous avons automatisé les VPAT d'accessibilité dans la CI Comment nous avons automatisé les VPAT d'accessibilité dans la CI
Les audits d'accessibilité deviennent rapidement obsolètes. Un seul merge de code change tout.
Nous avons réglé ce problème. Nous avons transformé nos rapports d'accessibilité en un artefact de build continu.
Notre pipeline utilise trois couches pour détecter les erreurs :
- Vérifications statiques : Nous utilisons axe-core pour les tests de base dans Storybook.
- Tests interactifs : Nous utilisons des helpers Vitest personnalisés pour tester les règles de navigation au clavier.
- Audits manuels : Nous stockons les résultats des lecteurs d'écran sous forme de fichiers JSON.
Notre pipeline CI fusionne ces résultats.
Si un test échoue, la PR échoue. Si tous les tests réussissent, le système génère un nouveau PDF. Ce PDF est livré avec votre release.
Nous avons essayé une chose qui a échoué.
Nous avons tenté d'utiliser un LLM pour remplacer les audits manuels. Nous avons immédiatement arrêté. Les résultats de l'IA varient trop. Vous avez besoin de résultats stables pour une barrière de contrôle CI.
Lisez l'analyse technique complète ici :
Source : https://dev.to/yassine_lakhdar_d0226709a/how-we-automated-our-accessibility-vpats-in-ci-46jk
ARTICLE : Une équipe de développement a automatisé la création de VPAT d'accessibilité (Voluntary Product Accessibility Templates) directement dans son pipeline d'intégration continue (CI), transformant ce qui était auparavant un rapport manuel périodique en un artefact de build livré avec chaque release. Le nouveau flux de travail bloque les pull requests qui introduisent des régressions d'accessibilité et produit automatiquement un document de conformité PDF lorsque le build réussit, garantissant que chaque modification de code respecte les normes d'accessibilité.
Pourquoi l'automatisation est importante
Les audits d'accessibilité deviennent obsolètes dès qu'un nouveau code est déployé. Un seul merge peut introduire un texte alternatif manquant, un ordre de focus incorrect ou des problèmes de lecteur d'écran qui invalident un VPAT précédemment émis. Maintenir la conformité manuellement signifie relancer des audits après chaque modification, un processus coûteux et sujet aux erreurs qui accuse souvent un retard sur la vitesse de développement. En intégrant des vérifications dans la CI, les équipes obtiennent un feedback immédiat, maintiennent la conformité à jour et évitent les risques juridiques et réputationnels liés à la livraison de logiciels inaccessibles.
L'approche de test en trois couches
Vérifications statiques – Le pipeline exécute axe-core, une bibliothèque open-source qui analyse les composants rendus dans Storybook pour détecter les violations connues, telles que l'absence de points de repère (landmarks) ou un contraste de couleurs insuffisant. Ces tests permettent de détecter les problèmes avant toute interaction.
Vérifications interactives – Des helpers Vitest personnalisés testent les règles de navigation au clavier, vérifiant que le focus se déplace de manière logique et que les éléments interactifs répondent aux événements clavier standards. Cette couche va au-delà de l'analyse statique pour garantir l'utilisabilité en conditions réelles.
Artefacts d'audit manuel – Les résultats des tests de lecteurs d'écran sont sauvegardés sous forme de fichiers JSON. Les développeurs enregistrent leurs observations lors des tests exploratoires et committent le JSON aux côtés du code. Le job CI fusionne ces artefacts avec les résultats automatisés, produisant une source unique de vérité pour le VPAT.
Si un test échoue dans l'une des deux premières couches, la pull request est bloquée, empêchant la modification d'atteindre la production. Si tous les tests réussissent, le pipeline assemble les données combinées dans un PDF qui est joint à la release, fournissant un VPAT à jour sans effort supplémentaire.
Ce qui n'a pas fonctionné
L'équipe a expérimenté l'utilisation d'un grand modèle de langage (LLM) pour générer automatiquement la partie audit manuel. Les résultats produits par l'IA fluctuaient trop, rendant la barrière de contrôle CI peu fiable. La cohérence est essentielle pour un contrôle binaire de type succès/échec, l'expérience a donc été abandonnée au profit des artefacts manuels basés sur le JSON.
À surveiller ensuite
Pour l'instant, le modèle CI en trois couches offre une voie pragmatique pour maintenir les VPAT à jour, réduire la charge de travail manuelle et placer l'accessibilité au cœur de chaque modification de code.
