Note di rilascio di Axe DevTools Mobile agosto 2026
Agosto 2026
Versioni dei componenti
Appium
iOS
- Driver Appium 2 per iOS (axe-appium2-xcuitest-driver v2.6.0)
- (Forked da XCUITest v9.10.4)
- Driver Appium 3 per iOS (axe-appium3-xcuitest-driver v1.5.0)
- (Forked da XCUITest v12.1.3)
Come aggiornare: Driver Appium per iOS
Android
- Driver Appium 2 per Android (axe-appium2-uiautomator2-driver v2.6.0)
- (Forked da UiAutomator2 v4.2.8)
- Driver Appium 3 per Android (axe-appium3-uiautomator2-driver v1.5.0)
- (Forked da UiAutomator2 v8.2.2)
Come aggiornare: Driver Appium per Android
Novità?
Driver Appium
Stai utilizzando la scansione automatica con uno dei nostri driver Appium? Ora puoi mettere in pausa la sessione di scansione automatica attiva prima di una schermata che non dovrebbe essere inclusa nei risultati della scansione. Puoi riprendere la sessione di scansione dopo aver superato schermate sensibili. Trova dettagli ed esempi di implementazione per Scansione automatica con Appium.
Problemi noti
Se stai riscontrando uno dei seguenti problemi, contattaci a helpdesk@deque.com o support.deque.com. Saremo in grado di avvisarti una volta risolto o di fornirti una soluzione alternativa identificata se non è elencata.
- Axe DevTools Mobile esegue test automatizzati su applicazioni iOS native, Android native e React Native. Contatta il tuo rappresentante Deque per soluzioni di test di accessibilità sul tuo stack tecnologico.
- Anche se potresti ottenere alcuni risultati da visualizzazioni web o PDF renderizzati, ti consigliamo vivamente di utilizzare Axe DevTools per il Web o Axe Monitor per i test di accessibilità più completi per il web.
iOS
Risultati incompleti per la regola di supporto del tipo dinamico su schermate con segni di percentuale nel testo
Su iOS 26 e versioni successive, se una schermata contiene testo con un segno di percentuale (ad esempio, un'etichetta di testo con scritto "50% di sconto"), la regola di supporto del tipo dinamico potrebbe risultare incompleta invece di superata o fallita. Questa regola si basa su un audit di accessibilità fornito da Apple, e tale audit interrompe il test quando incontra segni di percentuale. Per mantenere il tuo test in esecuzione, la nostra regola salta il controllo per quella schermata e riporta incompleta per ogni elemento contenente un segno di percentuale. Tutte le altre regole funzionano normalmente sulla schermata, e le altre schermate non sono influenzate.
Non è richiesto alcun intervento, poiché la scansione si completerà comunque. Per controllare il supporto del tipo dinamico per queste schermate, aumenta la dimensione del testo sul tuo dispositivo in **Impostazioni** > **Accessibilità** > **Schermo e testo** > **Testo grande**, e conferma che il testo sulla schermata si adatta appropriatamente. Questo problema è stato riportato ad Apple. (#2985)
Contrasto del colore può essere eseguito su elementi costituiti solo da icone a causa dell'OCR
La regola del Contrasto del colore utilizza il framework Vision di Apple (Optical Character Recognition, o OCR) per leggere il testo all'interno dei confini di un elemento. L'OCR può occasionalmente identificare erroneamente piccoli glifi simili a icone - come i chevron di freccia indietro (<), i punti elenco, i simboli decorativi - come testo. Quando ciò accade, la regola del Contrasto del colore si applica a un elemento che non contiene testo leggibile, il che può produrre un risultato per un pulsante costituito solo da icone. Poiché l'output dell'OCR non è deterministico tra le scansioni, lo stesso elemento potrebbe apparire nei risultati del Contrasto del colore in una scansione e risultare "NON APPLICABILE" nella successiva. Questo è una caratteristica nota dell'OCR, non un errore nella regola.
Per aggirare questo problema, puoi utilizzare le ignore API per sopprimere i risultati del Contrasto del colore per gli elementi interessati.
// Ignore Color Contrast for a specific element by accessibility identifier
axeDevTools?.configuration.ignore(rulesFor: [
"backButton": [AxeRuleId.ColorContrast.toString()]
])
// Or ignore Color Contrast globally
axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())Per saperne di più su ignorare le regole.
Falso positivo del titolo dello schermo nelle app Flutter
Flutter non mappa AppBar.title alla proprietà del titolo dello schermo nativo - UIViewController.title, causando il fallimento della regola del titolo dello schermo su tutte le schermate Flutter, indipendentemente dalla presenza di un titolo descrittivo.
Questa è una limitazione nota della piattaforma Flutter monitorata in flutter/flutter#185894.
Falsi positivi per la regola del Contrasto del colore con sfondi a gradiente su schermi piccoli
Quando si eseguono controlli di accessibilità su schermi di piccole dimensioni o con caratteri di dimensioni ridotte, la regola del Contrasto del colore può riportare falsi positivi per sfondi a gradiente. In tali casi, può non essere in grado di determinare il colore in primo piano e invece confrontare i colori di sfondo tra loro, risultando in un fallimento.
Per aggirare questo problema, prova a eseguire controlli di accessibilità su dispositivi più grandi. In alternativa, puoi scegliere di ignorare la regola nei tuoi test e controllare manualmente il Contrasto del colore per queste visualizzazioni.
Inaccurato isVisible proprietà da XCTest
Le API di accessibilità di Apple possono segnalare erroneamente il contenuto web all'interno di WKWebView come "isVisible", anche quando la web view è coperta da sovrapposizioni native (come viste modali, avvisi o altri elementi dell'interfaccia utente nativa). Ciò si verifica perché il sistema di accessibilità verifica se il contenitore di WKWebView è visibile, piuttosto che se il suo contenuto web è effettivamente non ostruito e percepibile dall'utente.
Bug di accessibilità in iOS 26 con gli stepper
iOS 26 contiene un bug di accessibilità in cui i pulsanti stepper predefiniti non annunciano "disattivato" tramite la Tecnologia Assistiva per indicare che non sono abilitati. Di conseguenza, le regole di iOS vedono questi pulsanti come abilitati anche se non lo sono. È stato presentato un rapporto di bug ad Apple, ma fino a quando questo non sarà risolto, le seguenti regole potrebbero riportare risultati sui pulsanti stepper disattivati: AssociatedText, InaccessibleAction, e ColorContrast.
Fino a quando Apple non correggerà questo bug, la soluzione sarà [ignorare le regole](ios-ignore-rule). I pulsanti stepper predefiniti hanno gli identificatori "Decrement" e "Increment", e possono essere ignorati per identificatore se necessario.
Color Contrast rule does not run when text and background colors are the same
Our Color Contrast rule depends on Machine Learning to detect text, which ensures that the text being scanned is visible to users of your application. In cases where the text contained in a view is the same color as the background, our Machine Learning algorithm is unable to detect if any text is present, so the Color Contrast rule does not run on this view.
Falso positivo: LabelInName e LabelAtFront in SwiftUI e app multi-piattaforma
Alcune schermate possono riportare falsi positivi con LabelInName e LabelAtFront a causa di una proprietà associatedText errata rilevata (#1622)
Regole contro i controlli annidati
Mentre esaminavamo un miglioramento per le nostre regole, abbiamo scoperto che in XCTest i controlli annidati non vengono restituiti nell'albero di accessibilità. È stato depositato un rapporto di bug ad Apple. (#1110)
La regola del nome del ImageView richiede la revisione dei risultati per le app UIKit
Nelle app UIKit, un'immagine senza un `accessibilityLabel` non è focalizzabile con la tecnologia assistiva di default.
Le proprietà che utilizziamo per verificare la focalizzabilità da Apple possono essere imprecise quando su un'immagine è impostato un `accessibilityIdentifier`. A causa di questo comportamento inaspettato, i risultati relativi ai problemi del nome del ImageView nelle app UIKit saranno riportati come Needs Review. È stato presentato un rapporto di bug ad Apple. (#1633)
Falso positivo: in Scroll View, Label In Name, Label al Front e v2.11.0 Image View Name & ActiveControlName
Stiamo lavorando attivamente a correzioni per i seguenti falsi positivi e aggiorneremo questo elenco man mano che le correzioni verranno rilasciate.
In Scroll View
Il testo all'interno di elementi con comportamento da banner, intestazioni/piè di pagina adesivi, pulsanti di azione flottanti e viste a schede personalizzate può essere contrassegnato con un messaggio di "Needs Review" o "Fail". Per rendere questi elementi disponibili a coloro che richiedono testo più grande, utilizzare UILargeContentViewer. (#622, #2077)
v2.11.0 Image View Name & Active Control Name
Se un UIImageView ha un accessibilityIdentifier impostato ma non è focalizzabile con VoiceOver, e ha controlli focalizzabili annidati al suo interno, Active Control Name potrebbe segnalare un falso positivo sull'UIImageView. Rimuovendo il accessibilityIdentifier si risolve il problema. È stato depositato un rapporto di bug ad Apple. (#1633)
Label In Name and Label At Front
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 vista, potrebbe essere rilevato il testo sbagliato nelle vicinanze, causando il fallimento di queste regole. (#1622)
Android
Falsi positivi di Label at Front con testo visibile oscurato
La regola Label at Front verifica che l'etichetta visibile di un elemento sia all'inizio del suo testo annunciato. Un fallimento della regola può verificarsi quando il testo visibile di un elemento interattivo contiene un'abbreviazione (es. "GB", "km") o un identificatore oscurato/troncato, e l'annuncio di accessibilità si compone delle parole rappresentate (es. "gigabyte", "chilometri"), anche se questo è il modello raccomandato per rendere il contenuto abbreviato o troncato compatibile con i lettori di schermo.
Se la prima parte dell'etichetta visibile di un elemento interattivo corrisponde all'inizio dell'annuncio del lettore di schermo e solo la parte abbreviata/oscurata è diversa, il risultato segnalato può essere tranquillamente ignorato. Verificate con un lettore di schermo che l'annuncio completo venga letto come previsto.
Potenziali problemi di accessibilità per il testo focalizzabile
Quando si utilizzano testi decorativi in viste come "Icone di Contatto", è possibile introdurre un problema di accessibilità. Se si utilizza una vista di testo per visualizzare lettere anziché generare immagini con le lettere desiderate come vettori, e poi si dichiara che tale vista di testo non è importante per l'accessibilità, non saremo in grado di determinare con certezza se avete introdotto una violazione dell'accessibilità.
Se modificate il testo focalizzabile per ignorare due o meno caratteri, potreste involontariamente ignorare molti pulsanti a una parola in varie lingue (es. "OK", "No", "Sí"). Per evitare questi problemi, dovreste prendere le lettere desiderate dalla parola che volete rappresentare nell'icona e generare le lettere come parte dell'immagine anziché come viste di testo separate. `FocusableText` non verrà quindi eseguito su quelle viste.
Falso positivo del titolo della schermata nelle app Flutter
Flutter non mappa AppBar.title alla proprietà del titolo della schermata nativa - Activity.setTitle, causando il fallimento della regola del titolo della schermata su tutte le schermate Flutter indipendentemente dalla presenza di un titolo descrittivo.
Questa è una limitazione nota della piattaforma Flutter segnalata in flutter/flutter#185894.
Falso positivo nella rilevazione del testo annunciato
In alcuni casi, la tecnologia assistiva si basa su AccessibilityEvent delle descrizioni di sistema Android per annunciare informazioni all'utente quando nessun altro annuncio è disponibile. Poiché AccessibilityEventvengono attivati da azioni dell'utente, non siamo in grado di accedere alla descrizione corretta se queste informazioni non sono fornite.
Per evitare questo problema, assicuratevi che tutte le viste rilevanti siano contrassegnate come importanti per l'accessibilità. Questo permetterà a Talkback di accedere alle informazioni dalla vista, che il nostro strumento potrà quindi rilevare.
La regola del contrasto di colore non viene eseguita quando i colori del testo e dello sfondo sono gli stessi
La nostra regola sul contrasto di colore dipende dall'Apprendimento Automatico per rilevare il testo, il che garantisce che il testo analizzato sia visibile agli utenti della vostra applicazione. Nei casi in cui il testo contenuto in una vista è dello stesso colore dello sfondo, il nostro algoritmo di Apprendimento Automatico non è in grado di rilevare se è presente del testo, quindi la regola di contrasto di colore non viene eseguita su questa vista.
EditTextName su Android 7 (SDK 24-25)
Le app scritte con XML che utilizzano la funzione di testo di suggerimento possono vedere falsi positivi con la EditTextName regola. Il testo di suggerimento non è stato introdotto fino ad Android 8 (SDK 26). Utilizzando questo elemento nella vostra app XML verrà assegnato il testo di suggerimento al valore del campo di input. Le versioni più recenti di Android sono meglio attrezzate per rendere questa esperienza accessibile.
Per superare questo problema, la nostra prima raccomandazione è di eseguire i test su versioni più recenti di Android. Tuttavia, se è importante che l'app sia accessibile su versioni precedenti di Android, potresti considerare di evitare l'uso della funzionalità hintText , poiché non è ufficialmente supportata.
Ritorno dei risultati dalle viste Android nascoste
Potresti vedere risultati per viste che sono nascoste dietro altre viste sullo schermo. Queste viste nascoste non sono disponibili per la tecnologia assistiva, ma Axe DevTools Mobile le riporta comunque come problemi.
Stiamo lavorando a una soluzione per questo problema complesso. Nel frattempo, se TalkBack non riesce a raggiungere queste viste, puoi ignorare i problemi corrispondenti. Non richiedono una soluzione per garantire l'accessibilità.
Errore durante l'esecuzione di ML Kit Text Detection
Il rilevamento di testo di ML Kit è richiesto in molte regole di Axe DevTools Mobile per garantire l'accuratezza dei risultati. La libreria ML Kit dovrebbe essere automaticamente importata quando si fa riferimento a Axe DevTools Mobile nei test automatici di Espresso o UIAutomator. In alcuni casi, tuttavia, l'importazione automatica non avviene e vedrai il seguente errore nel logcat:
Axe DevTools Android: Errore durante l'esecuzione di mlKit Text Detection: MlKitContext non è stato inizializzato.
Per superare questo problema, dovresti importare manualmente la libreria ML Kit nel tuo progetto. Nel tuo build.gradle , aggiungi quanto segue sotto le dipendenze:
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'Trova un esempio completo dell'importazione della libreria ML Kit nella sezione Android Mobile SDK Getting Started, sotto Implementazione
Spaziatura del target di tocco and Jetpack Compose
La regola di spaziare il target di tocco attualmente non viene eseguita su alcun componente slider scritto in Jetpack Compose. Al momento, non è possibile intraprendere alcuna azione. Tuttavia, è in arrivo una soluzione!
Errore nel salvataggio dei risultati in locale su API 30
Su Android API 30, una delle posizioni in cui tentiamo di salvare i risultati localmente genera un errore di permessi. Il risultato verrà comunque salvato come file JSON nonostante venga visualizzato questo errore. L'errore può essere soppresso commentando il codice nel blocco seguente:
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'
// finalizedBy {
// fetchAndroidFolderAxeReportsTask
// }
}Si noti che questo codice dovrebbe essere commentato solo per API 30 poiché causerà problemi quando si salva in locale per altri livelli API.
Rilevamento dello scorrimento su App Ibride e App Cross-Platform
In alcune app ibride e cross-platform, potremmo restituire risultati inaspettati quando gli elementi in una vista a scorrimento sono parzialmente fuori dallo schermo. Per testare un elemento per l'accessibilità, assicurati che sia completamente sullo schermo prima di eseguire la scansione.
App Analyzer: pulsante di azione flottante scompare
Introdotta con API 31 (Android 12) è la capacità di nascondere le sovrapposizioni non di sistema. Per utilizzare l'app Axe Analyzer, assicurati che questa impostazione non sia attivata. Se hai scelto di utilizzare questa funzione per i suoi miglioramenti alla sicurezza, ti consigliamo di lasciarla disattivata per le build di test interne dove puoi utilizzare i dati di test in sicurezza ed eliminare in questo modo le preoccupazioni per la sicurezza. Note: this setting does not affect Google's accessibility scanner app as it's considered a system overlay.
Per utilizzare l'app Axe Accessibility Analyzer, aggiorna tutte le chiamate al metodo setHideOverlayWindows(true) sull'attività interessata. setHideOverlayWindows(false) nei finestrini dell'attività interessata.
Screenshot mancante (Black Box) nella Dashboard
Per sbloccare la piena funzionalità di Axe DevTools per Mobile, assicurati che gli screenshot siano abilitati. Si consiglia di abilitare gli screenshot su una versione di debug o test della tua app che utilizza dati simulati per evitare problemi di sicurezza. Consulta la nostra guida per abilitare gli screenshot nelle app Android.
Arresto anomalo quando minifiedEnabled è impostato su true
Se minimizzi la tua build, vedrai un arresto anomalo con un errore nel log che segnala che un adattatore non è stato trovato quando si tenta di accedere alla libreria Axe DevTools. Disabilita il minify per le tue build di debug con Axe DevTools implementato. (#729)
Le build con r8 abilitato generano un errore
Una build con r8 abilitato può tentare di minimizzare la libreria axeDevTools, risultando in 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.** { *; }Messaggi di errore quando si utilizzano le API Compose
Le API Compose sono deprecate, ti invitiamo a utilizzare le API indipendenti dal layout per continuare a ricevere aggiornamenti. Se continui a utilizzare le API Compose e incontri un errore simile a `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` o `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, fai riferimento a API Compose setTestTag.
MAUI: regola Nome Testo Modifica
A causa delle limitazioni dell'architettura dell'app MAUI nel sistema Android, la regola Nome Testo Modifica verrà mostrata come Da revisionare 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 / Modali Personalizzati
Quando implementi dialoghi o modali personalizzati che non estendono i controlli nativi, potresti ricevere risultati per le viste dietro al modale. In questo caso, raccomandiamo di non eseguire il nostro strumento contro questi dialoghi o modali personalizzati e invece verificare manualmente che si comportino come desiderato con la tecnologia assistiva.
Dashboard Web
Screenshot Mancante
Se lo screenshot manca dalla pagina dei dettagli della scansione, la tua app potrebbe impedire la cattura degli screenshot. Spesso ciò avviene per motivi di sicurezza nella tua applicazione di produzione. Considera la possibilità di rimuovere questo requisito per la tua build di test per consentire la piena funzionalità nella Dashboard di Axe DevTools Mobile.
Alcuni nomi di scansioni Android non sono formattati
Alcuni nomi di scansioni Android che sono predefiniti come titolo dello schermo appariranno come nome completo della classe inclusa l'identificativo del pacchetto. In una versione futura, questo verrà risolto in modo che il titolo dello schermo sia formattato in un nome più leggibile. Come soluzione temporanea, puoi impostare il nome della scansione dalla dashboard o dai framework. (#1643)
