Auto Scan
Identificeer automatisch toegankelijkheidsproblemen terwijl uw bestaande XCUITests met uw app interageren
Overzicht
Door aansluiting op standaard XCUITest-gebaren, legt Auto Scan elke scherm vast waarmee uw testsuite interageert, zonder dat u individuele scanoproepen, imports of wijzigingen aan uw tests hoeft toe te voegen.
Hoe het werkt
- Wanneer de testbundel start, laadt Auto Scan
axe_config.jsonen begint met het observeren van interacties - Na elke ondersteunde interactie legt Auto Scan het huidige scherm vast
- Wanneer de testbundel eindigt, verwerkt Auto Scan uw resultaten, slaat een JSON-resultaat voor elk scherm samen met een samenvatting en een HTML-rapport op in
AxeDevToolsMobileResults/, en uploadt optioneel de resultaten naar Developer Hub
Aan de slag
- Maak
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Voeg
axe_config.jsontoe aan het UI-testdoel in Xcode (Project Navigator > Add Files > Vink het UI-testdoel aan) - Voeg
axe_config.jsontoe aan.gitignore - Voer tests normaal uit
Voorbeeldcode
Het onderstaande codefragment is een standaard XCUITest, zonder Auto Scan-specifieke 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
}
}Resultaten interpreteren
Consolesamenvatting
Een consolesamenvatting vergelijkbaar met de volgende wordt afgedrukt wanneer de testsuite is voltooid:
---- 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
----------------------------------------------------Een schone run zal Axe Clean - 0 Issues Found 🎉 in de console tonen.
Uitvoerbestanden
Aan het einde van elke testrun genereert Auto Scan een zelfvoorzienend HTML-rapport dat screenshots, impactniveaus en gedetailleerde informatie over problemen bevat. Uitvoerbestanden worden opgeslagen in een door de gebruiker configureerbare uitvoermap die u kunt definiëren in axe_config.json. De axeHtmlReportPath accepteert een absoluut pad, of een met ~ voorvoegsel (bijv. ~/my-axe-reports). Als deze niet is ingesteld, is de standaard uitvoermap ~/AxeDevToolsMobileResults.
| Bestand | Formaat |
|---|---|
AxeDevToolsMobile_<timestamp>.html |
Interactief HTML-rapport met issues per scherm, elementdetails, impactniveaus |
AxeDevToolsSummary_<timestamp>.txt |
Tekstsamenvatting (zelfde als console-uitvoer) |
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json |
Individueel JSON-resultaat - 1 voor elke scan die is uitgevoerd |
Auto Scan Ondersteuning
Regels
Auto Scan voert de volledige Axe-regelset uit met uitzondering van ScreenOrientation, SupportsDynamicType, en alle experimentele regels. Vind gedetailleerde informatie over wat we controleren in de Regeloverzicht voor iOS.
Developer Hub
Auto Scan uploadt uw resultaten automatisch naar Axe Developer Hub. Als u de resultaten alleen lokaal wilt opslaan, stel dan axeUploadResults in op false.
Configuratiereferentie
Eigenschappen
| Eigenschap | Type | Vereist | Details |
|---|---|---|---|
axeAutoScanMode |
Booleaans | Vereist | Standaardwaarden zijn false. Moet ingesteld zijn op true om auto scan te activeren. |
axeAppBundleId |
String | Vereist | Bundle-ID van de app die getest wordt |
axeUploadResults |
Booleaans | Optioneel | Standaardwaarden zijn true. Stel in op false voor alleen lokale resultaten |
axeMobileApiKey |
String | Optioneel | Een Axe DevTools Mobile API-sleutel van axe.deque.com is vereist als axeUploadResults=true |
axeProjectId |
String | Optioneel | Een Project-ID van Developer Hub is vereist als axeUploadResults=true |
axeServerUrl (Afgeschreven) |
String | Optioneel | Aangepaste backend-URL (bijv. axe.company.com), alleen voor on-premise/private cloud |
axeAccountUrl |
String | Optioneel | Aangepaste backend-URL (bijv. axe.company.com), alleen voor on-premise/private cloud |
axeHtmlReportPath |
String | Optioneel | Door de gebruiker configureerbare uitvoermap voor HTML-rapport en samenvatting. Standaard naar ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
String | Optioneel | Alleen vereist voor offline modus, wanneer axeUploadResults=false |
Als u onze tools gebruikt en de voorkeur geeft aan offline resultaten, stelt u een waarde in voor de axeOfflineLicenseKey in plaats van axeMobileApiKey en axeProjectId.
Beste praktijken
Animaties uitschakelen
Krijg de meest accurate en uitgebreide resultaten van Automatische Scan door animatie uit te schakelen. Dit zorgt ervoor dat schermen volledig worden gerenderd wanneer ze vastgelegd worden.
De onderstaande onderdelen zijn vereist:
Test setup:
override func setUpWithError() throws {
let app = XCUIApplication()
app.launchArguments.append("-DisableAnimations")
app.launch()
}App-lanceringspad (AppDelegate of @main):
if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
UIView.setAnimationsEnabled(false)
}Het lanceringsargument geeft de vlag door aan het app-proces. De app-zijde controle voert het uit. Geen van beide werkt alleen.
Opmerking: UIView.setAnimationsEnabled(false) dekt geen SwiftUI-native animaties (withAnimation {}). SwiftUI-apps hebben mogelijk extra verwerking nodig.
Probleemoplossing
- Geen resultaten? Controleer of
axe_config.jsonis opgenomen in het UI-testdoel. Controleer Doel lidmaatschap in XCode's File Inspector. - Resultaten lokaal te zien, maar niet in Developer Hub? De upload naar Developer Hub mislukt als de grootte van een enkel resultaatbestand groter is dan 20MB, hoewel alle resultaten nog steeds lokaal worden opgeslagen en in het lokale HTML-rapport worden getoond.
- Controleer logbestanden. Zoek naar
AutoScan-berichten in de console.
Wat Nu?
U kunt uw resultaten bekijken in de Axe Developer Hub. Leer hoe u Axe DevTools Mobile integreert in je CI/CD-pijplijn. Gebruikt u een cloud-gebaseerd testplatform? U kunt Axe DevTools Mobile nog steeds gebruiken om naar toegankelijkheidskwesties te zoeken: Integreren met Cloudplatforms.
Als u meer gedetailleerde controle in uw tests nodig heeft, zie Gerichte Tests met XCUITest.
