Kontrollieren Sie Ihre Scans
Der manuelle Modus von Watcher ermöglicht es Ihnen, auszuwählen, wann oder welche Seiten Ihrer Website auf Barrierefreiheit untersucht werden.
Standardmäßig bestimmt Axe Watcher in dem, was als automatischer Modus bekannt ist, automatisch, wann eine Webseite analysiert werden soll (ob sie von Ihrer Test-Suite besucht wird oder basierend auf erkannten Änderungen am DOM der Seite). Manchmal führt diese automatische Analyse zu einem Verhalten, das nicht mit den Zielen Ihrer Organisation kompatibel ist: Es werden zu viele Seiten analysiert (Seiten, die für Sie nicht relevant sind oder Seiten, die anderen Abteilungen Ihrer Organisation gehören). Sie können den automatischen Modus deaktivieren, wodurch es Ihnen ermöglicht wird, selbst zu bestimmen, wann (oder ob) eine Webseite analysiert werden soll (bekannt als manueller Modus).
Szenarien
Teile einer Website scannen
Sie können den manuellen Modus verwenden, um nur einen Teil einer Website zu scannen. Wenn Ihr Team beispielsweise für die Einkaufswagen-Funktionalität auf Ihrer Seite verantwortlich ist, aber Ihre Test-Suite Katalogseiten besuchen muss (die nicht Ihrem Team gehören), um Produkte in den Einkaufswagen zu legen, möchten Sie wahrscheinlich die Barrierefreiheit der Katalogseiten nicht testen. Sobald Sie in Ihrer Test-Suite die Einkaufswagenseite erreicht haben, können Sie die automatische Analyse wieder aktivieren. Und wenn die Tests für den Einkaufswagen abgeschlossen sind, können Sie die automatische Analyse erneut deaktivieren.
Nächste Schritte
- Automatische Analyse in der Konfiguration deaktivieren, um die Katalogseiten nicht zu testen.
- Automatische Analyse aktivieren für Ihre Einkaufswagenseite.
- Deaktivierung der automatischen Analyse über einen Aufruf am Ende des Tests Ihrer Einkaufswagenseite, um zu verhindern, dass Seiten getestet werden, die nach der Einkaufswagenseite besucht werden.
Dynamisches Laden von Inhalten
Sie können den manuellen Modus verwenden, um den Test von Seiten mit komplexen Ladeabläufen zu vermeiden. Wenn die Seite, die Sie testen möchten, viele Ressourcen im Hintergrund dynamisch lädt, können Sie den automatischen Modus deaktivieren, bis sie vollständig geladen ist. Dies begrenzt Barrierefreiheitsprobleme auf diejenigen, die nur dann existieren, wenn die Seite vollständig geladen ist. Es würde auch verhindern, dass während Ladeanimationen oder anderen Lade-UI Barrierefreiheitsprüfungen durchgeführt werden.
Nächste Schritte
- Automatische Analyse in der Konfiguration deaktivieren, damit die Ladeanimationen und die Benutzeroberfläche nicht auf Barrierefreiheitsfehler getestet werden.
- Automatische Analyse aktivieren, um die automatische Barrierefreiheitsprüfung wieder aufzunehmen, sobald die Seite vollständig geladen ist.
Spezifische Seitenzustände erfassen
Wenn Sie sicherstellen möchten, dass ein bestimmter Seitenzustand gescannt wird, können Sie eine Barrierefreiheitsanalyse manuell ausführen, nachdem Sie Ihre Seite eingerichtet haben.
Nächste Schritte
- Automatische Analyse in der Konfiguration deaktivieren, um zu verhindern, dass die Barrierefreiheitsanalyse durchgeführt wird, bevor die Seite in dem Zustand ist, den Sie benötigen.
- Seiten manuell analysieren, um den spezifischen Seitenzustand zu testen, an dem Sie interessiert sind.
Einschränkung des Umfangs einer großen Test-Suite
Durch das Deaktivieren der automatischen Analyse können Sie eine größere, umfassendere Test-Suite verwenden, aber Ihre Barrierefreiheitsprüfungen auf nur einen Teil davon beschränken. In diesem Fall müssen Sie Ihre größere Test-Suite nicht in kleinere aufteilen und die Barrierefreiheit nur in den Test-Suiten prüfen, die Sie interessieren.
Nächste Schritte
- Automatische Analyse in der Konfiguration deaktivieren, um zu verhindern, dass die automatische Barrierefreiheitsanalyse zu Beginn Ihrer Test-Suite startet.
- Automatische Analyse aktivieren, wenn Sie den Teil Ihrer Test-Suite erreichen, den Sie testen möchten.
- Deaktivierung der automatischen Analyse über einen Aufruf, um die Barrierefreiheitsprüfung für Teile der Test-Suite zu deaktivieren, die Sie nicht auf Barrierefreiheitsfehler testen möchten.
Wie man den manuellen Modus verwendet
Sie können die automatische Analyse in Ihrer Konfiguration deaktivieren (siehe unten Automatische Analyse in der Konfiguration deaktivieren).
Die Seitenanalyse wird von drei Methoden auf dem Controller-Objekt oder den entsprechenden Befehlen in Cypress gesteuert.
analyze()(in Cypress:cy.axeWatcherAnalyze()), um eine Analyse der aktuellen Seite durchzuführen.start()(in Cypress:cy.axeWatcherStart()), um die automatische Barrierefreiheitsanalyse zu aktivieren.stop()(in Cypress:cy.axeWatcherStop()), um die automatische Barrierefreiheitsanalyse zu deaktivieren.
Ein Controller-Objekt erhalten
(JavaScript/TypeScript) Für Informationen, wie Sie ein Controller Objekt erhalten, siehe Schritt vier der Anleitungsseite Ihres Testframeworks:
JavaScript:
TypeScript:
(Java) Für Java finden Sie weitere Informationen in Schritt drei auf der Anleitungsseite des Testframeworks. Schritt vier zeigt, wie man das wrappedDriver aufruft, um seine flush()-Methode zu verwenden:
Cypress
(JavaScript/TypeScript) Für Cypress können Sie das globale cy-Objekt mit diesen gleichwertigen Befehlen verwenden:
| Controllermethode | Cypress-Befehl |
|---|---|
analyse() |
axeWatcherAnalyze() |
flush() |
axeWatcherFlush() |
start() |
axeWatcherStart() |
stop() |
axeWatcherStop() |
Playwright Test
(JavaScript/TypeScript) Für Playwright Test kann das Controller-Objekt (PlaywrightController) aus page bezogen werden, das ein axeWatcher-Objekt enthält. Sie können das axeWatcher-Objekt verwenden, um die Controller-Methoden aufzurufen (das untenstehende Beispiel ist in TypeScript):
import { test, expect } from './fixtures'
test('example test', async ({ page }) => {
await page.goto('https://example.com')
await page.axeWatcher.analyze()
})Automatische Analyse in der Konfiguration deaktivieren
Sie können die automatische Barrierefreiheitstests deaktivieren, indem Sie
- (JavaScript/TypeScript) Die
autoAnalyze-Eigenschaft auf dem Axe-Konfigurationsobjekt auffalsesetzen. - (Java) Die
setAutoAnalyze()-Methode mitfalseaufrufen.
(JavaScript/TypeScript) Zum Beispiel setzen Sie autoAnalyze auf false in Ihrer Konfiguration (die Zeile ist im untenstehenden Cypress-JavaScript-Beispiel hervorgehoben):
const { defineConfig } = require('cypress');
const { cypressConfig } = require('@axe-core/watcher/cypress/config');
const API_KEY = process.env.API_KEY
const PROJECT_ID = process.env.PROJECT_ID
module.exports = defineConfig(
cypressConfig({
axe: {
apiKey: API_KEY, projectId: PROJECT_ID,
autoAnalyze: false
},
// Your existing Cypress configuration code here
})
);Deaktivierung der automatischen Analyse über einen Aufruf
Mit Cypress können Sie den axeWatcherStop()-Befehl verwenden:
cy.axeWatcherStop()(JavaScript/TypeScript) Die anderen Testintegrationen verwenden die stop()-Methode auf Ihrem Controller-Objekt:
await controller.stop()(Java) In der Java Watcher-Integration verwenden Sie die AxeWatcherController.stop()-Methode.
Siehe Ein Controller-Objekt erhalten für weitere Informationen darüber, wie Sie ein Controller-Objekt für Ihr Testframework erhalten.
Seiten manuell analysieren
Nachdem Sie die automatische Analyse deaktiviert haben, können Sie Aufrufe zu (JavaScript/TypeScript) axeWatcherAnalyze() (für Cypress) oder analyze() (mit den anderen Testintegrationen) hinzufügen. (Java) Für Java verwenden Sie die AxeWatcherController.analyze()-Methode.
Zum Beispiel für Cypress:
describe('My Login Application', () => {
it('should login with valid credentials', () => {
cy.visit('https://the-internet.herokuapp.com/login')
// Analyze the page.
.axeWatcherAnalyze() .get('#username')
.type('tomsmith')
.get('#password')
.type('SuperSecretPassword!')
.get('button[type="submit"]')
.click()
.wait(1000)
// Analyze the page.
.axeWatcherAnalyze() // Restart automatic axe analysis.
.axeWatcherStart()
.get('#flash')
.should('exist')
})
})Siehe Ein Controller-Objekt erhalten für weitere Informationen darüber, wie Sie ein Controller-Objekt für Ihr Testframework erhalten.
Automatische Analyse aktivieren
Mit Cypress können Sie den axeWatcherStart-Befehl verwenden:
cy.axeWatcherStart()Die anderen Testintegrationen verwenden die start-Methode auf Ihrem Controller-Objekt:
await controller.start()Siehe Ein Controller-Objekt erhalten für weitere Informationen darüber, wie Sie ein Controller-Objekt für Ihr Testframework erhalten.
Watcher nur bei bestimmten Testruns ausführen
End-to-End-Tests können zeitaufwendig oder kostspielig in Bezug auf Cloud-Computing sein. Sie möchten vielleicht nicht, dass Watcher bei jedem Commit oder jedem Testrun Seiten analysiert, sondern nur, wenn Sie explizit einen Accessibility-Scan wünschen. Sie können die Analyse über eine Umgebungsvariable steuern, indem Sie den Wert der Variablen an autoAnalyze übergeben. Dies gibt Ihnen zwei verschiedene Testbefehle: einen ohne Analyse und einen mit.
(JavaScript/TypeScript) Zum Beispiel in einer Cypress-Konfiguration:
const { defineConfig } = require('cypress')
const { cypressConfig } = require('@axe-core/watcher/cypress/config')
const API_KEY = process.env.API_KEY
const PROJECT_ID = process.env.PROJECT_ID
const ACCESSIBILITY_TESTING = process.env.ACCESSIBILITY_TESTING === 'true'
module.exports = defineConfig(
cypressConfig({
axe: {
apiKey: API_KEY,
projectId: PROJECT_ID,
autoAnalyze: ACCESSIBILITY_TESTING
},
// Your existing Cypress configuration code here
})
)Fügen Sie zwei Skripte zu Ihrem package.json hinzu, eines mit gesetzter Variablen und eines ohne:
{
"scripts": {
"test:e2e": "cypress run",
"test:e2e:accessibility": "ACCESSIBILITY_TESTING=true cypress run"
}
}Unter Windows verwenden Sie cross-env, um Umgebungsvariablen plattformübergreifend zu setzen. Sie können jeden beliebigen Namen für die Umgebungsvariable wählen; ACCESSIBILITY_TESTING ist nur ein Beispiel.
Der gleiche Ansatz gilt für andere JavaScript- und TypeScript-Testframeworks: Lesen Sie die Variable in Ihrer Konfigurationsdatei und übergeben Sie ihren booleschen Wert an autoAnalyze. (Java) Java-Nutzer können den Wert an setAutoAnalyze() übergeben.
Dieser Ansatz steuert, ob Watcher Seiten analysiert, nicht ob Watcher initialisiert wird. Ein Teil der Watcher-Einrichtung erfolgt weiterhin in Ihrer Testumgebung, unabhängig vom Wert der Umgebungsvariable.
Siehe auch
- (JavaScript/TypeScript) Für zwei funktionierende Beispiele von Tests im manuellen Modus (für Cypress und Playwright) siehe die folgenden Beispiele im watcher-beispiele-Repo auf GitHub:
- Für Cypress siehe Cypress manueller Modus
- Für Playwright siehe Playwright manueller Modus
