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 het interacties te observeren - Na elke ondersteunde interactie legt Auto Scan het huidige scherm vast
- Wanneer de testbundel voltooid is, verwerkt Auto Scan uw resultaten, slaat een JSON-resultaat voor elk scherm op - samen met een samenvatting en een HTML-rapport - naar
AxeDevToolsMobileResults/, en uploadt optioneel resultaten naar Developer Hub
Aan de slag
- Maak
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>"
}- Voeg toe
axe_config.jsonaan de UI-testdoelbundel in Xcode (Project Navigator > Voeg bestanden toe > Vink de UI-testdoel aan) - Voeg toe
axe_config.jsonaan.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
Auto Scan genereert enkele verschillende bestanden aan het einde van elke testuitvoering, inclusief een zelfvoorzienend HTML-rapport dat schermafbeeldingen, weergave-hiërarchiegegevens en gedetailleerde probleeminformatie bevat. Alle bestanden worden opgeslagen in de AxeDevToolsResults directory.
| Bestand | Formaat |
|---|---|
AxeDevToolsSummary_<epoch>.txt |
Tekstsamenvatting (zelfde als console-uitvoer) |
AxeDevToolsReport_<epoch>.html |
Interactief HTML-rapport met per-scherm issues, elementdetails, impactniveaus, weergave-hiërarchie |
<bundleId-screenTitle>.json |
Individueel JSON-resultaat - 1 voor elke scan die is uitgevoerd |
Auto Scan Ondersteuning
Regels
Auto Scan draait de volledige Axe-regelset 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 automatisch uw resultaten naar Axe Developer Hub. Als u resultaten alleen lokaal wilt opslaan, stel axeUploadResults in op false.
Configuratiereferentie
Eigenschappen
| Eigenschap | Type | Vereist | Details |
|---|---|---|---|
axeAutoScanMode |
Booleaans | Vereist | Standaard ingesteld op false. Moet ingesteld worden op true om automatische scan in te schakelen. |
axeAppBundleId |
String | Vereist | Bundle-ID van de app die getest wordt |
axeUploadResults |
Booleaans | Optioneel | Standaard ingesteld op true. Instellen 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 |
String | Optioneel | Aangepaste backend-URL, alleen voor on-premises/private cloud |
axeOfflineLicenseKey |
String | Optioneel | Alleen vereist voor offline modus, wanneer axeUploadResults=false |
Als je onze tools gebruikt en de voorkeur geeft aan resultaten in offline modus, stel je 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 behandeling nodig.
Probleemoplossing
- Geen resultaten? Controleer of
axe_config.jsonis opgenomen in de UI-testdoelbundel. Controleer Doel lidmaatschap in het Bestandsinspecteur van XCode. - Resultaten lokaal te zien, maar niet in Developer Hub? Het uploaden naar Developer Hub mislukt als de grootte van een resultaatbestand groter is dan 20MB, maar alle resultaten worden nog steeds lokaal opgeslagen en getoond in het lokale HTML-rapport.
- Controleer logbestanden. Zoek naar
AutoScanberichten in de console.
Wat Nu?
Je kunt je resultaten bekijken in Axe Developer Hub. Leer hoe je Axe DevTools Mobile integreert in je CI/CD-pijplijn. Gebruik je een cloudgebaseerd testplatform? Je kunt Axe DevTools Mobile nog steeds gebruiken om te zoeken naar toegankelijkheidsproblemen: Integreren met Cloudplatforms.
Als je meer gedetailleerde controle over je tests wilt hebben, zie dan Gerichte Tests met XCUITest.
