Auto Scan
Identificeer automatisch toegankelijkheidsproblemen terwijl je bestaande UI-tests je app gebruiken
Overzicht
Auto Scan identificeert automatisch toegankelijkheidsproblemen terwijl je bestaande Espresso- of UIAutomator-tests je app gebruiken, zonder dat je individuele scanoproepen of aanpassingen aan je tests hoeft toe te voegen. Auto Scan luistert naar schermwijzigingen en scant elk uniek scherm automatisch.
Als je meer gedetailleerde controle in je tests nodig hebt, zie Gerichte Testen.
Hoe het werkt
Onze Gradle-plugin vervangt je JUnit-instrumentatierunner door onze aangepaste runner. Hiermee kunnen we je testsuite observeren en je resultaten op het juiste moment verwerken. Download de AxeDevToolsMobile Gradle plugin.
Wanneer de test is voltooid, verwerkt Auto Scan je resultaten en slaat een JSON-resultaat voor elk scherm op, evenals een zelfstandige HTML-rapportage naar AxeDevToolsMobileResults, en uploadt optioneel de resultaten naar Developer Hub.
Aan de slag
-
Een paar waarden moeten worden ingesteld om gebruikers te configureren en te authenticeren. We raden aan deze toe te voegen als omgevingsvariabelen op je computer en op je CI/CD-pijplijnen om je sleutels veilig te houden.
Groovy (
build.gradle):axeDevTools { axeMobileApiKey = '' axeAutoScanMode = true axeProjectId = '' }Kotlin DSL (
build.gradle.kts):axeDevTools { axeMobileApiKey = "" axeAutoScanMode = true axeProjectId = "" } -
Als je onze tools gebruikt en de voorkeur geeft aan resultaten in offline modus, stel je een waarde in voor de
axeOfflineLicenseKeyin plaats vanaxeMobileApiKeyenaxeProjectId.Groovy (
build.gradle):axeDevTools { axeOfflineLicenseKey = '' axeAutoScanMode = true }Kotlin DSL (
build.gradle.kts):axeDevTools { axeOfflineLicenseKey = "" axeAutoScanMode = true }
Schermen overslaan bij het scannen
Standaard bekijkt Auto Scan elk uniek scherm in je app terwijl je tests worden uitgevoerd. Als bepaalde schermen niet in de scan moeten worden opgenomen - bijvoorbeeld inlogschermen of navigatie buiten de te testen app - kun je het scannen voor dat gedeelte onderdrukken door het te omhullen met AxeAutoScan.skipScan. Auto Scan stopt met het volgen van schermwijzigingen terwijl dat blok wordt uitgevoerd en start automatisch weer zodra het blok klaar is. Schermen die binnen deze blokken verschijnen, worden nooit gescand.
Je zult com.deque.mobile.devtools.productinterfaces.AxeAutoScan importeren. Het implementatievoorbeeld hieronder gebruikt Jetpack Compose, maar het gedrag is hetzelfde in Espresso- en UIAutomator-tests:
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import com.deque.mobile.devtools.productinterfaces.AxeAutoScan
import org.junit.Rule
import org.junit.Test
class AutoScanDemoTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<MainActivity>()
@Test
fun homeLoggedIn() {
AxeAutoScan.skipScan {
// Navigation to Login screen
composeTestRule.onNodeWithText("Sign in").performClick()
// Username/password entry
composeTestRule.onNodeWithTag("username").performTextInput("test@example.com")
composeTestRule.onNodeWithTag("password").performTextInput("password")
// Submit form data
composeTestRule.onNodeWithText("Submit").performClick()
// Wait to return to Home screen
composeTestRule.waitUntil(timeoutMillis = 5_000) {
composeTestRule.onAllNodesWithTag("home_screen")
.fetchSemanticsNodes().isNotEmpty()
}
}
// Auto Scan starts again - after return to Home screen everything is captured
composeTestRule.onNodeWithTag("account_menu").performClick()
}
}Enkele punten om op te letten bij skipScan:
- Het scannen wordt hervat, zelfs als een bewering binnen het blok faalt. Auto Scan start opnieuw voordat de fout zich verspreidt.
- Het aanroepen van
skipScanwanneer"axeAutoScanMode" = falseongevaarlijk is; het is niet nodig om de oproep te bewaken of twee versies van een test bij te houden.
Resultaten interpreteren
Console Samenvatting
Zodra de testsuite is voltooid, kun je bewerkingen zien in je Gradle logs, gevolgd door een samenvatting.
HTML rule report written to: /Users/user/Documents/workspace/android/project-name/app/build/reports/AxeDevToolsMobileResults/AxeDevToolsMobile_1773882427726.html
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
Screen: Home Page
Issues: 6
Issues by rule:
- TouchSizeWcag: 3
- LabelAtFront: 1
- LabelInName: 1
- FocusableText: 1
Scan 35:
Screen: Wikipedia Alpha
Issues: 5
Issues by rule:
- LabelAtFront: 1
- LabelInName: 1
- TouchTargetSpacing: 1
- TouchSizeWcag: 1
- ColorContrast: 1
Total Scans: 35
❌ Total Issues: 123
---------------------------------------------------Uitvoerbestanden
Auto Scan genereert een zelfstandige HTML-rapportage met schermafbeeldingen, gegevens over de weergavehiërarchie en gedetailleerde probleeminformatie. Individuele JSON-resultaten worden opgeslagen in de axe-test-data-map. Alle bestanden worden opgeslagen in de app/build/reports/AxeDevToolsMobileResults-map.
| Bestand | Formaat |
|---|---|
AxeDevToolsReport.html |
Interactief HTML-rapport met problemen per scherm, elementdetails, impactniveaus |
<timestamp>-axe-node-hierarchy.json |
Individueel JSON-resultaat - 1 voor elke scan die is uitgevoerd |
Als je de voorkeur geeft aan het opslaan van je resultaten in een specifieke map, kun je dit aangeven in het configuratieblok van je build.gradle-bestand.
axeDevTools {
axeMobileApiKey = "AXE_API_KEY"
axeProjectId = "DEVHUB_PROJECT_ID"
axeAutoScanMode = true
axeHtmlReportPath =
"User/Desktop/reports/AxeDevToolsMobileResults"
axeAccountUrl = "https://axe.deque.com"
Auto Scan Ondersteuning
Regels
Auto Scan voert de volledige Axe-regelset uit met uitzondering van ScreenOrientation. Vind gedetailleerde informatie over wat we controleren in de Regeloverzicht voor Android.
Ontwikkelaarshub
Auto Scan uploadt je resultaten automatisch naar Axe Developer Hub. Als je de resultaten alleen lokaal wilt opslaan, stel dan axeUploadResults in op false.
Configuratiereferentie
Eigenschappen
| Eigenschap | Type | Vereist | Details |
|---|---|---|---|
axeAutoScanMode |
Boolean | Vereist | Standaard ingesteld op false. Moet worden ingesteld op true om auto scan in te schakelen. |
axeMobileApiKey |
String | Verplicht* | Een Axe DevTools Mobile API-sleutel van axe.deque.com is **vereist** als axeUploadResults=true |
axeOfflineLicenseKey |
String | Verplicht* | Alleen vereist voor offline modus, wanneer axeUploadResults=false |
axeUploadResults |
Boolean | Optioneel | Standaard ingesteld op true. Stel in op false voor alleen lokale resultaten |
axeProjectId |
String | Optioneel | Een Project ID van Developer Hub is **vereist** als axeUploadResults=true |
axeServerUrl (Afgekeurd) |
String | Optioneel | Aangepaste backend-URL (bijv. axe.company.com), alleen voor on-prem/private cloud |
axeAccountUrl |
String | Optioneel | Aangepaste backend-URL (bijv. axe.company.com), alleen voor on-prem/private cloud |
axeHtmlReportPath |
String | Optioneel | Gebruiker configureerbare uitvoermap voor HTML-rapport en samenvatting. Standaard ingesteld op build/reports/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
String | Optioneel | Alleen vereist voor offline modus, wanneer axeUploadResults=false |
* Opmerking: Je moet ofwel de axeMobileApiKey of de axeOfflineLicenseKey in je configuratie instellen. De API-sleutel is vereist tenzij je de offline modus gebruikt. De offline licentiesleutel is alleen vereist voor de offline modus.
Beste Praktijken
Animaties Uitschakelen
Verkrijg de meest nauwkeurige en uitgebreide resultaten van Auto Scan door animaties uit te schakelen. Dit zorgt ervoor dat schermen volledig worden weergegeven wanneer ze worden vastgelegd. Als animaties niet zijn uitgeschakeld, merk je mogelijk:
- Dubbele scans waarvan je dacht dat ze hadden moeten worden weggelaten
- Scans met screenshots die een tijdelijke toestand tonen
- Een aanzienlijk lagere schermopnamesnelheid dan je zou verwachten
Probleemoplossing
Als je de scans niet ziet verschijnen in Developer Hub, moet je je logs controleren voor aanwijzingen over wat er mis kan zijn of deze checklist doorlopen.
- Controleer dat
axeAutoScanMode=truein jeaxeDevToolsconfiguratieblok - Controleer of je in staat was om onze afhankelijkheid van Maven Central te verkrijgen
- Zorg ervoor dat je de juiste variabele gebruikt voor je API/Licentiesleutel en Project-ID
- Controleer de grootte van je uitvoerbestanden. De upload naar Developer Hub mislukt als de grootte van een resultaatbestand groter is dan 20MB, hoewel alle resultaten nog steeds lokaal worden opgeslagen en in het lokale HTML-rapport worden weergegeven.
Wat nu?
Je kunt je resultaten bekijken in Axe Developer Hub. Leer hoe je Axe DevTools Mobile in je CI/CD-pipeline integreert. Gebruik je een cloud-gebaseerd testplatform? Je kunt Axe DevTools Mobile nog steeds gebruiken om toegankelijkheidsproblemen te zoeken: Integreren met Cloud Platforms.
