Scansione Automatica
Identifica automaticamente i problemi di accessibilità mentre i tuoi test XCUITest interagiscono con la tua app
Panoramica
Sfruttando i gesti standard di XCUITest, Scansione Automatica cattura e analizza ogni schermo con cui la tua suite di test interagisce, senza la necessità di aggiungere chiamate di scansione individuali, importazioni o modifiche ai tuoi test.
Come funziona
- Quando il pacchetto di test si avvia, Auto Scan carica
axe_config.jsone inizia a osservare le interazioni - Dopo ogni interazione supportata, Scansione Automatica cattura lo schermo corrente
- Quando il pacchetto di test termina, Auto Scan elabora i tuoi risultati, salva un risultato JSON per ogni schermo - insieme a un riepilogo e un report HTML - in
AxeDevToolsMobileResults/e opzionalmente carica i risultati su Developer Hub
Guida per l'inizio
- Crea
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Aggiungi
axe_config.jsonal target del test UI nel pacchetto in Xcode (Project Navigator > Add Files > Check the UI test target) - Aggiungi
axe_config.jsona.gitignore - Esegui i test normalmente
Codice d'Esempio
Il codice di seguito è un XCUITest standard, senza codice specifico per Scansione Automatica:
import XCTest
class MyAppUITests: XCTestCase {
let app = XCUIApplication()
override func setUpWithError() throws {
app.launch() // triggers initial capture
}
func testSettings() throws {
app.buttons["Settings"].tap() // triggers capture
}
}Interpretazione dei Risultati
Riepilogo Console
Un riepilogo della console simile al seguente viene stampato quando la suite di test termina:
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
Screen: HomeScreen
Issues: 3
Issues by rule:
- ColorContrast: 2
- TouchTargetSize: 1
Scan 2:
Screen: SettingsScreen
Issues: 0
Total Scans: 2
❌ Total Issues: 3
----------------------------------------------------Un'esecuzione pulita mostrerà Axe Clean - 0 Issues Found 🎉 nella console.
File di output
Alla fine di ciascuna esecuzione del test, Auto Scan genera un report HTML autonomo che include screenshot, livelli di impatto e informazioni dettagliate sui problemi. I file di output vengono salvati in una directory di output configurabile dall'utente che puoi definire in axe_config.json. Il axeHtmlReportPath accetta un percorso assoluto o un percorso con prefisso ~ (es. ~/my-axe-reports). Se lasciato non impostato, la directory di output predefinita è ~/AxeDevToolsMobileResults.
| File | Formato |
|---|---|
AxeDevToolsMobile_<timestamp>.html |
Report HTML interattivo con problemi per schermata, dettagli degli elementi, livelli di impatto |
AxeDevToolsSummary_<timestamp>.txt |
Riepilogo testuale (stesso dell'output della console) |
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json |
Risultato JSON individuale - 1 per ogni scansione effettuata |
Supporto Scansione Automatica
Regole
Auto Scan esegue l'intero set di regole Axe ad eccezione di ScreenOrientation, SupportsDynamicType e tutte le regole sperimentali. Trova informazioni dettagliate su cosa verifichiamo nel Panoramica delle Regole per iOS.
Developer Hub
Auto Scan carica automaticamente i tuoi risultati su Axe Developer Hub. Se vuoi salvare i risultati solo localmente, imposta axeUploadResults a false.
Riferimento di Configurazione
Proprietà
| Proprietà | Tipo | Richiesto | Dettagli |
|---|---|---|---|
axeAutoScanMode |
Booleano | Richiesto | Predefinito su false. Deve essere impostato su true per abilitare la scansione automatica. |
axeAppBundleId |
Stringa | Richiesto | ID bundle dell'app in test |
axeUploadResults |
Booleano | Opzionale | Predefinito su true. Imposta su false per risultati solo locali |
axeMobileApiKey |
Stringa | Opzionale | È richiesta una chiave API di Axe DevTools Mobile da axe.deque.com se axeUploadResults=true |
axeProjectId |
Stringa | Opzionale | È richiesto un ID progetto da Developer Hub se axeUploadResults=true |
axeServerUrl (Deprecato) |
Stringa | Opzionale | URL backend personalizzato (es. axe.company.com), solo per on-prem/nuvola privata |
axeAccountUrl |
Stringa | Opzionale | URL backend personalizzato (es. axe.company.com), solo per on-prem/nuvola privata |
axeHtmlReportPath |
Stringa | Opzionale | Directory di output configurabile dall'utente per il report HTML e il riepilogo. Predefinito su ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
Stringa | Opzionale | Richiesto solo per modo offline, quando axeUploadResults=false |
Se stai usando i nostri strumenti e preferisci ottenere risultati in modalità offline, imposterai un valore per axeOfflineLicenseKey al posto di axeMobileApiKey e axeProjectId.
Migliori Pratiche
Disabilita Animazioni
Ottieni i risultati più accurati e completi da Auto Scan disabilitando le animazioni. Questo assicurerà che gli schermi siano completamente renderizzati quando catturati.
Entrambi i pezzi sottostanti sono richiesti:
Configurazione del test:
override func setUpWithError() throws {
let app = XCUIApplication()
app.launchArguments.append("-DisableAnimations")
app.launch()
}Percorso di lancio dell'app (AppDelegate o @main):
if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
UIView.setAnimationsEnabled(false)
}L'argomento di lancio passa il flag al processo dell'app. Il controllo lato app agisce su di esso. Nessuno dei due funziona da solo.
Nota: UIView.setAnimationsEnabled(false) non copre le animazioni native di SwiftUI (withAnimation {}). Le app SwiftUI potrebbero richiedere una gestione aggiuntiva.
Risoluzione dei Problemi
- Nessun risultato? Verifica che
axe_config.jsonsia incluso nel target del test UI. Controlla Membership del Target nell'Ispettore File di XCode. - Vedi risultati localmente, ma non in Developer Hub? Il caricamento su Developer Hub fallisce se la dimensione di un qualsiasi file di risultati supera i 20MB, anche se tutti i risultati vengono comunque salvati localmente e visualizzati nel report HTML locale.
- Controlla i log. Cerca messaggi
AutoScannella console.
E adesso?
Puoi visualizzare i tuoi risultati in Axe Developer Hub. Scopri come integrare Axe DevTools Mobile nella tua pipeline CI/CD. Stai usando una piattaforma di test basata sul cloud? Puoi comunque usare Axe DevTools Mobile per cercare problemi di accessibilità: Integrazione con Piattaforme Cloud.
Se hai bisogno di un controllo più granulare nei tuoi test, consulta Test Mirati con XCUITest.
