Beschleunigen Sie Ihre Tests

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Techniken zur Reduzierung der Zeit, die Axe Watcher zu Ihrer End-to-End-Test-Suite hinzufügt

Not for use with personal data

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);
important

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);
important

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