axe DevTools Mobile Note sulla versione del 18 ottobre 2023
18 Ottobre 2023
Versioni dei componenti
- axeDevToolsXCUI v2.8.0
- axe-devtools-android v4.2.0
Cosa c'è di nuovo?
Supporto per WCAG 2.2
WCAG 2.2 è stato rilasciato ufficialmente il 5 ottobre. La nostra regola "Spaziatura del Tocco Obiettivo" è passata dallo stato sperimentale. Questa regola è conforme alla WCAG 2.2. 2.5.8 e assicura che gli elementi abbiano una dimensione minima o che ci sia sufficiente spazio attorno a loro. Questo è importante per le persone con disabilità fisiche che non riescono a cliccare piccoli pulsanti molto vicini tra loro. Scopri di più sulla versione WCAG 2.2.. Visualizza la documentazione per la regola di spaziatura del bersaglio touch per iOS e la regola di spaziatura del bersaglio touch per Android.
Lo sapevate? La regola sulla spaziatura dell'elemento tattile (WCAG 2.2, 2.5.8) soddisfa gli standard AA, mentre la regola sulla dimensione dell'elemento tattile (WCAG 2.1, 2.5.5) soddisfa gli standard AAA. Per i controlli più importanti, WCAG consiglia di attenersi alla regola più restrittiva "Touch Target Size" per soddisfare gli standard AAA. Deque consiglia inoltre di puntare a una norma più severa sui dispositivi mobili, perché impone la conformità con la linea guida 44ptx44pt di Apple e si allinea maggiormente con la linea guida 48dpx48dp di Google, per garantire che non vi siano problemi quando si invia un'app agli app store.
Cambiamento Importante: Scansiona Solo Le Viste Visibili
Axe DevTools Mobile ora eseguirà la scansione solo delle viste visibili all'utente al momento della scansione. In precedenza, l'impostazione predefinita era la scansione di tutte le viste, anche quelle fuori dallo schermo o nascoste da altre viste.
In che modo questo migliora i risultati?
- Analizzando solo ciò che è visibile all'utente, i risultati riflettono in modo più accurato l'esperienza utente di una persona con disabilità o di qualcuno che utilizza tecnologie assistive. Tutto ciò che si trova dietro una finestra di dialogo o una finestra modale e che non può essere raggiunto dall'utente o dalla tecnologia assistiva non verrà scansionato.
- Le regole della computer vision, come il contrasto dei colori, non vengono applicate alle viste fuori dallo schermo; pertanto, in precedenza, le viste fuori dallo schermo ricevevano risultati solo da un set di regole limitato. Eseguendo la scansione solo delle viste all'interno dei limiti dello schermo, puoi essere certo che tutte le viste scansionate trarranno vantaggio dall'intero set di regole.
Cosa significa questo per il tuo team?
Se al momento nella Dashboard le caselle "Filtraggio problemi" sono deselezionate, non noterà alcuna differenza nei risultati della Dashboard. Le visualizzazioni non visibili all'utente sono già escluse dai risultati.
Altrimenti, una volta effettuato l'aggiornamento a axeDevToolsXCUI v2.8.0 e axe-devtools-android v4.2.0:
- Le visualizzazioni nascoste dietro altre visualizzazioni, come finestre modali o popup, non avranno risultati di accessibilità.
- Le visualizzazioni fuori dallo schermo, come quelle sopra o sotto la posizione di scorrimento corrente, non avranno risultati di accessibilità.
- Suggerimento: esegui una scansione di ogni posizione di scorrimento di una schermata lunga per assicurarti di rilevare tutti i problemi di accessibilità. Ad esempio, se la schermata iniziale della tua app si estende su 3 schermate, dovresti effettuare 3 scansioni come mostrato di seguito:
- Per schermate lunghe con un tipo di visualizzazione ripetuto, ad esempio un elenco, potrebbero non essere necessarie più scansioni in ogni posizione di scorrimento. Una singola scansione della prima area visibile probabilmente rileverà i problemi di accessibilità ricorrenti.
- Suggerimento: esegui una scansione di ogni posizione di scorrimento di una schermata lunga per assicurarti di rilevare tutti i problemi di accessibilità. Ad esempio, se la schermata iniziale della tua app si estende su 3 schermate, dovresti effettuare 3 scansioni come mostrato di seguito:
iOS
- La [regola del testo associato] (ios-associated-text) è stata promossa fuori dallo stato sperimentale. Questa regola garantisce che un controllo ottenga il suo nome accessibile da un'etichetta vicina disponibile per tecnologie assistive come VoiceOver e Controllo vocale.
- La regola Contrasto colore è stata migliorata per ottenere una dimensione stimata del carattere e migliorare ulteriormente l'accuratezza dei risultati. Questa modifica significa che i risultati di alcuni scenari ora riporteranno lo stato "Passato" o "Fallito" anziché "Necessita di revisione".
Android
- Cambiamenti radicali nelle regole personalizzate: l'interfaccia per l'esecuzione di regole personalizzate in Android è stata aggiornata per restituire un
RunRuleResult
oggetto anziché unString
tipo. Visualizza un esempio completo della modifica o maggiori informazioni su regole personalizzate in Android. - Dopo un'attenta revisione, abbiamo deciso di rimuovere dalla nostra libreria le Regole di Visualizzazione Nascosta sperimentali, ovvero Hidden Active View Focus e Hidden Informative View Focus. Queste regole sperimentali sono state sottoposte a numerose iterazioni, man mano che raccoglievamo feedback nel corso di due anni. Abbiamo scoperto che l'automazione di queste regole potrebbe potenzialmente restituire falsi positivi e pertanto abbiamo deciso di rimuoverle dal nostro set di regole automatizzate per supportare il nostro impegno a 0 falsi positivi. Con questa versione, abbiamo spostato le Regole di Visualizzazione Nascosta allo stato "ignorato". Non appariranno più nel conteggio dei risultati "non superati" o "superati". Nella nostra prossima versione (data da definire) saranno completamente rimossi dalla libreria.
- Abbiamo aggiunto riepiloghi più descrittivi alle regole per spiegare meglio perché sono contrassegnate come Passate, Fallite o Necessitano di revisione.
- Le API Compose ora accettano
ComposeEmptyTestRule
di avviare un'attività utilizzandoActivityScenario
. Questa opzione può essere più semplice rispetto all'utilizzo diAndroidComposeTestRule
, soprattutto quando si utilizzano contemporaneamente le viste XML e Compose. Ulteriori informazioni sull'utilizzo di Compose Empty Test Rule. - Con questa versione, abbiamo effettuato l'aggiornamento da Kotlin versione 1.7 a Kotlin versione 1.9 per garantire che le nostre librerie rimangano compatibili con le ultime versioni di Jetpack Compose. La versione 1.9 di Kotlin è retrocompatibile con Kotlin 1.8 e versioni successive. Se la tua app si basa su una versione di Kotlin inferiore alla 1.8, continua a utilizzare axe-devtools-android v4.1.0 o precedente.
- Abbiamo effettuato l'aggiornamento da Moshi 1.12.0 a 1.15.0 e da Jetpack Compose 1.4.3 a 1.5.1.
Correzioni di bug
iOS
- Tough Target Spacing ha ricevuto alcuni aggiornamenti per gestire i casi limite di controlli nascosti ed elementi completamente sovrapposti.
- Miglioramenti nel rilevamento degli elementi di accessibilità nei casi limite, che miglioreranno l'accuratezza dei risultati per vari controlli di test delle regole.
- La regola "Supports Dynamic Type" non verrà eseguita su controlli senza testo visibile.
- Il framework non si blocca più sugli elementi Picker. Non sono previste modifiche nei risultati poiché non ci sono regole attuali che riguardano gli elementi Picker. Cercheremo opportunità per il futuro.
Android
- Abbiamo aggiunto proprietà di orientamento dello schermo comprensibili per l'utente ai valori analizzati per la regola di orientamento dello schermo. In precedenza si trattava di valori interi che non potevano essere facilmente compresi dalla persona che esaminava i risultati.
- Ora è possibile aggiornare l'elenco delle regole personalizzate quando si utilizza la scansione agnostica rispetto al layout tramite il Registro di strumentazione.
Pannello di controllo
- Miglioramenti dell'accessibilità alla visualizzazione ad albero nella funzione "Ispeziona". Ora è possibile navigare correttamente nella visualizzazione ad albero utilizzando una tastiera o una tecnologia assistiva.
Problemi noti
Se riscontri uno dei problemi elencati di seguito, contattaci all'indirizzo helpdesk@deque.com o support.deque.com. Saremo quindi in grado di informarti una volta risolto il problema o di una soluzione alternativa individuata, se non ne è elencata nessuna.
- I test automatizzati di axe DevTools Mobile vengono eseguiti su applicazioni native iOS, native Android e React Native. Contatta il tuo rappresentante Deque per soluzioni di test di accessibilità sul tuo stack tecnologico.
- Anche se potresti ottenere alcuni risultati dalle visualizzazioni web o dai PDF renderizzati, ti consigliamo vivamente di effettuare dei test utilizzando axe DevTools for Web o axe Monitor per i test di accessibilità per il web più completi.
axe DevTools Mobile per iOS
La regola Supporta il tipo dinamico non funziona con il simulatore iOS 15 Pro
Si è verificato un problema nel simulatore dell'iPhone Pro con iOS 15 che impedisce l'esecuzione della regola Supporta i tipi dinamici. Se hai scelto la regola Supporta il tipo dinamico, non potrai testarlo utilizzando un simulatore di iPhone Pro con iOS 15. È stato segnalato un bug ad Apple.
Regole contro i controlli nidificati
Esaminando un possibile miglioramento delle nostre regole, abbiamo scoperto che in XCTest i controlli nidificati non vengono restituiti nell'albero di accessibilità. È stato segnalato un bug ad Apple. (#1110)
Falso positivo: in Scroll View, ActiveControlName
Stiamo lavorando attivamente per risolvere i seguenti falsi positivi e aggiorneremo questo elenco non appena saranno pubblicate le correzioni.
Nella vista a scorrimento
Potrebbero essere segnalati problemi relativi al testo all'interno di elementi che si comportano come banner. Per rendere questi elementi disponibili a coloro che necessitano di testo più grande, utilizzare UILargeContentViewer
. (#622)
NomeControlloAttivo
Se un UIImageView ha un `accessibilityIdentifier` impostato ma non è attivabile da VoiceOver, e al suo interno contiene controlli attivabili, ActiveControlName potrebbe segnalare un falso positivo su UIImageView. Rimuovendo il `accessibilityIdentifier` il problema viene risolto. È stato segnalato un bug ad Apple. (#1226)
Falso negativo: nome della visualizzazione dell'immagine, testo selezionabile in iOS 13 tramite iOS 14.8.1
Stiamo lavorando attivamente per correggere i seguenti falsi negativi e aggiorneremo questo elenco non appena saranno pubblicate le correzioni.
Nome ImageView
Se un UIImageView ha un `accessibilityIdentifier` impostato ma non è attivabile tramite VoiceOver, NomeImageView potrebbe segnalare un falso negativo su UIImageView. Rimuovendo il `accessibilityIdentifier` il problema viene risolto. È stato segnalato un bug ad Apple. (#1226)
Testo selezionabile
Gli elementi contrassegnati come elementi non accessibili potrebbero segnalare risultati errati a causa di un bug nel framework di Apple.
axe DevTools Mobile per Android
Arresto anomalo durante l'utilizzo di Proguard
Se la build di debug o di test utilizza Proguard, seguire i passaggi per escludere Deque nelle impostazioni di Proguard.
Arresto anomalo quando `minifiedEnabled` è impostato su true
Se minimizzi la tua compilazione, vedrai un crash con un registro degli errori che segnala che non è stato possibile trovare un adattatore quando provi ad accedere alla libreria axe DevTools. Disabilita la minimizzazione per le compilazioni di debug con axe DevTools implementato. (#729)
Errori di compilazione con Java8 Project e axe DevTools Android 3.1.0
Prova le seguenti importazioni:
implementation 'androidx.core:core-ktx:1.9.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'Dopo aver importato la libreria sopra, se vedi errori relativi alla versione minSDK per la libreria core-ktx, prova quanto segue nel manifesto Android del tuo progetto:
<uses-sdk tools:overrideLibrary="androidx.core" />
Le build con r8 abilitato generano un errore
Una compilazione con r8 abilitato potrebbe tentare di minimizzare la libreria axeDevTools, generando un errore simile a:
Caused by: java.lang.NullPointerException: throw with null exception at g.b.b.a$a.a(Unknown Source:1) at g.b.b.a$a.a(Unknown Source:0) at g.b.b.a.a(AccessToken.java:190)Per risolvere questo errore, aggiungi la seguente riga al tuo file ProGuard per mantenere le classi axeDevTools:
keep class com.deque.** { *; }
Messaggio di errore simile a:
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
Se riscontri un errore del tipo `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)`, contattaci a helpdesk@deque.com o support.deque.com per assistenza. In determinate condizioni, potrebbero esistere contemporaneamente due nodi radice Compose.
Dashboard di axe DevTools Mobile
Alcuni nomi di scansione Android non sono formattati
Alcuni nomi di scansione Android che per impostazione predefinita compaiono nel titolo della schermata appariranno come nome completo della classe, incluso l'identificativo del bundle. In una versione futura, questo verrà risolto in modo che il titolo dello schermo sia formattato in un nome più leggibile. Come soluzione alternativa, puoi impostare il nome della scansione dalla dashboard o dai framework. (#1643)