Auto Scan
Erkennen Sie automatisch Barrierefreiheitsprobleme, während Ihre bestehenden XCUITests mit Ihrer App interagieren
Überblick
Indem es sich in standardmäßige XCUITest-Gesten einklinkt, erfasst und scannt Auto Scan jeden Bildschirm, mit dem Ihre Testsuite interagiert, ohne dass individuelle Scanaufrufe, Importe oder Anpassungen an Ihren Tests erforderlich sind.
Wie es funktioniert
- Wenn das Testpaket startet, lädt Auto Scan
axe_config.jsonund beginnt, Interaktionen zu beobachten - Nach jeder unterstützten Interaktion erfasst Auto Scan den aktuellen Bildschirm
- Wenn das Testpaket endet, verarbeitet Auto Scan Ihre Ergebnisse, speichert ein JSON-Ergebnis für jeden Bildschirm - zusammen mit einer Zusammenfassung und einem HTML-Bericht - in
AxeDevToolsMobileResults/und lädt die Ergebnisse optional zum Developer Hub hoch
Erste Schritte
- Erstellen Sie
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Fügen Sie
axe_config.jsonzum UI-Testziel-Paket in Xcode hinzu (Projektnavigator > Dateien hinzufügen > UI-Testziel auswählen) - Fügen Sie
axe_config.jsonzu.gitignorehinzu - Tests normal durchführen
Beispielcode
Der nachstehende Ausschnitt ist ein standardmäßiger XCUITest, ohne Auto Scan-spezifischen Code:
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
}
}Ergebnisse interpretieren
Konsolenzusammenfassung
Eine Konsolenzusammenfassung ähnlich der folgenden wird angezeigt, wenn die Testsuite endet:
---- 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
----------------------------------------------------Ein sauberer Durchlauf zeigt Axe Clean - 0 Issues Found 🎉 in der Konsole.
Ausgabedateien
Am Ende jedes Testlaufs generiert Auto Scan einen eigenständigen HTML-Bericht, der Screenshots, Einflussstufen und detaillierte Informationen zu Problemen enthält. Ausgabedateien werden in einem benutzerkonfigurierbaren Ausgabeverzeichnis gespeichert, das Sie in axe_config.json definieren können. Der axeHtmlReportPath akzeptiert einen absoluten Pfad oder einen mit ~-präfixierten Pfad (z. B. ~/my-axe-reports). Wenn dieser nicht gesetzt ist, ist das Standardausgabeverzeichnis ~/AxeDevToolsMobileResults.
| Datei | Format |
|---|---|
AxeDevToolsMobile_<timestamp>.html |
Interaktiver HTML-Bericht mit problembezogenen Bildschirminformationen, Elementdetails, Auswirkungen |
AxeDevToolsSummary_<timestamp>.txt |
Textzusammenfassung (gleich wie Konsolenausgabe) |
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json |
Individuelles JSON-Ergebnis - 1 für jeden durchgeführten Scan |
Auto Scan Unterstützung
Regeln
Auto Scan führt das vollständige Axe-Regelset aus, mit Ausnahme von ScreenOrientation, SupportsDynamicType und allen experimentellen Regeln. Finden Sie detaillierte Informationen darüber, was wir überprüfen, im Regelübersicht für iOS.
Developer Hub
Auto Scan lädt Ihre Ergebnisse automatisch zum Axe Developer Hub hoch. Wenn Sie die Ergebnisse nur lokal speichern möchten, setzen Sie axeUploadResults auf false.
Konfigurationsreferenz
Eigenschaften
| Eigenschaft | Typ | Erforderlich | Details |
|---|---|---|---|
axeAutoScanMode |
Boolean | Erforderlich | Standardmäßig auf false gesetzt. Muss auf true gesetzt werden, um Auto Scan zu aktivieren. |
axeAppBundleId |
String | Erforderlich | Bundle-ID der zu testenden App |
axeUploadResults |
Boolean | Optional | Standardmäßig auf true gesetzt. Auf false setzen, um nur lokale Ergebnisse zu speichern |
axeMobileApiKey |
String | Optional | Ein Axe DevTools Mobile API-Schlüssel von axe.deque.com ist erforderlich, wenn axeUploadResults=true |
axeProjectId |
String | Optional | Eine Projekt-ID von Developer Hub ist erforderlich, wenn axeUploadResults=true |
axeServerUrl (Veraltet) |
String | Optional | Benutzerdefinierte Backend-URL (z. B. axe.company.com), nur für vor Ort/Private Cloud |
axeAccountUrl |
String | Optional | Benutzerdefinierte Backend-URL (z. B. axe.company.com), nur für vor Ort/Private Cloud |
axeHtmlReportPath |
String | Optional | Benutzerkonfigurierbares Ausgabeverzeichnis für HTML-Bericht und Zusammenfassung. Standardmäßig auf ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
String | Optional | Nur erforderlich für Offline-Modus, wenn axeUploadResults=false |
Wenn Sie unsere Werkzeuge verwenden und Ergebnisse im Offline-Modus bevorzugen, setzen Sie einen Wert für das axeOfflineLicenseKey anstelle von axeMobileApiKey und axeProjectId.
Best Practices
Animationen deaktivieren
Erzielen Sie die genauesten und umfassendsten Ergebnisse mit Auto Scan, indem Sie Animationen deaktivieren. Dadurch wird sichergestellt, dass Bildschirme vollständig gerendert werden, wenn sie erfasst werden.
Beide untenstehenden Elemente sind erforderlich:
Testeinrichtung:
override func setUpWithError() throws {
let app = XCUIApplication()
app.launchArguments.append("-DisableAnimations")
app.launch()
}App-Startpfad (AppDelegate oder @main):
if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
UIView.setAnimationsEnabled(false)
}Das Startargument überträgt das Flag an den App-Prozess. Die Überprüfung auf App-Seite reagiert darauf. Keines funktioniert alleine.
Hinweis: UIView.setAnimationsEnabled(false) umfasst keine nativen SwiftUI-Animationen (withAnimation {}). SwiftUI-Apps benötigen möglicherweise zusätzliche Bearbeitung.
Fehlerbehebung
- Keine Ergebnisse? Verifizieren Sie, dass
axe_config.jsonim UI-Testziel-Paket enthalten ist. Überprüfen Sie Zielmitgliedschaft im Dateiinspektor von XCode. - Ergebnisse lokal sichtbar, aber nicht im Developer Hub? Der Upload zum Developer Hub schlägt fehl, wenn die Größe einer einzelnen Ergebnisdatei größer als 20 MB ist, obwohl alle Ergebnisse trotzdem lokal gespeichert und im lokalen HTML-Bericht angezeigt werden.
- Protokolle überprüfen. Suchen Sie nach
AutoScan-Nachrichten in der Konsole.
Was kommt als nächstes?
Sie können Ihre Ergebnisse in Axe Developer Hub ansehen. Erfahren Sie, wie Sie Axe DevTools Mobile in Ihre CI/CD-Pipeline integrieren. Nutzen Sie eine cloudbasierte Testplattform? Sie können trotzdem Axe DevTools Mobile verwenden, um nach Barrierefreiheitsproblemen zu suchen: Integrieren Sie mit Cloud-Plattformen.
Wenn Sie eine feinere Kontrolle über Ihre Tests benötigen, siehe Gezieltes Testen mit XCUITest.
