axe DevTools Mobile Note sulla versione del 12 febbraio 2025
12 Febbraio, 2025
Versioni dei componenti
- SDK Android (axe-devtools-android v6.1.0)
- Android Analyzer (axe Accessibility Analyzer v1.11.0)
- Driver Android Appium (axe-appium-uiautomator2-driver v1.3.0)
- axe DevTools Reporter CLI v4.10.0
Come aggiornare: Android SDK, Android Analyzer, Android Appium Driver, axe DevTools Reporter CLI
Cosa c'è di nuovo?
Driver Android Appium
La funzionalità Ignora regole è ora disponibile per il driver Android Appium! Fai riferimento alla nostra documentazione sulle regole di esclusione per Android , tenendo presente che per il driver Android Appium, le regole di esclusione possono essere implementate solo con _ tutte _ le viste, non per viste selezionate o nome della classe. Per ulteriori informazioni su come ignorare le regole, consulta la nostra documentazione di configurazione di Appium. A breve sarà disponibile il supporto per il driver Appium per iOS.
axe Reporter CLI
Ora, quando generi un report HTML dal file JSON della scansione mobile, potrai vedere il punteggio di accessibilità insieme al conteggio totale dei problemi, al tasso di superamento e al conteggio della gravità del problema. È possibile visualizzare un punteggio per tutte le scansioni oppure selezionare una singola scansione per visualizzarne il punteggio. Questa aggiunta è in linea con il Punteggio di accessibilità che vedi nella dashboard di axe DevTools Mobile. A titolo di riferimento, il Rapporto di superamento è la percentuale di requisiti di accessibilità soddisfatti con successo rispetto al numero totale di requisiti controllati. Il punteggio di accessibilità viene calcolato in base al numero totale di schermate, al numero di problemi e alla gravità di tali problemi.
Correzioni Android
- Risultati più coerenti e affidabili nelle app native e multipiattaforma
- Miglioramenti dell'accessibilità per l'app Analyzer
- Aggiornamenti per migliorare le prestazioni e la precisione di tutte le regole di accessibilità
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.
iOS
Errore nel progetto Analyzer e Test tramite ID del bundle in 2.8.1
Nella versione 2.8.1, la funzionalità di test di un'applicazione tramite identificatore bundle non funzionava, provocando un errore denominato "Nessun percorso dell'applicazione di destinazione specificato tramite la configurazione del test: ...". Per risolvere l'errore, esegui l'aggiornamento alla versione 2.8.2 o all'ultima versione. Aggiorna alla versione più recente del progetto iOS Analyzer.
Errore "Impossibile serializzare AxeResult" nel progetto Analyzer v1.2.0 e SDK v2.12.3
La scansione di alcune applicazioni con questa versione dell'analizzatore e dell'SDK generava l'errore "Impossibile serializzare AxeResult". Per risolvere l'errore, esegui l'aggiornamento alla versione più recente. Aggiorna all'ultima versione del progetto iOS Analyzer.Aggiorna all'iOS SDK più recente.
Falso positivo: LabelInName e LabelAtFront in SwiftUI e app multipiattaforma
Alcune schermate potrebbero segnalare falsi positivi con LabelInName e LabelAtFront a causa del rilevamento di una proprietà associatedText non corretta (#1622)
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)
La regola del nome ImageView deve essere rivista per le app UIKit
Nelle app UIKit, per impostazione predefinita, un'immagine senza `accessibilityLabel` non può essere messa a fuoco con la tecnologia assistiva.
Le proprietà che utilizziamo per verificare la messa a fuoco da Apple potrebbero essere imprecise quando viene impostato un `accessibilityIdentifier` sull'immagine. A causa di questo comportamento imprevisto, i risultati relativi ai problemi del nome ImageView nelle app UIKit verranno segnalati come "Necessita di esame". È stato segnalato un bug ad Apple. (#1633)
Falso positivo: In Scroll View, Label In Name, Label at Front, e Image View Name & ActiveControlName v2.11.0
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)
v2.11.0 Nome della visualizzazione dell'immagine & Nome del controllo attivo
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. (#1633)
Etichetta nel nome ed etichetta all'inizio
Queste due regole cercano l'etichetta visibile di un controllo tra gli elementi vicini per aiutare a determinare lo stato della regola. In alcune gerarchie di visualizzazione, potrebbe essere rilevato del testo adiacente non corretto, causando il fallimento di queste regole. (#1622)
Android
Spaziatura del bersaglio touch e Jetpack Compose
Al momento, la regola Touch Target Spacing non è in esecuzione su alcun componente slider scritto in Jetpack Compose. Al momento non è possibile intraprendere alcuna azione. Tuttavia, la soluzione arriverà presto!
Errore durante il salvataggio dei risultati in locale sull'API 30
Su Android API 30, una delle posizioni in cui proviamo a salvare i risultati localmente presenta un errore di autorizzazione. Nonostante venga visualizzato questo errore, il risultato verrà comunque salvato come file JSON. L'errore può essere eliminato commentando il codice nel seguente blocco:
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') { executable "${android.getAdbExecutable().toString()}" args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases' // finalizedBy { // fetchAndroidFolderAxeReportsTask // } }
Si prega di notare che questo codice dovrebbe essere commentato solo per l'API 30 poiché causerà problemi durante il salvataggio locale per altri livelli API.
Rilevamento dello scorrimento su app ibride e multipiattaforma
In alcune app ibride e multipiattaforma, potremmo restituire risultati inattesi quando gli elementi in una vista scorrevole sono parzialmente fuori dallo schermo. Per testare l'accessibilità di un elemento, assicurati che sia completamente visualizzato sullo schermo prima di eseguire la scansione.
App Analyzer: il Floating Action Button scompare
Con l'API 31 (Android 12) è stata introdotta la possibilità di nascondere le sovrapposizioni non di sistema. Per poter utilizzare l'app axe Analyzer, assicurati che questa impostazione non sia attivata. Se hai scelto di utilizzare questa funzionalità per i suoi miglioramenti di sicurezza, ti consigliamo di lasciarla disattivata per le build di test interne, dove puoi utilizzare in sicurezza i dati di test ed eliminare in questo modo le preoccupazioni sulla sicurezza. Nota: questa impostazione non influisce sull'app di scansione dell'accessibilità di Google poiché è considerata un overlay di sistema.
Per utilizzare l'app axe Accessibility Analyzer, aggiorna tutte le chiamate al metodo setHideOverlayWindows(true)
a setHideOverlayWindows(false)
sulle finestre di attività interessate.
Screenshot mancante (scatola nera) nella dashboard
Per sbloccare tutte le funzionalità di axe DevTools per dispositivi mobili, assicurati che gli screenshot siano abilitati. Per evitare problemi di sicurezza, ti consigliamo di abilitare gli screenshot su una versione di debug o di prova della tua app che utilizza dati fittizi. Consulta la nostra guida per abilitare gli screenshot nelle app Android.
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)
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)
o: No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?
Le API Compose sono deprecate, utilizzate le API indipendenti dal layout per continuare a ricevere gli aggiornamenti. Se continui a utilizzare le API di Compose e riscontri un errore del tipo `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` o `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, fai riferimento a API di Compose setTestTag.
Messaggio di log:MlKitContext has not been initialized
Se visualizzi questo messaggio, alcuni risultati delle regole potrebbero non essere restituiti come previsto quando la regola in questione utilizza l'intelligenza artificiale. Le regole interessate includono Contrasto colore, Testo attivabile e Nome elemento nidificato. (#841)
MAUI: Regola Modifica Nome Testo
A causa delle limitazioni del rendering dell'architettura dell'app MAUI nell'ecosistema Android, la regola Modifica nome testo verrà visualizzata come Necessita di revisione nella dashboard quando si sospetta un errore per la versione SDK 5.5.0 e successive. Si prega di confermare manualmente il comportamento corretto per questo caso.
Android nativo: Dialoghi personalizzati / Modali
Quando si implementano finestre di dialogo o finestre modali personalizzate che non estendono i controlli nativi, è possibile che si ottengano risultati per le viste dietro la finestra modale. In questo caso, consigliamo di non eseguire il nostro strumento su queste finestre di dialogo o modali personalizzate, ma di controllarle manualmente per verificare che si comportino come desiderato con la tecnologia assistiva.
Pannello di controllo Web
Screenshot mancante
Se lo screenshot non è presente nella pagina dei dettagli della scansione, è possibile che l'app impedisca l'acquisizione degli screenshot. Spesso ciò avviene per motivi di sicurezza nell'applicazione di produzione. Considera di rimuovere questo requisito dalla build di test per consentire la piena funzionalità nella dashboard mobile di axe DevTools.
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)