View Categories

Aggiornamenti dei contenuti in tempo reale e annunci dello screen reader

Scopo #

Lo scopo principale di questo test di accessibilità manuale è valutare meticolosamente se i contenuti inseriti dinamicamente vengono annunciati correttamente dagli screen reader e percepiti dagli utenti che utilizzano tecnologie assistive. Questo test mira a confermare la conformità ai criteri di successo WCAG 2.2 4.1.2 Nome, Ruolo, Valore (A), 1.4.13 Contenuto al passaggio del mouse o al focus (AA) e 4.1.3 Messaggi di stato (AA). Garantire che aggiornamenti, avvisi e risposte ai moduli in tempo reale vengano comunicati in modo efficace è fondamentale per gli utenti che non possono monitorare visivamente lo schermo per rilevare eventuali modifiche, evitando confusione, perdita di informazioni o mancato completamento delle attività. Questo processo manuale si basa in larga misura sull’interazione con gli screen reader e sull’attivazione sistematica di contenuti dinamici.

Criteri WCAG coperti #

Questo test affronta specificamente i seguenti criteri di successo WCAG 2.2 relativi agli aggiornamenti dei contenuti in tempo reale:

  • 4.1.2 Nome, ruolo, valore – A

Per tutti i componenti dell’interfaccia utente (inclusi elementi del modulo, collegamenti e componenti generati da script), il nome e il ruolo possono essere determinati a livello di programmazione; gli stati, le proprietà e i valori che possono essere impostati dall’utente possono essere impostati a livello di programmazione; e la notifica delle modifiche a questi elementi è disponibile per gli agenti utente, incluse le tecnologie assistive.

Rilevanza/Test:
Questo criterio è fondamentale. Quando il contenuto viene caricato o aggiornato dinamicamente, tutti i nuovi elementi interattivi (ad esempio, pulsanti, link nei risultati di ricerca, campi dei moduli che compaiono in base alle selezioni precedenti) o le modifiche allo stato degli elementi esistenti (ad esempio, un pulsante “Invia” che diventa “Invio in corso…”) devono avere il nome accessibile, il ruolo e lo stato/valore attuale correttamente esposti alle tecnologie assistive. Verificheremo che le informazioni esposte a livello di programmazione siano coerenti e accurate per i componenti dinamici.

  • 1.4.13 Contenuto su passaggio del mouse o focus – AA

Questo criterio stabilisce che se il contenuto viene visualizzato passandoci sopra il puntatore del mouse o spostandovi il focus della tastiera, il contenuto deve essere ignorabile, su cui è possibile passare il mouse e persistente. Sebbene direttamente applicabile a tooltip e menu a discesa, i suoi principi sono rilevanti anche per i contenuti transitori e inseriti dinamicamente.

Rilevanza/Test:
Sebbene sia principalmente rivolto ai contenuti con passaggio del mouse/focus, lo spirito di questo criterio si applica anche ad alcuni tipi di messaggi dinamici, come avvisi di errore o notifiche di successo, che appaiono temporaneamente. Valuteremo se questi messaggi inseriti dinamicamente persistono abbastanza a lungo da essere letti da uno screen reader e se possono essere facilmente ignorati senza interrompere il flusso di lavoro dell’utente.

  • 4.1.3 Messaggi di stato – AA

Questo criterio richiede specificamente che i messaggi di stato possano essere determinati a livello di programmazione tramite ruoli o proprietà, in modo che gli utenti possano percepirli senza ricevere il focus. I messaggi di stato forniscono informazioni sul successo o sui risultati di un’azione, sull’attesa di un risultato, sull’avanzamento di un processo o informazioni generali. Questo è il criterio principale per testare gli aggiornamenti in tempo reale.

Rilevanza/Test:
Testeremo meticolosamente tutte le istanze di messaggi di stato e aggiornamenti dinamici dei contenuti (ad esempio, feedback sull’invio di moduli, aggiornamenti dei risultati di ricerca, messaggi di chat, indicatori di caricamento, errori di convalida, feed di dati in tempo reale). Verificheremo che questi messaggi vengano annunciati dagli screen reader senza richiedere all’utente di spostarsi sul nuovo contenuto. Ciò comporta la verifica della corretta implementazione delle regioni live ARIA (aria-live=”polite” o aria-live=”assertive”) o di ruoli come role=”status”, role=”alert”, role=”log” e role=”progressbar”.

Ambiente di prova #

Questo test richiede l’interazione attiva con lettori di schermo e strumenti per sviluppatori su vari dispositivi.

