Problemlösung
So beheben Sie häufige Probleme, die bei der Verwendung von axe Developer Hub auftreten
Watcher unterstützt nur Chrome
Obwohl die axe Developer Hub-Website mehrere Browser unterstützt, unterstützt das Paket @axe-core/watcher nur Google Chrome. Wenn Sie beispielsweise versuchen, den Electron-Browser von Cypress zum Testen zu verwenden, erhalten Sie eine Fehlermeldung. Weitere Informationen zur unterstützten Software mit axe Developer Hub und @axe-core/watcher finden Sie unter Systemanforderungen .
Parallele Testausführungen
Wenn Ihre Testsuite mehrere parallel ausgeführte Testausführungen verwendet, müssen Sie sicherstellen, dass jede Testausführung dieselbe nicht Null BuildID verwendet. Andernfalls überschreiben die Ergebnisse jeder Testausführung die Ergebnisse anderer Testausführungen für denselben Commit-SHA.
Normalerweise setzen Sie die BuildID in der AxeConfiguration Ihrer Testsuite fest. Weitere Informationen zur Verwendung paralleler Testläufer mit unterschiedlichen CI/CD-Plattformen finden Sie unter buildID in der API-Referenz.
Doppelte Zugänglichkeitsfehler oder neue Probleme werden falsch gezählt
Wenn Ihre Website dynamische IDs oder Klassennamen verwendet, die sich bei jeder Aktualisierung der Seite ändern, werden Sie wahrscheinlich doppelte Zugänglichkeitsfehler feststellen. Dies gilt insbesondere für Probleme, die als neu gekennzeichnet sind, wenn vorherige Testläufe das gleiche Problem für dasselbe Element angezeigt haben. (Axe Developer Hub verwendet IDs und Klassen, um dasselbe Element zwischen Testläufen zu identifizieren.) Um dieses Problem zu lösen, müssen Sie die Eigenschaft ancestry im Objekt runOptions in Ihrer Konfiguration auf true setzen. Das folgende Beispiel zeigt, wie Sie die Option in Ihrer Konfiguration festlegen:
axe: {
runOptions: {
ancestry: true
}
}
Weitere Informationen finden Sie unter runOptions .
Alte Version von @axe-core/watcher
Wenn Sie Version 3.18.0 oder älter von @axe-core/watcher verwenden, erhalten Sie diese Warnmeldung:
Axe Developer Hub hält sich jetzt an die in axe Configuration definierten Einstellungen, und Testläufe, die mit Versionen von @axe-core/watcher Version 3.18.0 oder älter erstellt wurden, generieren Sitzungen, die die globalen Einstellungen in der axe Configuration nicht kennen. Sie sollten Ihr @axe-core/watcher-Paket aktualisieren und Ihre Tests erneut ausführen, um Sitzungen zu erstellen, die der Axe-Konfiguration Ihres Unternehmens folgen. Siehe Verwenden globaler Konfigurationen.
Zeitüberschreitung bei Controllermethode
Sie erhalten eine Meldung ähnlich der folgenden, wenn bei Aufrufen der Controller-Methoden (definiert in der Controller
abstrakten Basisklasse als analyze
(), flush
(), start
() und stop
()) oder Cypress-benutzerdefinierte Befehle eine Zeitüberschreitung auftritt:
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/dh-troubleshooting for more troubleshooting.
Die angegebene Controller
Methode (hier die flush
()-Methode) benötigte mehr als die Standardzeit zur Ausführung und es kam zu einer Zeitüberschreitung. Sie können die Standardzeit ändern, indem Sie Ihrer Konfiguration ein timeout
Objekt hinzufügen:
axe: {
timeout: {
flush: 10000
}
}
Diese Timeout-Werte sind unabhängig vom von Ihnen verwendeten Test-Framework und Sie müssen möglicherweise auch die Timeout-Werte für dieses Framework erhöhen.
Weitere Informationen finden Sie unter Timeouts
-Schnittstelle und timeouts
. Die Standard-Timeout-Werte werden in der Tabelle unter der Timeouts
-Schnittstelle angezeigt.
Ergebnisse werden nicht angezeigt
Wenn Sie Ihre Testsuite ausgeführt haben und im axe Developer Hub für ein bestimmtes Projekt keine Ergebnisse angezeigt werden, kann die Ursache in den folgenden Abschnitten zu finden sein:
Nicht Konfigurieren des axe Watcher
Ihre geänderte Testsuite muss vor der Ausführung Ihrer Tests die entsprechende Konfigurationsfunktion für Ihr Testframework aufrufen. Wenn Sie @axe-core/watcher nicht richtig konfigurieren, kann es schwierig sein, dieses Problem zu identifizieren. Beispielsweise kann eines der folgenden Probleme auftreten:
- Ihre Testsuite könnte mit einem nicht zurückgegebener Promise-Fehler fehlschlagen.
- Ihre Testsuite könnte unbemerkt fehlschlagen.
- Bei Ihrer Testsuite kann es zu einer Zeitüberschreitung kommen.
In den Konfigurationsanweisungen finden Sie Beispiele für Konfigurationen für Ihr Sprach- und Browser-Testframework.
Ergebnisse werden nicht gesendet
Sie müssen die Funktion flush() (oder den benutzerdefinierten Befehl axeWatcherFlush() in Cypress) aufrufen, um die gesammelten Ergebnisse an die Server von Deque zurückzusenden, damit die Ergebnisse auf der axe Developer Hub-Website präsentiert werden können. Normalerweise rufen Sie die Funktion flush() im Bereinigungs-Hook Ihrer Automatisierungsplattform auf.
Beispielsweise fügen Sie in der Datei support/e2e.js in Cypress den Aufruf von afterEach() hinzu:
// Flush axe-watcher results after each test.
afterEach(() => {
cy.axeWatcherFlush()
})
Verwenden der Option --incognito
Sie können die Befehlszeilenoption --incognito nicht mit Chrome verwenden, da Ihre Tests andernfalls unbemerkt fehlschlagen. Wenn Sie den Inkognito-Modus verwenden, um das Schreiben zwischengespeicherter Dateien auf die Festplatte zu vermeiden (zwischengespeicherte Dateien bleiben nur im Inkognito-Modus im Speicher), verwenden Sie stattdessen die Caching-Methoden Ihrer Testsuite.
Nichteinstellen der erforderlichen Umgebungsvariable
Die Beispiele im axe Developer Hub Beispiel-Repository auf GitHub verwenden eine Umgebungsvariable zum Festlegen des API-Schlüssels, API_KEY.
Sie können es in der Umgebung festlegen oder beim Ausführen von Tests in der Befehlszeile angeben.
Test wird zu schnell ausgeführt
Ihre Tests werden möglicherweise zu schnell ausgeführt, wodurch die Seite entladen und ihre Ressourcen freigegeben werden, bevor Watcher sie analysieren kann. Um dieses Problem zu beheben, können Sie am Ende des Tests eine Verzögerung hinzufügen, um Zeit für die Analyse der Seite zu haben.
In Cypress, können Sie beispielsweise eine Verzögerung von 10 Sekunden (10.000 Millisekunden) mit der Methode cy.wait() hinzufügen:
describe('Visitor', () => {
it('should visit example.com', () => {
cy.visit('https://www.example.com')
cy.wait(10000); })
})
Fehlender oder ungültiger API-Schlüssel
Ein ungültiger oder fehlender API-Schlüssel wird in Cypress als ungültige Konfigurationsdatei angezeigt. Der Stacktrace zeigt an, ob er ungültig ist oder fehlt. Ein fehlender Schlüssel führt zu folgendem:
AssertionError [ERR_ASSERTION]: API key is required
at validateApiKey ...
(Viele Zeilen der Stapelspur wurden der Kürze halber gelöscht.)
Ein ungültiger Schlüssel führt zu folgendem Stapelspur (verkürzt):
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
...
Hilfe
Wenn Sie Ihr Problem nicht lösen können, senden Sie uns bitte eine E-Mail(mailto:helpdesk@deque.com) , damit wir Ihnen helfen können.