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 Testbündel 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 Testbündel 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 optional Ergebnisse in den Developer Hub hoch
Erste Schritte
- Erstellen
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Hinzufügen
axe_config.jsonzum UI-Testziel-Bundle in Xcode (Projekt-Navigator > Dateien hinzufügen > UI-Testziel auswählen) - Hinzufügen
axe_config.jsonauf.gitignore - 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 Lauf zeigt Axe Clean - 0 Issues Found 🎉 in der Konsole an.
Ausgabedateien
Am Ende jedes Testlaufs erzeugt Auto Scan einen eigenständigen HTML-Bericht, der Screenshots, Auswirkungen und detaillierte Informationen zu Problemen enthält. Ausgabedateien werden in einem benutzerkonfigurierbaren Ausgabeverzeichnis gespeichert, das Sie in axe_config.json. festlegen können axeHtmlReportPath akzeptiert einen absoluten Pfad oder einen ~-präfixierten Pfad (z. B. ~/my-axe-reports). Wenn er nicht eingestellt ist, ist das Standard-Ausgabeverzeichnis ~/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 den vollständigen Axe-Regelsatz mit Ausnahme von ScreenOrientation, SupportsDynamicType, und allen experimentellen Regeln aus. Detaillierte Informationen darüber, was wir überprüfen, finden Sie in der Regelübersicht für iOS.
Developer Hub
Auto Scan lädt Ihre Ergebnisse automatisch in den 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 false. Muss auf true gesetzt werden, um den automatischen Scan zu aktivieren. |
axeAppBundleId |
String | Erforderlich | Bundle-ID der zu testenden App |
axeUploadResults |
Boolean | Optional | Standardmäßig true. Setzen Sie auf false für nur lokale Ergebnisse |
axeMobileApiKey |
String | Optional | Ein Axe DevTools Mobile API-Schlüssel von axe.deque.com erforderlich ist, wenn axeUploadResults=true |
axeProjectId |
String | Optional | Eine Projekt-ID aus dem Developer Hub erforderlich ist, wenn axeUploadResults=true |
axeServerUrl (Veraltet) |
String | Optional | Benutzerdefinierte Backend-URL (z.B. axe.company.com), für vor Ort/Private Cloud nur |
axeAccountUrl |
String | Optional | Benutzerdefinierte Backend-URL (z.B. axe.company.com), für vor Ort/Private Cloud nur |
axeHtmlReportPath |
String | Optional | Benutzerdefinierbares Ausgabeverzeichnis für HTML-Bericht und Zusammenfassung. Standardmäßig ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
String | Optional | Nur erforderlich für Offline-Modus, wenn axeUploadResults=false |
Wenn Sie unsere Tools verwenden und die Ergebnisse im Offline-Modus bevorzugen, müssen Sie einen Wert für das axeOfflineLicenseKey anstelle des 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) deckt keine SwiftUI-nativen Animationen ab (withAnimation {}). SwiftUI-Apps benötigen möglicherweise eine zusätzliche Handhabung.
Fehlerbehebung
- Keine Ergebnisse? Verifizieren Sie, dass
axe_config.jsonim UI-Test-Zielbundle enthalten ist. Überprüfen Sie Zielmitgliedschaft im Dateiinformationsfenster von XCode. - Ergebnisse lokal sichtbar, aber nicht im Developer Hub? Der Upload zum Developer Hub schlägt fehl, wenn die Größe einer Ergebnisdatei größer als 20MB ist, obwohl alle Ergebnisse lokal gespeichert und im lokalen HTML-Bericht angezeigt werden.
- Protokolle überprüfen. Suchen Sie nach
AutoScanNachrichten in der Konsole.
Was kommt als nächstes?
Sie können Ihre Ergebnisse in Axe Developer Hubeinsehen. Erfahren Sie, wie Sie Axe DevTools Mobile in Ihre CI/CD-Pipeline integrieren. Verwenden Sie eine cloudbasierte Testplattform? Sie können trotzdem Axe DevTools Mobile nutzen, um nach Barrierefreiheitsproblemen zu suchen: Integrieren Sie mit Cloud-Plattformen.
Wenn Sie eine detailliertere Kontrolle in Ihren Tests benötigen, sehen Sie Gezieltes Testen mit XCUITest.