Desktop #

  • Sistemi operativi: Windows (ultime due versioni), macOS (ultime due versioni).
  • Browser: ultime versioni stabili di Chrome, Firefox, Edge, Safari (con strumenti per sviluppatori per l’ispezione di HTML, attributi ARIA e albero di accessibilità).
  • Metodi di input:
    • Mouse standard
    • Tastiera (per la navigazione e l’attivazione di azioni)
    • Software di controllo vocale (facoltativo, per una più ampia copertura dei metodi di input).
  • Tecnologie assistive: lettore di schermo (ad esempio, NVDA, JAWS su Windows; VoiceOver su macOS) per ascoltare gli annunci di contenuti dinamici.

Cellulari e tablet #

  • Sistemi operativi: iOS (ultime due versioni), Android (ultime due versioni).
  • Browser: browser predefiniti (Safari su iOS, Chrome su Android).
  • Metodi di input:
    • Touchscreen (tocchi per attivare azioni)
    • Tastiera fisica esterna (USB o Bluetooth) se necessario per interazioni complesse.
  • Tecnologie assistive: lettori di schermo integrati (VoiceOver su iOS, TalkBack su Android) per la verifica degli annunci.
  • Strumenti per sviluppatori: funzionalità di debug remoto (ad esempio, Chrome DevTools per Android, Safari Web Inspector per iOS) per l’ispezione di HTML e ARIA su dispositivi mobili.
  • Orientamento: modalità verticale e orizzontale.

Preparazione al test #

Prima di iniziare il test manuale, assicurarsi di aver completato i seguenti passaggi:

  1. Identificare tutte le aree di contenuto dinamico:
    Elencare sistematicamente ogni area della piattaforma in cui i contenuti possono cambiare o apparire dinamicamente senza dover aggiornare completamente la pagina. Questo include, a titolo esemplificativo ma non esaustivo:
  2. Comprendere il comportamento atteso:
    Per ogni contenuto dinamico identificato, determinare:
    • Cosa innesca il cambiamento di contenuto?
    • Quali informazioni vengono trasmesse dal cambiamento?
    • Quanto velocemente appare/scompare?
    • Qual è l’annuncio di accessibilità previsto?
  3. Familiarizzare con le regioni ARIA Live:
    Rileggere e comprendere il concetto di regioni live ARIA (aria-live=”polite”, aria-live=”assertive”) e il loro utilizzo appropriato. Comprendere inoltre altri ruoli ARIA per i messaggi di stato (ad esempio, role=”status”, role=”alert”, role=”log”, role=”progressbar”).
  4. Configurare gli screen reader:
    Assicurati che il software di lettura dello schermo sia installato e configurato correttamente. Familiarizza con il modo in cui gli screen reader annunciano gli aggiornamenti regionali in tempo reale (spesso in modo discreto o tramite un segnale acustico specifico).
  5. Preparare dati/scenari di prova:
    Prepara vari scenari per attivare tutti i tipi di aggiornamenti dinamici (ad esempio, invii di moduli validi/non validi, diverse query di ricerca, aggiunta di più articoli a un carrello).
  6. Cancella cache/cookie del browser:
    Per garantire un ambiente di test pulito, cancellare la cache e i cookie del browser secondo necessità.

Processo di test passo dopo passo #

Eseguire i seguenti passaggi per ciascuna area di contenuto dinamico identificata, sia su desktop che su dispositivi mobili/tablet. Documentare meticolosamente le osservazioni.

PASSO 1 – Procedura generale per i messaggi di stato (WCAG 4.1.3) #

Attiva contenuto dinamico: #

  • Eseguire un’azione che determina la visualizzazione o la modifica di contenuti dinamici (ad esempio, inviare un modulo, applicare un filtro, digitare in una casella di ricerca, inviare un messaggio di chat).

Verifica dello screen reader (annuncio): #

  • Subito dopo aver attivato la modifica, ascolta attentamente lo screen reader.
  • Caso di prova:
    il contenuto inserito dinamicamente o il messaggio di stato vengono annunciati dallo screen reader?
  • Caso di prova:
    l’annuncio è tempestivo e coerente? Ha senso nel contesto?
  • Caso di prova:
    per le regioni aria-live=”polite”, l’annuncio viene fatto in modo elegante senza interrompere il discorso in corso?
  • Caso di prova:
    per le regioni aria-live=”assertive” (per messaggi urgenti), l’annuncio viene effettuato immediatamente, interrompendo il discorso in corso se necessario?
  • Caso di prova:
    per gli indicatori di avanzamento (role=”progressbar”), lo screen reader annuncia gli aggiornamenti (ad esempio, la percentuale di completamento)?

PASSO 2 – Procedura generale per nome, ruolo e valore degli elementi dinamici (WCAG 4.1.2) #

