Note di rilascio di Axe DevTools Mobile del 20 luglio 2026
20 luglio 2026
Versioni dei componenti
Maestro
- Axe DevTools Mobile per Maestro (axe-devtools-mobile-maestro v1.0.0)
- (Derivato da Maestro v2.6.0)
Novità
Axe DevTools Mobile per Maestro
Axe DevTools Mobile per Maestro porta uno scanner di accessibilità integrato a Maestro, alimentato da Axe DevTools per Mobile SDK. Quando esegui i tuoi flussi di test UI con esso, puoi facilmente invocare controlli di accessibilità automatizzati direttamente nel tuo YAML con due comandi: axeStartScanSession e axeScan.
Problemi noti
Se riscontri uno dei problemi seguenti, contattaci a helpdesk@deque.com o support.deque.com. Potremo così avvisarti una volta risolto il problema o di una soluzione se nessuna è elencata.
- I test automatizzati di Axe DevTools Mobile funzionano su applicazioni native iOS, native Android e React Native. Si prega di contattare il proprio rappresentante Deque per soluzioni di test di accessibilità per il proprio stack tecnologico.
- Sebbene si possano ottenere alcuni risultati da visualizzazioni web o PDF renderizzati, consigliamo vivamente di testare con Axe DevTools for Web o Axe Monitor per i test di accessibilità più completi per il web.
iOS
Il Contrast Color potrebbe eseguire il test sugli elementi con sole icone a causa di OCR
La regola del Contrast Color utilizza il framework Vision di Apple (Optical Character Recognition, o OCR) per leggere il testo all'interno dei limiti di un elemento. L'OCR può occasionalmente identificare erroneamente piccoli glifi simili a icone - come frecce di ritorno (<), punti, simboli decorativi - come testo. Quando ciò accade, la regola del Contrast Color si applica a un elemento che non contiene testo leggibile, il che può produrre un risultato per un pulsante con solo icone. Poiché l'output dell'OCR non è deterministico tra le scansioni, lo stesso elemento può apparire nei risultati del Contrast Color in una scansione e essere riportato come "INAPPLICABILE" nella successiva. Questo è una caratteristica nota dell'OCR, non un errore nella regola.
Per aggirare questo problema, si possono utilizzare le ignore API per sopprimere i risultati del Contrast Color per gli elementi interessati.
// Ignore Color Contrast for a specific element by accessibility identifier
axeDevTools?.configuration.ignore(rulesFor: [
"backButton": [AxeRuleId.ColorContrast.toString()]
])// Oppure ignora globalmente il Contrast Color axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())
Scopri di più su ignorare le regole.
Falso positivo: Titolo della schermata nelle app Flutter
Flutter non mappa AppBar.title alla proprietà native del titolo della schermata - UIViewController.title, causando il fallimento della regola del Titolo della schermata su tutte le schermate Flutter, indipendentemente dal fatto che un titolo descrittivo sia presente.
Questo è un limite noto della piattaforma Flutter tracciato in flutter/flutter#185894.
Falsi positivi per la regola del Contrast Color con sfondi sfumati su schermi piccoli
Quando vengono eseguiti controlli di accessibilità su schermi di piccole dimensioni o con dimensioni del carattere ridotte, la regola del Contrast Color può riportare falsi positivi per sfondi sfumati. In tali casi, può non essere in grado di determinare il colore del primo piano e invece confrontare i colori dello 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 Contrast Color per queste visualizzazioni.
Inaccurata isVisible proprietà da XCTest
Le API di accessibilità di Apple possono riportare erroneamente il contenuto web all'interno di WKWebView come "isVisible", anche quando la visualizzazione web è coperta da sovrapposizioni native (come viste modali, avvisi o altri elementi UI nativi). Questo avviene perché il sistema di accessibilità verifica se il contenitore WKWebView stesso è visibile, piuttosto che se il suo contenuto web è effettivamente sgombrato e percepibile per l'utente.
Bug di accessibilità iOS 26 con stepper
iOS 26 contene un bug di accessibilità in cui i pulsanti stepper predefiniti non annunciano "dismesso" dalla Tecnologie Assistive per indicare che non sono abilitati. Di conseguenza, le regole iOS vedono anche questi pulsanti come abilitati anche se non lo sono. Un bug è stato segnalato a Apple, ma fino a quando questo non sarà risolto, le seguenti regole possono riportare risultati su pulsanti stepper disabilitati: AssociatedText, InaccessibleActione ColorContrast.
Fino a quando Apple non risolverà questo bug, la soluzione sarà di [ignorare le regole](ios-ignore-rule). I pulsanti stepper predefiniti hanno gli identificatori "Decrement" e "Increment", e possono essere ignorati in base all'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 nelle app SwiftUI e Cross Platform
Alcune schermate possono riportare falsi positivi con LabelInName e LabelAtFront a causa di una proprietà associatedText errata trovata (#1622)
La regola Supports Dynamic Type non funziona con il simulatore iOS 15 Pro
C'è un problema che riguarda il simulatore iPhone 15 Pro che impedisce l'esecuzione della regola Supports Dynamic Type. Se sei iscritto alla regola Supports Dynamic Type, non sarai in grado di testarla utilizzando un simulatore iPhone 15 Pro. Un bug è stato segnalato a Apple.
Regole contro controlli nidificati
Mentre esaminavamo un miglioramento per le nostre regole, abbiamo scoperto che in XCTest, i controlli nidificati non vengono restituiti nell'albero di accessibilità. Un bug è stato segnalato a Apple. (#1110)
La regola del Nome ImageView necessita di 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 inaccurate quando un `accessibilityIdentifier` è impostato sull'immagine. A causa di questo comportamento inaspettato, i risultati per i problemi di Nome ImageView nelle app UIKit saranno riportati come Da Revisionare. È stato segnalato un bug ad Apple. (#1633)
Falso Positivo: In Scroll View, Label In Name, Label at Front, e v2.11.0 Image View Name & ActiveControlName
Stiamo lavorando attivamente su 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 comportanti tipo banner può essere contrassegnato con un messaggio "Da revisionare". Per rendere questi elementi accessibili a coloro che necessitano di testo più grande, usa UILargeContentViewer. (#622)
v2.11.0 Image View Name & Active Control Name
Se un UIImageView ha un `accessibilityIdentifier` impostato ma non è focalizzabile da VoiceOver, e ha controlli focalizzabili incastonati al suo interno, ActiveControlName potrebbe riportare un falso positivo sull'UIImageView. Rimuovendo l'`accessibilityIdentifier` si risolve il problema. È stato segnalato un 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, il testo vicino sbagliato può essere rilevato causando il fallimento di queste regole. (#1622)
Android
Falsi positivi del 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 identificativo oscurato/troncato, e l'annuncio di accessibilità consiste delle parole rappresentate (es. "gigabyte", "chilometri"), sebbene questo sia il modello raccomandato per rendere il contenuto abbreviato o troncato accessibile ai lettori di schermo.
Se la prima parte dell'etichetta visibile di un elemento interattivo coincide con l'inizio dell'annuncio del lettore di schermo e solo la parte abbreviata/oscurata differisce, il risultato segnalato può essere ignorato in sicurezza. Verifica con un lettore di schermo che l'annuncio completo sia letto come previsto.
Potenziali problemi di accessibilità per il Testo Focalizzabile
Quando si utilizza testo decorativo in viste come "Icone di Contatto", è possibile introdurre un problema di accessibilità. Se utilizzi una vista di testo per mostrare lettere invece di generare immagini con le lettere desiderate come vettori, e poi dichiari che quella vista di testo non è importante per l'accessibilità, non saremo in grado di determinare in modo affidabile se hai introdotto una violazione di accessibilità.
Se modifichi il testo focalizzabile per ignorare due o meno caratteri, potresti inavvertitamente ignorare molti pulsanti monosillabici in varie lingue (es. "OK", "No", "Sí"). Per evitare questi problemi, dovresti prendere le lettere desiderate dalla parola che vuoi rappresentare nell'icona e generare le lettere come parte dell'immagine invece che come viste di testo separate. `FocusableText` allora non verrà 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 dal fatto che sia presente un titolo descrittivo.
Questa è una limitazione nota della piattaforma Flutter tracciata in flutter/flutter#185894.
Falso positivo del rilevamento del testo annunciato
In alcuni casi, la tecnologia assistiva si basa su AccessibilityEvent descrizioni dal sistema Android per annunciare informazioni all'utente quando nessun altro annuncio è disponibile. Dal momento che 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, assicurati 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à poi rilevare.
La regola sul Contrasto del Colore non si attiva quando il testo e i colori di sfondo sono gli stessi
La nostra regola sul Contrasto del Colore dipende dall'Apprendimento Automatico per rilevare il testo, il che assicura che il testo scansionato sia visibile agli utenti della tua 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, perciò la regola sul Contrasto del 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 registrare falsi positivi con la regola EditTextName . Il testo di suggerimento non è stato introdotto fino ad Android 8 (SDK 26). Utilizzando questo elemento nella tua app XML assegnerà il testo di suggerimento al valore del campo di input di testo. 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 tuoi test su versioni più recenti di Android. Se è importante che l'app sia accessibile su versioni precedenti di Android, potresti considerare di evitare l'uso della funzione hintText , in quanto non è supportata ufficialmente.
Ritorno di risultati da 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 può raggiungere queste viste, puoi ignorare i problemi corrispondenti. Non richiedono una soluzione per garantire l'accessibilità.
Errore durante l'esecuzione del Rilevamento del Testo di ML Kit
Il rilevamento del testo di ML Kit è richiesto in molte delle 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 tuoi test automatizzati Espresso o UIAutomator. In alcuni casi tuttavia, l'importazione automatica non avviene e vedrai il seguente errore nel logcat:
Axe DevTools Android: Error while running mlKit Text Detection: MlKitContext has not been initialized.
Per risolvere questo problema, dovresti importare manualmente la libreria ML Kit nel tuo progetto. Nel tuo file build.gradle dell'applicazione, aggiungi quanto segue sotto dipendenze:
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'
Find a full working example of the ML Kit library being imported in the Android Mobile SDK Getting Started section, under Implementazione
Spaziatura del Target Touch e Jetpack Compose
La regola della Spaziatura del Target Touch attualmente non viene eseguita su alcun componente slider scritto in Jetpack Compose. Al momento, non è possibile intraprendere azioni. Tuttavia, è in arrivo una soluzione!
Errore durante il salvataggio dei risultati localmente su API 30
Su Android API 30, una delle posizioni in cui tentiamo di salvare i risultati localmente presenta un errore di permessi. Il risultato sarà comunque salvato come file JSON nonostante venga visualizzato questo errore. L'errore può essere soppresso 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
// }
}
Tieni presente che questo codice deve essere commentato solo per API 30 poiché causerebbe problemi al salvataggio 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 di scorrimento sono parzialmente fuori schermo. Per testare un elemento per l'accessibilità, assicurati che sia completamente sullo schermo prima di eseguire la scansione.
Analyzer App: Bottone Azione Fluttuante Scompare
Introdotta con l'API 31 (Android 12) è la possibilità 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 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. Note: this setting does not affect Google's accessibility scanner app as it's considered a system overlay.
Per poter utilizzare l'app Axe Accessibility Analyzer, aggiorna tutte le chiamate al metodo setHideOverlayWindows(true) su tutte le finestre di attività interessate. setHideOverlayWindows(false) su tutte le finestre delle attività coinvolte.
Schermata mancante (scatola nera) nel Dashboard
Per sbloccare la piena funzionalità di Axe DevTools per Mobile, assicurati che le schermate siano abilitate. Raccomandiamo di abilitare le schermate su una versione di debug o test della tua app che utilizza dati di esempio per evitare preoccupazioni di sicurezza. Consulta la nostra guida per abilitare le schermate nelle app Android.
Interruzione quando minifiedEnabled è impostato su true
Se minimizzi la tua build, vedrai un'interruzione con un registro di errore che indica che un adattatore non può essere trovato quando si tenta di accedere alla libreria Axe DevTools. Disattiva la minimizzazione per le tue build di debug con Axe DevTools implementato. (#729)
Le build con r8 attivato generano un errore
Una build con r8 attivato potrebbe 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)To resolve this error add the following line to your ProGuard file to keep axeDevTools classes:
keep class com.deque.** { *; }
Messaggi di errore quando si utilizzano le API di Compose
Le API di Compose sono deprecate, utilizza invece le API agnostiche rispetto al layout per continuare a ricevere aggiornamenti. Se continui a utilizzare le API di Compose e riscontri 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 Compose setTestTag API.
MAUI: Regola Nome Edit Text
A causa delle limitazioni dell'architettura delle app MAUI nel rendere nell'ecosistema Android, la regola Nome Edit Text apparirà come Necessita Revisione nel dashboard quando si sospetta un fallimento per la versione SDK 5.5.0 e successive. Conferma manualmente il comportamento corretto in questo caso.
Android Nativo: Dialoghi/Moduli Personalizzati
Quando implementi dialoghi o moduli personalizzati che non estendono i controlli nativi, potresti ottenere risultati per le viste dietro il modulo. In questo caso, consigliamo di non eseguire il nostro strumento contro questi moduli o dialoghi personalizzati e invece controllarli manualmente per garantire che si comportino con le tecnologie assistive come desiderato.
Dashboard Web
Schermata Mancante
Se la schermata manca dalla pagina dei dettagli della scansione, la tua app potrebbe impedire la cattura delle schermate. 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à nel Dashboard Mobile di Axe DevTools.
Alcuni nomi di scansione Android sono non formattati
Alcuni nomi di scansione Android che predefinito al titolo dello schermo appariranno come il nome completo della classe incluso l'identificatore del pacchetto. In un futuro rilascio, questo sarà risolto in modo che il titolo dello schermo sia formattato in un nome più leggibile. Come soluzione temporanea, puoi impostare il nome della scansione dal dashboard o dai framework. (#1643)
