Beschleunigen Sie Ihre Tests
Techniken zur Reduzierung der Zeit, die Axe Watcher zu Ihrer End-to-End-Test-Suite hinzufügt
Die Integration von Axe Watcher in Ihre End-to-End-Test-Suite fügt Zeit hinzu, da Watcher jede Seite analysiert, die Ihre Tests besuchen. Wenn dieser Overhead zu einem Problem wird, ermöglichen Ihnen die folgenden Techniken, ihn zu reduzieren, ohne auf die gewünschte Abdeckung zu verzichten.
Schließen Sie Seiten aus, die Sie nicht testen müssen
Wenn Ihre Test-Suite Seiten besucht, die Sie nicht auf Barrierefreiheit testen müssen (Login-Seiten, Seiten von Drittanbietern, Admin-Dashboards, Checkout-Prozesse eines anderen Teams), können Sie diese vollständig überspringen, indem Sie excludeUrlPatterns verwenden. Das Überspringen ganzer Seiten ist der effektivste Weg, um die Testzeit zu reduzieren.
JavaScript oder TypeScript:
axe: {
excludeUrlPatterns: [ 'https://example.com/login*', 'https://example.com/admin/**' ]
}Java:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setExcludeUrlPatterns(new String[] {
"https://example.com/login*",
"https://example.com/admin/**"
});Siehe URLs von der Analyse ausschließen für Syntax- und Übereinstimmungsmusterbeispiele.
Analyse auf bestimmte Seitenabschnitte beschränken
Statt die gesamte Seite zu analysieren, verwenden Sie runContext, um sich auf den Abschnitt zu konzentrieren, den Ihr Test untersucht. Wenn ein Test beispielsweise nur das Checkout-Formular abdeckt, besteht keine Notwendigkeit, die Navigation, den Footer oder die Sidebar zu analysieren.
JavaScript oder TypeScript:
axe: {
runContext: {
include: '.checkout-form',
exclude: '.site-navigation'
}
}Java:
AxeRunContext context = new AxeRunContext()
.setInclude(Arrays.asList(".checkout-form"))
.setExclude(Arrays.asList(".site-navigation"));
AxeWatcherOptions options = new AxeWatcherOptions();
options.setRunContext(context);Wenn Sie Elemente angeben, die über runContext einbezogen werden sollen, analysiert Axe Watcher nur die übereinstimmenden Elemente. Wenn ein Selektor nichts auf der Seite findet, wird nichts analysiert, und es wird kein Seitenzustand erfasst. Überprüfen Sie Ihre Selektoren gründlich, bevor Sie diese Konfiguration anwenden.
Siehe (JavaScript/TypeScript) runContext oder (Java) AxeRunContext für weitere Informationen.
Teure Regeln deaktivieren
Einige axe-core-Regeln sind rechenintensiv. Die color-contrast-Regel erfordert zum Beispiel, dass der Browser die dargestellte Farbe jedes sichtbaren Textelements auf der Seite berechnet, was auf inhaltsreichen Seiten erhebliche Zeit in Anspruch nehmen kann.
Sie können bestimmte Regeln mithilfe von runOptions.rules deaktivieren:
JavaScript oder TypeScript:
axe: {
runOptions: {
rules: {
'color-contrast': { enabled: false }
}
}
}Java:
Map<String, AxeRuleOptions> rules = new HashMap<>();
rules.put("color-contrast", new AxeRuleOptions().setEnabled(false));
AxeRunOptions runOptions = new AxeRunOptions();
runOptions.setRules(rules);
AxeWatcherOptions options = new AxeWatcherOptions();
options.setRunOptions(runOptions);Das Deaktivieren einer Regel bedeutet, dass Probleme, die von dieser Regel erfasst würden, in Ihren Ergebnissen nicht erscheinen. Erwägen Sie, deaktivierte Regeln in einer separaten, dedizierten Test-Suite auszuführen, anstatt sie dauerhaft zu überspringen.
Die Verwendung von runOptions.rules (oder runOnly) erzeugt eine Warnung, da diese Einstellungen mit der globalen Axe-Konfiguration Ihrer Organisation in Konflikt geraten können. Siehe Verwenden von runOptions mit runOnly oder Rules.
Siehe (JavaScript/TypeScript) runOptions oder (Java) AxeRunOptions für weitere Informationen.
Manuellen Modus verwenden, um zu steuern, welche Tests Seiten analysieren
Standardmäßig analysiert Watcher automatisch jede Seite, die Ihre Tests besuchen. Wenn der größte Teil Ihrer Test-Suite Seiten besucht, die Sie nicht überprüfen müssen, können Sie die automatische Analyse global deaktivieren und sie nur in den Tests aktivieren, die sie benötigen.
JavaScript oder TypeScript:
axe: {
autoAnalyze: false
}Java:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setAutoAnalyze(false);Wenn die automatische Analyse deaktiviert ist, rufen Sie analyze() explizit an den Stellen auf, an denen Sie ein Ergebnis benötigen, und verwenden Sie start() / stop(), um Abschnitte Ihrer Test-Suite zu klammern, in denen Sie möchten, dass die automatische Analyse wieder aufgenommen wird.
Siehe Steuern Sie Ihre Scans für vollständige Anweisungen und Beispiele.
Tests parallel ausführen
Wenn Ihre Testinfrastruktur parallele Ausführung unterstützt, reduziert das Ausführen Ihrer Test-Suite mit mehreren Arbeitern die gesamte Laufzeit. Watcher unterstützt parallele Test-Runner; Sie müssen nur sicherstellen, dass jeder Arbeiter die gleiche nicht-null buildID teilt, damit deren Ergebnisse zusammengeführt und nicht überschrieben werden.
Siehe Tests parallel ausführen für Anweisungen zur Einrichtung.
Zusammenfassung
| Technik | Am besten geeignet für | Kompromiss |
|---|---|---|
| Seiten ausschließen | Seiten, die Ihrem Team nicht gehören oder nicht getestet werden müssen | Wichtige Seiten könnten versehentlich verpasst werden |
| Seitenabschnitte begrenzen | Große Seiten, von denen nur ein Teil relevant für Ihren Test ist | Probleme außerhalb der ausgewählten Abschnitte werden nicht gefunden |
| Teure Regeln deaktivieren | Teams feststellen, dass bestimmte teure Regeln nicht auf ihre Situation zutreffen | Diese Regeln werden in dieser Test-Suite nicht ausgeführt |
| Manueller Modus | Testsuiten, die viele für Barrierefreiheitstests irrelevante Seiten besuchen | Erfordert explizite analyze()- / start()- / stop()-Aufrufe im Testcode |
| Paralleles Testen | Teams mit CI-Infrastruktur, die parallele Worker unterstützt | Erfordert die Koordination von buildID über Worker hinweg |