Attiva nuovi elementi interattivi:
#

  • Eseguire un’azione che fa sì che nuovi elementi interattivi appaiano dinamicamente (ad esempio, un pulsante “Passaggio successivo” viene visualizzato dopo il completamento del modulo, nuovi link vengono visualizzati in un elenco di risultati di ricerca).

Verifica della navigabilità tramite tastiera e lettore dello schermo: #

  • Prova a navigare verso questi nuovi elementi interattivi utilizzando la tastiera (Tab, Maiusc + Tab).
  • Caso di prova:
    questi nuovi elementi sono attivabili tramite tastiera?
  • Caso di prova:
    lo screen reader annuncia correttamente il nome, il ruolo e lo stato di questi nuovi elementi interattivi?
  • Caso di prova:
    questi elementi possono essere attivati/azionati tramite tastiera?

Modifiche di stato sugli elementi esistenti: #

  • Esegue un’azione che modifica lo stato di un elemento interattivo esistente (ad esempio, un pulsante “Salva” diventa “Salvato”, un pulsante “Aggiorna” mostra uno spinner di caricamento).
  • Caso di prova:
    lo screen reader annuncia il cambiamento di stato o di valore dell’elemento (ad esempio, “Pulsante Salva, premuto”, “Pulsante Caricamento in corso…”)?
  • Caso di prova:
    la modifica dello stato viene riflessa a livello di programmazione (ad esempio, aria-pressed=”true”, aria-label aggiornato)?

PASSO 3 – Procedura generale per la persistenza/licenziabilità dei contenuti transitori (rilevanza WCAG 1.4.13) #

Messaggi transitori di trigger: #

  • Attiva avvisi o messaggi che appaiono dinamicamente e poi scompaiono dopo un breve periodo di tempo (ad esempio, conferma “Articolo aggiunto al carrello”, notifica “Copiato negli appunti”).

Osservare la persistenza e la remissibilità: #

  • Caso di prova:
    il messaggio rimane sullo schermo abbastanza a lungo da consentire a uno screen reader di leggerlo completamente e a un utente di comprenderlo (una buona indicazione è un minimo di 5 secondi, o di più per messaggi complessi)?
  • Caso di prova:
    esiste un meccanismo (ad esempio un pulsante di chiusura, il tasto Esc) per ignorare manualmente il messaggio se è persistente e l’utente desidera rimuoverlo?
  • Caso di prova:
    per i messaggi che appaiono al passaggio del mouse/focus (come da 1.4.13 direttamente), persistono quando l’utente sposta il puntatore/focus sul contenuto e possono essere ignorati?

Scenari specifici da testare #

Convalida del modulo: #

  • Invia un modulo con dati mancanti o errati.
  • Caso di prova:
    i messaggi di errore in tempo reale (ad esempio, “Formato email non valido”) vengono annunciati immediatamente senza spostare l’attenzione?
  • Caso di prova:
    per gli errori di convalida lato server, il messaggio di stato viene annunciato dopo l’invio?

