Auto Scan

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Erkennen Sie automatisch Barrierefreiheitsprobleme, während Ihre bestehenden XCUITests mit Ihrer App interagieren

Not for use with personal data

Ü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

  1. Wenn das Testpaket startet, lädt Auto Scan axe_config.json und beginnt, Interaktionen zu beobachten
  2. Nach jeder unterstützten Interaktion erfasst Auto Scan den aktuellen Bildschirm
  3. 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

  1. Erstellen Sie axe_config.json:
{
  "axeAutoScanMode": true,
  "axeAppBundleId": "com.example.myapp",
  "axeMobileApiKey": "<API_KEY>",
  "axeProjectId": "<PROJECT_ID>",
  "axeHtmlReportPath": "~/my-custom-report-folder"
}
  1. Fügen Sie axe_config.json zum UI-Testziel-Paket in Xcode hinzu (Projektnavigator > Dateien hinzufügen > UI-Testziel auswählen)
  2. Fügen Sie axe_config.json zu .gitignore hinzu
  3. 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
note

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.json im 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.

tip

Wenn Sie eine feinere Kontrolle über Ihre Tests benötigen, siehe Gezieltes Testen mit XCUITest.