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 inizia, Scansione Automatica 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, Scansione Automatica elabora i tuoi risultati, salva un risultato JSON per ogni schermo - insieme a un sommario e un report HTML - in
AxeDevToolsMobileResults/, e facoltativamente 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 pacchetto target di test UI in Xcode (Navigatore Progetto > Aggiungi File > Seleziona il target di test UI) - Aggiungi
axe_config.jsonsu.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
----------------------------------------------------Una esecuzione pulita mostrerà Axe Clean - 0 Issues Found 🎉 nella console.
File di output
Al termine di ogni esecuzione del test, Auto Scan genera un report HTML autonomo che include schermate, 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
Scansione Automatica esegue l'intero set di regole Axe con l'eccezione di ScreenOrientation, SupportsDynamicType, e tutte le regole sperimentali. Trova informazioni dettagliate su ciò che verifichiamo nel Panoramica delle Regole per iOS.
Developer Hub
Scansione Automatica carica automaticamente i tuoi risultati su Axe Developer Hub. Se vuoi solo salvare i risultati localmente, imposta axeUploadResults su false.
Riferimento di Configurazione
Proprietà
| Proprietà | Tipo | Richiesto | Dettagli |
|---|---|---|---|
axeAutoScanMode |
Booleano | Richiesto | Predefinito a false. Deve essere impostato su true per abilitare la scansione automatica. |
axeAppBundleId |
Stringa | Richiesto | ID bundle dell'app in test |
axeUploadResults |
Booleano | Opzionale | Predefinito a true. Imposta su false per risultati solo locali |
axeMobileApiKey |
Stringa | Opzionale | Una chiave API per Axe DevTools Mobile da axe.deque.com è richiesto se axeUploadResults=true |
axeProjectId |
Stringa | Opzionale | Un ID progetto da Developer Hub è richiesto se axeUploadResults=true |
axeServerUrl (Deprecato) |
Stringa | Opzionale | URL backend personalizzato (ad es. axe.company.com), per on-prem/nuvola privata solo |
axeAccountUrl |
Stringa | Opzionale | URL backend personalizzato (ad es. axe.company.com), per on-prem/nuvola privata solo |
axeHtmlReportPath |
Stringa | Opzionale | Directory di output configurabile dall'utente per report HTML e sommario. Predefinito a ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
Stringa | Opzionale | Richiesto solo per modo offline, quando axeUploadResults=false |
Se stai utilizzando i nostri strumenti e preferisci ottenere risultati in modalità offline, imposterai un valore per il axeOfflineLicenseKey invece 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
axe_config.jsonsia incluso nel bundle del target di 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 qualsiasi file di risultato è maggiore di 20MB, anche se tutti i risultati sono comunque salvati localmente e mostrati nel report HTML locale.
- Controlla i log. Cerca
AutoScanmessaggi nella console.
E adesso?
Puoi visualizzare i tuoi risultati in Axe Developer Hub. Scopri come integrare Axe DevTools Mobile nella tua pipeline CI/CD. Usando una piattaforma di test basata su cloud? Puoi comunque utilizzare Axe DevTools Mobile per cercare problemi di accessibilità: Integrazione con Piattaforme Cloud.
Se hai bisogno di un controllo più dettagliato nei tuoi test, vedi Test Mirati con XCUITest.