Cerca e filtra i risultati: #

  • Applica filtri o esegui una ricerca che aggiorni l’elenco dei risultati senza caricare l’intera pagina.
  • Caso di prova:
    viene visualizzato un messaggio che indica che i risultati sono stati aggiornati (ad esempio, “15 risultati trovati per ‘scarpe'”)?
  • Caso di prova:
    i nuovi risultati di ricerca e i loro elementi interattivi (ad esempio, i link ai prodotti) sono annunciati correttamente e navigabili?

Applicazioni di chat: #

  • Ricevi un nuovo messaggio in un’interfaccia di chat.
  • Caso di prova:
    il nuovo messaggio viene annunciato dallo screen reader senza che l’utente debba accedervi manualmente?
  • Caso di prova:
    i dettagli del mittente/timestamp sono comunicati correttamente?

Indicatori di carico: #

  • Avvia un processo di lunga durata che visualizza una barra di caricamento o una barra di avanzamento.
  • Caso di prova:
    viene annunciato lo stato di “caricamento”? Se è presente una barra di avanzamento, vengono annunciati gli aggiornamenti sullo stato di avanzamento?
  • Caso di prova:
    al termine del caricamento, viene annunciato il messaggio di successo/fallimento?

Aggiungi al carrello / Conferme: #

  • Aggiungi un articolo al carrello: verrà visualizzato un piccolo pop-up di conferma.
  • Caso di prova:
    il messaggio di conferma (“Articolo aggiunto al carrello”) viene visualizzato? Permane abbastanza a lungo da poter essere letto?

Feed di dati in tempo reale: #

  • Per contenuti che vengono aggiornati frequentemente (ad esempio, ticker azionari, risultati sportivi):
  • Caso di prova:
    la regione aria-live viene utilizzata in modo appropriato per annunciare modifiche critiche senza sopraffare l’utente? (Spesso aria-live=”polite” con aggiornamenti non respinti).

Identificazione dei problemi #

Durante il processo di test, identificare e documentare eventuali deviazioni dal comportamento previsto in base alle WCAG 4.1.2, 1.4.13 e 4.1.3. Esempi di problemi comuni includono:

  • Silenzio sugli aggiornamenti dinamici (errore WCAG 4.1.3):
    i contenuti dinamici o i messaggi di stato vengono visualizzati ma non vengono annunciati dallo screen reader.
  • Regione ARIA Live mancante:
    il contenitore per i contenuti dinamici non dispone di un attributo aria-live o di un ruolo appropriato (ad esempio stato, avviso).
  • Impostazione aria-live errata:
    aria-live=”assertive” viene utilizzato per messaggi non urgenti, interrompendo inutilmente l’utente; oppure aria-live=”polite” viene utilizzato per messaggi urgenti, facendo sì che non vengano letti.
  • Contenuto non persistente (rilevanza WCAG 1.4.13):
    i messaggi temporanei scompaiono troppo rapidamente perché gli utenti di screen reader possano percepirli o comprenderli.
  • Nuovi elementi interattivi inaccessibili (errore WCAG 4.1.2):
    i pulsanti, i collegamenti o i campi modulo aggiunti dinamicamente non sono attivabili tramite tastiera, non hanno nomi accessibili o hanno ruoli errati.
  • Modifiche di stato non annunciate (fallimento WCAG 4.1.2):
    le modifiche agli stati degli elementi (ad esempio, selezionato/deselezionato, espanso/compresso, disabilitato/abilitato) non vengono comunicate a livello di programmazione alle tecnologie assistive.
  • Annunci eccessivamente dettagliati:
    lo screen reader annuncia troppe informazioni o informazioni ridondanti quando si aggiornano i contenuti.
  • Il focus salta inaspettatamente:
    quando appare un contenuto dinamico, il focus della tastiera salta inaspettatamente sul nuovo contenuto, disorientando l’utente. (Sebbene a volte sia necessario per le finestre modali, spesso non funziona per i messaggi di stato).
  • Aree attive in conflitto:
    più aree attive su una pagina vengono aggiornate simultaneamente, causando annunci confusi o illeggibili.
  • Il contenuto oscura altri elementi:
    i messaggi visualizzati dinamicamente (come gli avvisi) si sovrappongono o nascondono altri contenuti essenziali senza un chiaro meccanismo di chiusura.

Classificazione di gravità #

Assegnare un livello di gravità a ciascun problema identificato in base al suo impatto sull’accessibilità dell’utente:

  • Basso:
    Problemi minori con gli annunci di contenuti dinamici (ad esempio, leggera ridondanza negli annunci, elementi decorativi che compaiono senza la regione live ma non sono essenziali).
  • Critico:
    i messaggi di stato essenziali (ad esempio, errori di invio di moduli, avvisi di sicurezza, conferme critiche) non vengono annunciati dagli screen reader, causando il blocco completo delle informazioni o la perdita di dati. (Violazione diretta del Livello A, che comporta un rischio grave).
  • Alto:
    impedisce significativamente agli utenti di comprendere gli aggiornamenti dinamici chiave o di interagire con i nuovi elementi visualizzati (ad esempio, i risultati di ricerca vengono annunciati semplicemente come “elenco”, i nuovi elementi interattivi sono presenti ma non accessibili tramite tastiera). Violazione diretta dei criteri di Livello AA o problemi di usabilità significativi con i criteri di Livello A.
  • Medio:
    causa disagi o confusione moderati. I messaggi vengono annunciati, ma con ritardi, oppure l’impostazione aria-live non è ottimale ma non del tutto errata. Lievi incongruenze nei nomi accessibili degli elementi dinamici.

Nota finale #

Testare gli aggiornamenti dei contenuti in tempo reale con gli screen reader è una parte indispensabile di un audit di accessibilità completo. Gli strumenti automatizzati spesso faticano a interpretare le sfumature degli annunci di contenuti dinamici, rendendo la verifica manuale fondamentale. Assicurandosi meticolosamente che tutti gli aggiornamenti in tempo reale siano trasmessi correttamente tramite le regioni live di ARIA e la corretta semantica programmatica, i team possono creare una piattaforma realmente reattiva e informativa per tutti gli utenti, indipendentemente dalla loro dipendenza dalla percezione visiva.

Torna in alto