Problemen oplossen
Veelvoorkomende problemen en oplossingen met Axe Watcher
Watcher ondersteunt alleen Chrome voor Testen, Chromium of Microsoft Edge
Hoewel de website van Axe Developer Hub verschillende browsers ondersteunt, ondersteunt het Watcher-pakket alleen Google Chrome voor Testen, Chromium of Microsoft Edge (JavaScript/TypeScript of Java met Playwright). Problemen die u kunt tegenkomen:
- Als u Chrome versie 139 of later gebruikt, ontvangt u een foutmelding van Watcher. Gebruik in plaats daarvan Chrome voor testen of Chromium (met JavaScript/TypeScript of Java met Playwright kunt u ook Microsoft Edge gebruiken).
- Als u de Electron-browser van Cypress gebruikt, ontvangt u een foutmelding. Specificeer de browser als Chrome voor Testen, Chromium of Microsoft Edge wanneer u Cypress oproept; anders wordt standaard de Electron-browser gebruikt. Zie Browsers starten in de Cypress-documentatie voor meer informatie.
Als u WebdriverIO of WebDriverJS gebruikt, moet u uw testconfiguratie instellen om Chrome voor testen of Microsoft Edge expliciet te gebruiken. Als u Java Selenium gebruikt, moet u uw testconfiguratie instellen om expliciet Chrome voor testen te gebruiken. Zie Gebruik Chrome voor Testen voor installatie-stappen en platform-specifieke configuratievoorbeelden.
Zie Geautomatiseerde Testplatforms voor meer informatie over ondersteunde software met Watcher.
Onvolledige Resultaten
Als uw testsuite meerdere testrunners gebruikt die parallel lopen en dezelfde niet-nul build-ID gebruiken, zullen de resultaten van elke testrunner de resultaten van andere testrunners voor dezelfde Git commit SHA vervangen, wat onvolledige resultaten oplevert. U moet ervoor zorgen dat elke testrunner dezelfde niet-nul build-ID gebruikt.
U stelt doorgaans het build ID in uw AxeConfiguration in.
Voor meer informatie over het gebruik van parallelle testuitvoerders met verschillende CI/CD-platforms, zie Tests Parallel uitvoeren.
Dubbele Toegankelijkheidsfouten of Verkeerde Telling van Nieuwe Problemen
Als uw website dynamische ID's of klassenamen gebruikt die veranderen telkens wanneer de pagina wordt vernieuwd, zult u waarschijnlijk dubbele toegankelijkheidsfouten zien, vooral problemen aangeduid als nieuw wanneer eerdere testruns hetzelfde probleem op hetzelfde element vertonen. (De Axe Developer Hub gebruikt ID's en klassen om hetzelfde element tussen testruns te identificeren.) Om dit probleem op te lossen, moet u de eigenschap ancestry in het object runOptions in uw configuratie instellen op true. Hieronder ziet u een voorbeeld van hoe u de optie in uw configuratie instelt:
axe: {
runOptions: {
ancestry: true
}
}Zie Gebruik van Dynamische Selectors voor meer richtlijnen over het gebruik van dynamische selectors.
Zie (JavaScript/TypeScript) runOptions of (Java) AxeWatcherOptions.setRunOptions() voor meer informatie.
Oude versie van @axe-core/watcher
Als je versie 3.18.0 of ouder van @axe-core/watcher gebruikt, zul je deze waarschuwingsmelding ontvangen:
Axe Developer Hub houdt zich nu aan de instellingen gedefinieerd in Axe-configuratie, en testruns die zijn gecreëerd door versies van @axe-core/watcher versie 3.18.0 of ouder genereren sessies die niet op de hoogte waren van de globale instellingen in Axe-configuratie. U moet uw @axe-core/watcher-pakket bijwerken en uw tests opnieuw uitvoeren om sessies te creëren die voldoen aan de Axe-configuratie van uw onderneming. Zie Gebruik van globale configuraties.
Geen Pagina Staten Vastgelegd Na Overschakelen naar een Kindframe
Als uw test de huidige context van de browser naar een kinderframe wijzigt met behulp van switchToFrame() (WebdriverIO of WebDriverJS) of switchTo().frame() (Java Selenium), zal Axe Watcher geen paginatoestanden vastleggen voor acties die worden uitgevoerd terwijl de browser is gefocust op het kinderframe. Axe Watcher kan alleen het bovenliggende frame analyseren.
Bijvoorbeeld: in WebdriverIO zal de click()-aanroep hieronder geen paginatoestand opleveren:
await browser.url('https://example.com')
const iframe = await browser.$('iframe')
await browser.switchToFrame(iframe)
// Actions taken in the child frame will not be analyzed
await button.click()Om het vastleggen van paginastaten te hervatten, schakelt u terug naar het hoogste frame voordat u verder gaat:
// WebdriverIO
await browser.switchToParentFrame()
// WebDriverJS / Java Selenium
await driver.switchTo().defaultContent()Cypress is niet door deze beperking beïnvloed.
Extra paginatoestand gegenereerd door cy.screenshot()
Als u cy.screenshot() aanroept in uw Cypress-tests, kan Axe Watcher een extra paginatoestand genereren. Wanneer Cypress een screenshot maakt, wijzigt het kort de DOM om animaties uit te schakelen, en de DOM-waarnemer van Axe Watcher kan die wijziging detecteren als een paginatoestandverandering. Dit is verwacht gedrag en heeft geen invloed op de nauwkeurigheid van uw toegankelijkheidsresultaten.
Controller methode time-out
Java Watcher stelt je momenteel niet in staat om de time-outwaarden te wijzigen.
(Alleen JavaScript of TypeScript) U ontvangt een bericht dat lijkt op het volgende als oproepen naar de Controller-methoden (gedefinieerd in de Controller abstracte basisklasse als analyze(), flush(), start(), en stop()) of Cypress-aangepaste commando's tijdoverschrijden:
Error: Watcher could not send results to the server. To resolve this problem, adjust your `timeout.flush` property within your configuration or see https://docs.deque.com/developer-hub/wa-troubleshooting for more troubleshooting.De opgegeven Controller-methode (hier de flush()-methode) had meer tijd nodig dan de standaardtijd om te voltooien en is verlopen. U kunt de standaardtijd wijzigen door een timeout-object aan uw configuratie toe te voegen:
axe: {
timeout: {
flush: 10000
}
}Deze time-outwaarden zijn onafhankelijk van het testframework dat je gebruikt, en je moet mogelijk ook de time-outwaarden voor dat framework verhogen.
Zie Time-outs instellen voor informatie over het gebruik van time-outs.
Zie Timeouts Interface en timeouts voor meer informatie. De standaardwaarden voor time-outs zijn weergegeven in de tabel onder de Timeouts Interface.
Resultaten verschijnen niet
Als u uw testsuite hebt uitgevoerd en er worden geen resultaten weergegeven in Axe Developer Hub voor een bepaald project, kan de oorzaak te vinden zijn in de redenen in de volgende secties:
Axe Watcher niet configureren
Uw gewijzigde testsuite moet de juiste configuratiefunctie voor uw testframework aanroepen voordat u uw tests uitvoert. Als u Axe Watcher niet correct configureert, ontvangt u een bericht dat u Axe Watcher moet configureren. Bijvoorbeeld, als u vergeet Axe Watcher met Cypress te configureren, zult u dit bericht zien wanneer u uw testsuite uitvoert:
Cypress is not configured for axe Watcher. Please ensure that axe Watcher's cypressConfig() is invoked within Cypress's defineConfig() in your cypress.config.js. All tests will fail with this error.Raadpleeg de configuratie instructies voor configuratievoorbeelden voor uw taal en browsertestframework.
Resultaten niet doorspoelen
U moet de flush()-functie (of de aangepaste opdracht axeWatcherFlush() in Cypress) aanroepen om de verzamelde resultaten terug te sturen naar Deque's servers zodat de resultaten getoond kunnen worden op de Axe Developer Hub-website. Meestal roept u de flush()-functie aan in de opruimhaak van uw automatiseringsplatform.
Bijvoorbeeld: in het support/e2e.js-bestand in Cypress voegt u de oproep aan afterEach() toe:
// Flush axe-watcher results after each test.
afterEach(() => {
cy.axeWatcherFlush()
})De --incognito Optie Gebruiken
U kunt de --incognito-opdrachtregeloptie niet gebruiken met Chrome; anders zullen uw tests stilletjes falen. Als u de incognitomodus gebruikt om te vermijden dat gecachte bestanden op schijf worden geschreven (gecachede bestanden worden alleen in het geheugen bewaard in incognitomodus), gebruik dan de cachingmethoden van uw testsuite in plaats daarvan.
De Vereiste Omgevingsvariabelen Niet Instellen
Als u experimenteert met de voorbeelden in de watcher-examples repo op GitHub, let er dan op dat de voorbeelden omgevingsvariabelen gebruiken voor het instellen van de API-sleutel en project-ID, API_KEY en PROJECT_ID.
Testen Worden Te Snel Uitgevoerd
Je tests kunnen te snel worden uitgevoerd, waardoor de pagina wordt vrijgemaakt en de middelen worden vrijgegeven voordat Watcher het kan analyseren. Om dit probleem op te lossen, kun je aan het einde van de test een vertraging toevoegen om tijd te geven om de pagina te analyseren.
Bijvoorbeeld, in Cypress kunt u een vertraging van 10 seconden (10.000 milliseconden) toevoegen met de cy.wait()-methode:
describe('Visitor', () => {
it('should visit example.com', () => {
cy.visit('https://www.example.com')
cy.wait(10000); })
})Ontbrekende of Ongeldige API-sleutel
Een ongeldige of ontbrekende API-sleutel verschijnt als een ongeldige configuratiebestand in Cypress. De stack-trace zal onthullen of het ongeldig of ontbrekend is. Een ontbrekende-sleutel resulteert in het volgende:
AssertionError [ERR_ASSERTION]: API key is required
at validateApiKey ...(Vele regels van de stacktrace zijn verwijderd omwille van de beknoptheid.)
Een ongeldige-sleutel resulteert in de volgende stack-trace (verkort):
Error: Server responded to https://axe.deque.com/api/api-keys/test/validate/axe-devtools-watcher with status code 404:
{"error":"Invalid API key"}
at Response.getBody
...Hulp
Als u uw probleem niet kunt oplossen, neem dan mail ons dan met ons op zodat we kunnen helpen.

