Come abbiamo automatizzato i VPAT di accessibilità nella CI

Come abbiamo automatizzato i VPAT di accessibilità nella CI

Gli audit di accessibilità diventano obsoleti rapidamente. Un singolo merge di codice cambia tutto.

Abbiamo risolto il problema. Abbiamo trasformato i nostri report di accessibilità in un artifact di build continua.

La nostra pipeline utilizza tre livelli per trovare gli errori:

  • Controlli statici: utilizziamo axe-core per i test di base in Storybook.
  • Test interattivi: utilizziamo helper Vitest personalizzati per testare le regole della tastiera.
  • Audit manuali: salviamo i risultati degli screen reader come file JSON.

La nostra pipeline di CI unisce questi risultati.

Se un test fallisce, la PR fallisce. Se tutti i test passano, il sistema genera un nuovo PDF. Questo PDF viene incluso con il rilascio.

Abbiamo provato una cosa che non ha funzionato.

Abbiamo provato a usare un LLM per sostituire gli audit manuali. Abbiamo smesso di usarlo immediatamente. I risultati dell'IA variano troppo. Per un gate di CI servono risultati stabili.

Leggi l'analisi tecnica completa qui:

Fonte: https://dev.to/yassine_lakhdar_d0226709a/how-we-automated-our-accessibility-vpats-in-ci-46jk

ARTICOLO: Un team di sviluppo ha automatizzato la creazione dei VPAT (Voluntary Product Accessibility Templates) di accessibilità direttamente nella propria pipeline di integrazione continua (CI), trasformando quello che un tempo era un report manuale periodico in un artifact di build che viene incluso in ogni rilascio. Il nuovo workflow blocca le pull request che introducono regressioni di accessibilità e produce automaticamente un documento di conformità in PDF quando la build ha successo, assicurando che ogni modifica al codice rimanga entro gli standard di accessibilità.

Perché l'automazione è importante

Gli audit di accessibilità diventano obsoleti nel momento stesso in cui viene rilasciato nuovo codice. Un singolo merge può introdurre testo alt mancante, un ordine di focus errato o problemi con gli screen reader che invalidano un VPAT precedentemente emesso. Mantenere la conformità manualmente significa rieseguire gli audit dopo ogni modifica, un processo costoso e soggetto a errori che spesso non tiene il passo con la velocità di sviluppo. Integrando i controlli nella CI, i team ottengono un feedback immediato, mantengono la conformità aggiornata ed evitano i rischi legali e reputazionali derivanti dal rilascio di software inaccessibile.

L'approccio di testing a tre livelli

  1. Controlli statici – La pipeline esegue axe-core, una libreria open-source che scansiona i componenti renderizzati in Storybook alla ricerca di violazioni note, come la mancanza di landmark o un contrasto cromatico insufficiente. Questi test individuano i problemi prima che avvenga qualsiasi interazione.

  2. Controlli interattivi – Helper Vitest personalizzati testano le regole di navigazione da tastiera, verificando che il focus si sposti in modo logico e che gli elementi interattivi rispondano agli eventi standard della tastiera. Questo livello va oltre l'analisi statica per garantire l'usabilità nel mondo reale.

  3. Artifact degli audit manuali – I risultati dei test con screen reader vengono salvati come file JSON. Gli sviluppatori registrano le osservazioni durante i test esplorativi e caricano (commit) il JSON insieme al codice. Il job di CI unisce questi artifact ai risultati automatizzati, producendo un'unica fonte di verità per il VPAT.

Se un test nei primi due livelli fallisce, la pull request viene bloccata, impedendo alla modifica di raggiungere la produzione. Se tutti i test passano, la pipeline assembla i dati combinati in un PDF che viene allegato al rilascio, fornendo un VPAT aggiornato senza sforzi aggiuntivi.

Cosa non ha funzionato

Il team ha sperimentato l'uso di un modello linguistico di grandi dimensioni (LLM) per generare automaticamente la parte relativa all'audit manuale. I risultati prodotti dall'IA fluttuavano troppo, rendendo inaffidabile il gate di CI. La coerenza è essenziale per un controllo binario pass/fail, quindi l'esperimento è stato abbandonato a favore degli artifact manuali basati su JSON.

Cosa aspettarsi in futuro

Per ora, il modello di CI a tre livelli offre un percorso pragmatico per mantenere i VPAT aggiornati, ridurre il carico di lavoro manuale e mantenere l'accessibilità al centro di ogni modifica al codice.