Note di rilascio di Axe DevTools Mobile 30 giugno 2026
30 giugno 2026
Versioni dei componenti
iOS
- SDK iOS (axeDevToolsXCUI v4.0.1)
Come aggiornare: SDK iOS
Android
- SDK Android (axe-devtools-android v9.0.0)
- Plugin Android Gradle (axe-devtools-android-plugin v1.1.0)
- Android Analyzer (Axe Accessibility Analyzer v3.0.0)
Come aggiornare: Plugin Android Gradle, Analyzer Android
Novità
Nuova regola iOS: Testo ritagliato
Deque ha un impegno costante nel fornire e ottimizzare le regole che rilevano accuratamente i veri problemi di accessibilità. La nostra nuova regola per iOS aiuta a garantire che il contenuto rimanga visibile agli utenti, indipendentemente dalla loro dimensione preferita del testo. Scopri di più su questa regola: Testo ritagliato.
Nuove API
Puoi utilizzare le seguenti API quando esegui test mirati su iOS e Android.
- Chiamare
generateHtmlReportAndSummaryuna volta per test esegue produce un report HTML autonomo e lo salva localmente sul tuo dispositivo. startScanSessionavvia una sessione di test e si connette all'Axe Developer Hub, dove verranno pubblicati i risultati. Nota chestartSessionè stato deprecato a favore distartScanSession.
Percorso di output configurabile per i risultati
Ora puoi indicare il axeHtmlReportPath sia per la Scansione Automatica che per i Test Mirati su Android. Per impostazione predefinita, i risultati sono memorizzati in build/reports/AxeDevToolsMobileResults. Quando si utilizza la Scansione Automatica, i risultati vengono inviati automaticamente a questa posizione. Durante l'esecuzione di Test Mirati, è qui che i risultati verranno memorizzati utilizzando l'API generateHtmlReportAndSummary per costruire manualmente un report.
Allo stesso modo, la Scansione Automatica su iOS supporta ora una directory di output configurabile dall'utente per il report HTML e il riepilogo .txt. In precedenza, la posizione di output era codificata in ~/AxeDevToolsMobileResults.
Correzioni
iOS
- Risolto un problema con gli screenshot in modalità panorama su dispositivi fisici
- In SwiftUI, le scansioni a schermo intero non vengono più erroneamente contrassegnate come parziali
- Prestazioni migliorate della Scansione Automatica
- Miglioramenti nella precisione delle regole di Contrasto Colore e In ScrollView
Aggiornamenti
iOS
- L'output JSON della Scansione Automatica è ora consolidato sotto
AxeDevToolsMobileResults/axe-test-data axeProjectIdè ora richiesto inaxe_config.jsonper la Scansione Automatica
Deprecazioni e Rimozioni
iOS
- Il flusso di autenticazione deprecato
login(withUsername:andPassword:toServer:)è stato rimosso - Il metodo
startSession(apiKey: String, projectId: String, serverUrl: String)per inviare i risultati al Developer Hub con test mirati è stato deprecato, estartScanSession(apiKey: String, projectId: String, axeAccountUrl: String)è stato predisposto per sostituirlo - La proprietà di configurazione
axeServerUrlper la Scansione Automatica è stata deprecata, eaxeAccountUrlè stata predisposta per sostituirla
Android
- Il flusso di autenticazione deprecato
loginWithUsername(username: String, password: String, serverConfig: String)è stato rimosso - Il metodo
startSession(apiKey: String, projectId: String, serverUrl: String)per inviare i risultati al Developer Hub con test mirati è stato deprecato, estartScanSession(apiKey: String, projectId: String, axeAccountUrl: String)è stato predisposto per sostituirlo - La proprietà di configurazione
axeServerUrlper la Scansione Automatica è stata deprecata, eaxeAccountUrlè stata predisposta per sostituirla
Problemi noti
Se riscontri uno dei seguenti problemi, contattaci a helpdesk@deque.com o support.deque.com. Saremo in grado di notificarti una volta risolto o su una soluzione alternativa identificata se nessuna è elencata.
- I test automatizzati di Axe DevTools Mobile funzionano su applicazioni native iOS, native Android e React Native. Ti preghiamo di contattare 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 testare utilizzando Axe DevTools for Web o Axe Monitor per il test di accessibilità più completo per il web.
iOS
Il Controllo del Contrasto Colore può essere eseguito su elementi solo icona a causa dell'OCR
La regola del Contrasto Colore utilizza il framework Vision di Apple (Riconoscimento Ottico dei Caratteri, o OCR) per leggere il testo all'interno dei limiti di un elemento. L'OCR può occasionalmente identificare erroneamente piccoli glifi simili ad icone - come frecce indietro a chevron (<), elenchi puntati, simboli decorativi - come testo. Quando accade, la regola del Contrasto Colore viene eseguita su un elemento che non contiene testo leggibile, il che può produrre un risultato per un pulsante solo icona. Poiché l'output dell'OCR non è deterministico tra le scansioni, lo stesso elemento può apparire nei risultati del Contrasto Colore in una scansione e essere riportato come "NON APPLICABILE" nella successiva. Questa è una caratteristica nota dell'OCR, non un bug nella regola.
Per aggirare questo problema, puoi utilizzare le ignore API per sopprimere i risultati del Contrasto Colore 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 Contrasto Colore axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())
Scopri 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 tutti gli schermi Flutter indipendentemente dalla presenza di un titolo descrittivo.
Questa è una limitazione nota della piattaforma Flutter registrata in flutter/flutter#185894.
Falsi positivi per la regola del Contrasto Colore con sfondi a gradiente su schermi piccoli
Quando si eseguono controlli di accessibilità su dimensioni di schermo più piccole o con dimensioni di carattere ridotte, la regola del Contrasto Colore può riportare falsi positivi per gli sfondi a gradiente. In tali casi, potrebbe non essere in grado di determinare il colore di primo piano e confrontare invece i colori di sfondo tra loro, risultando in un errore.
Per aggirare questo problema, prova a eseguire i controlli di accessibilità su dispositivi più grandi. In alternativa, puoi scegliere di ignorare la regola nei tuoi test e controllare manualmente il Contrasto Colore per queste visualizzazioni.
Proprietà inaccurata isVisible da XCTest
Le API di accessibilità di Apple possono riportare erroneamente i contenuti 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). Questo accade perché il sistema di accessibilità verifica se il contenitore WKWebView stesso è visibile, piuttosto che se il suo contenuto web è effettivamente non ostruito e percepibile per l'utente.
Bug di accessibilità di iOS 26 con stepper
iOS 26 contiene un bug di accessibilità in cui i pulsanti stepper predefiniti non annunciano "disattivato" da parte della Tecnologia Assistiva per indicare che non sono abilitati. Di conseguenza, le regole di iOS vedono anche questi pulsanti come abilitati, anche se non lo sono. Una segnalazione di bug è stata depositata presso Apple, ma finché non sarà risolto, le seguenti regole potrebbero riportare risultati su pulsanti stepper disattivati: AssociatedText, InaccessibleAction, e 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 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 multipiattaforma
Alcuni schermi possono segnalare falsi positivi con LabelInName e LabelAtFront a causa di un'errata proprietà associatedText trovata (#1622)
La regola Supports Dynamic Type non funziona con il simulatore iOS 15 Pro
C'è un problema che interessa il simulatore di iPhone 15 Pro che impedisce l'esecuzione della regola Supports Dynamic Type. Se sei iscritto alla regola Supports Dynamic Type, non potrai testarla utilizzando un simulatore di iPhone 15 Pro. Un bug è stato segnalato a Apple.
Regole contro i controlli annidati
Durante l'analisi di un miglioramento delle nostre regole, abbiamo scoperto che in XCTest, i controlli annidati non vengono restituiti nell'albero dell'accessibilità. Un bug è stato segnalato a Apple. (#1110)
La regola sul nome dell'ImageView necessita di una revisione dei risultati per le app UIKit
Nelle app UIKit, un'immagine senza un `accessibilityLabel` non è selezionabile con la tecnologia assistiva per impostazione predefinita.
Le proprietà che usiamo per controllare la selezionabilità da Apple possono essere imprecise quando un `accessibilityIdentifier` è impostato sull'immagine. A causa di questo comportamento inatteso, i risultati per le problematiche del nome dell'ImageView nelle app UIKit saranno segnalati come Necessita Revisione. Un rapporto di bug è stato inviato a Apple. (#1633)
Falso positivo: In Scroll View, Label In Name, Label at Front, e v2.11.0 Image View Name & ActiveControlName
Stiamo lavorando attivamente per risolvere i seguenti falsi positivi e aggiorneremo questo elenco man mano che le correzioni verranno rilasciate.
In Scroll View
Il testo all'interno di elementi simili a banner può essere segnalato con un messaggio di "Necessita Revisione". Per rendere disponibili questi elementi a coloro che necessitano di testo più grande, utilizza UILargeContentViewer. (#622)
v2.11.0 Image View Name & Active Control Name
Se un UIImageView ha un `accessibilityIdentifier` impostato ma non è selezionabile da VoiceOver, e ha controlli selezionabili annidati al suo interno, ActiveControlName può segnalare un falso positivo sul UIImageView. Rimuovendo il `accessibilityIdentifier` si risolve il problema. Un bug è stato segnalato a 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 viste, il testo vicino errato potrebbe essere rilevato causando il fallimento di queste regole. (#1622)
Android
Potenziali problemi di accessibilità per il testo selezionabile
Quando si utilizza testo decorativo nelle viste come "Icone Contatti", è possibile introdurre un problema di accessibilità. Se stai utilizzando una vista di testo per visualizzare le lettere invece di generare immagini con le lettere desiderate come vettori, e quindi dichiari che quella vista di testo non è importante per l'accessibilità, non saremo in grado di determinare con affidabilità se hai introdotto una violazione dell'accessibilità.
Se modifichi testo selezionabile per ignorare due o meno caratteri, potresti inavvertitamente ignorare molti pulsanti di una parola in varie lingue (ad es. "OK", "No", "Sì"). Per evitare questi problemi, dovresti prendere le lettere desiderate dalla parola che desideri rappresentare nell'icona e generare le lettere come parte dell'immagine anziché come viste di testo separate. `FocusableText` quindi non si attiverà su queste viste.
Falso positivo del titolo dello schermo nelle app Flutter
Flutter non mappa AppBar.title alla proprietà del titolo dello schermo nativo - Activity.setTitle, causando il fallimento della regola del Titolo dello schermo su tutti gli schermi Flutter indipendentemente dalla presenza di un titolo descrittivo.
Questa è una limitazione nota della piattaforma Flutter registrata 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 attivate dalle 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à quindi rilevare.
La regola del contrasto di colore non si attiva quando i colori del testo e dello sfondo sono uguali
La nostra regola del contrasto di colore dipende dal Machine Learning per rilevare il testo, assicurando 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 Machine Learning non riesce a rilevare se è presente del testo, quindi la regola del contrasto di colore non si attiva su questa vista.
EditTextName su Android 7 (SDK 24-25)
Le app scritte con XML che utilizzano la funzione di testo suggerito possono vedere falsi positivi con la EditTextName regola. Il testo suggerito non è stato introdotto fino ad Android 8 (SDK 26). Utilizzare questo elemento nella tua app XML assegnerà il testo suggerito al valore del campo di input 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, tuttavia, potresti considerare di evitare l'uso della hintText funzione, poiché non è ufficialmente supportata.
Risultati di viste nascoste su Android
Potresti vedere risultati per visualizzazioni che sono nascoste dietro altre visualizzazioni sullo schermo. Queste visualizzazioni nascoste non sono disponibili per la tecnologia assistiva, ma Axe DevTools Mobile le segnala comunque come problemi.
Stiamo lavorando a una soluzione per questo problema complesso. Nel frattempo, se TalkBack non può raggiungere queste viste, puoi ignorare le problematiche corrispondenti. Essi non richiedono una soluzione per garantire l'accessibilità.
Errore durante l'esecuzione del rilevamento del testo di ML Kit
Il rilevamento del testo tramite ML Kit è richiesto in molte delle regole di Axe DevTools Mobile per garantire l'accuratezza dei risultati. La libreria ML Kit dovrebbe essere importata automaticamente quando si fa riferimento ad Axe DevTools Mobile nei tuoi test automatizzati Espresso o UIAutomator. Tuttavia, in alcuni casi, 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 superare questo problema, dovresti importare manualmente la libreria ML Kit nel tuo progetto. Nel tuo build.gradle file dell'applicazione, aggiungi il seguente sotto dependencies:
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 Implementation
Spaziatura del bersaglio tattile e Jetpack Compose
La regola della spaziatura del bersaglio tattile attualmente non viene applicata ai componenti slider scritti in Jetpack Compose. Al momento non è possibile intraprendere alcuna azione. 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 localmente i risultati presenta un errore di permessi. Nonostante questo errore venga visualizzato, 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 API 30 poiché causerà problemi quando si salva localmente per altri livelli di API.
Rilevamento dello scorrimento su app ibride e cross-platform
In alcune app ibride e cross-platform, potremmo ottenere risultati imprevisti quando gli elementi in una vista a scorrimento sono parzialmente fuori schermo. Per testare un elemento per l'accessibilità, assicurarsi che sia completamente sullo schermo prima di eseguire la scansione.
App Analyzer: il bottone azione flottante scompare
Introdotta con l'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 della sicurezza, ti consigliamo di lasciarla disattivata per le build di test interne dove puoi utilizzare dati di test in sicurezza e eliminare le preoccupazioni sulla sicurezza in questo modo. 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 qualsiasi chiamata al metodo setHideOverlayWindows(true) a setHideOverlayWindows(false) sulle finestre delle attività interessate.
Screenshot mancante (rappresentato da un riquadro nero) nel Dashboard
Per sbloccare la piena funzionalità di Axe DevTools per Mobile, assicurati che gli screenshot siano abilitati. Raccomandiamo di abilitare gli screenshot su una versione di debug o di test della tua app che utilizza dati simulati per evitare preoccupazioni sulla sicurezza. Controlla la nostra guida per abilitare gli screenshot nelle app Android.
Crash quando minifiedEnabled è impostato su true
Se riduci il tuo build, vedrai un crash con un errore che segnala che non è possibile trovare un adattatore quando si tenta di accedere alla libreria Axe DevTools. Disabilita la riduzione per i tuoi build di debug con Axe DevTools implementato. (#729)
Build con r8 abilitato generano un errore
Un build con r8 abilitato 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 con l'uso delle API Compose
Le API Compose sono deprecate, si prega di utilizzare le API agnostiche al layout per continuare a ricevere aggiornamenti. Se continuate a utilizzare le API Compose e riscontrate un errore come `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` o `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, si prega di fare riferimento a API Compose setTestTag.
MAUI: Regola del Nome del Testo Modificabile
A causa delle limitazioni dell'architettura delle app MAUI nel sistema Android, la regola del Nome del Testo Modificabile verrà visualizzata come Necessita Revisione nel dashboard quando si sospetta un errore per la versione SDK 5.5.0 e superiori. 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 ottenere risultati per le viste dietro il modale. In questo caso, raccomandiamo di non eseguire il nostro strumento contro questi modali o dialoghi personalizzati, ma di controllarli manualmente per assicurarti che si comportino con la tecnologia assistiva come desiderato.
Web Dashboard
Screenshot mancanti
Se lo screenshot manca dalla pagina dei dettagli della scansione, la tua app potrebbe impedire che vengano fatti degli screenshot. Spesso ciò avviene per ragioni di sicurezza nella tua applicazione di produzione. Considera di rimuovere questo requisito per il tuo build di test per consentire la piena funzionalità nella Dashboard Mobile di Axe DevTools.
Alcuni nomi delle scansioni Android non sono formattati
Alcuni nomi delle scansioni Android che vengono impostati di default al titolo dello schermo appariranno come il nome completo della classe, incluso l'identificatore del bundle. In un futuro rilascio, questo verrà risolto affinché il titolo dello schermo sia formattato in un nome più leggibile. Come soluzione temporanea, potete impostare il nome della scansione dal dashboard o dai frameworks. (#1643)
