- PHP 8.4
- Twig
- Twig-CS-Fixer
- PHPUnit
- CI / Codecov
Voir en ligne (nouvel onglet) Code source sur GitHub (nouvel onglet)
Le contexte
Dans l'écosystème Symfony, les templates Twig ne passent par aucun contrôle d'accessibilité avant la recette : les oublis (image sans alt, bouton sans nom accessible, ARIA mal utilisé) ne sont repérés qu'en audit, quand ils coûtent cher à corriger. Le seul outil existant, twigcs-a11y, n'était plus maintenu.
Mon rôle
Conception, développement, tests et publication du package, seul.
Points clés
Un linter qui s'intègre à l'existant
Plutôt qu'un nouvel outil à installer, les règles se branchent sur Twig-CS-Fixer, déjà utilisé par les équipes Symfony. Une ligne de configuration suffit, et chaque violation peut être désactivée finement avec son identifiant.
89 règles, 4 niveaux
Médias, formulaires, structure, ARIA… Les règles sont regroupées en presets progressifs (Basic, Recommended, Standard, Strict) pour adopter le linter sur un projet existant sans être noyé sous les alertes.
Comprendre le contexte du template
Layouts, templates enfants, partials, thèmes de formulaire et composants Twig UX sont reconnus : les règles qui concernent une page complète (langue, titre, landmarks) ne s'appliquent pas à un simple fragment.
Qualité d'un vrai package
Suite de tests PHPUnit, intégration continue avec GitHub Actions, couverture suivie sur Codecov, versionnement sémantique jusqu'à la v1.
Ce que j'en retiens
Écrire des règles statiques oblige à connaître précisément les critères WCAG et leurs exceptions, et à arbitrer entre exhaustivité et faux positifs. Publier un package public m'a aussi appris à soigner la documentation et la compatibilité des versions.