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-Testreihe hinzufügt

Not for use with personal data

Die Integration von Axe Watcher in Ihre End-to-End-Testreihe verlängert die Ausführungszeit, da Watcher jede Seite analysiert, die Ihre Tests besuchen. Wenn dieser Mehraufwand ein Problem darstellt, können Sie mit den unten genannten Techniken die Zeit reduzieren, ohne auf die gewünschte Abdeckung zu verzichten.

Seiten ausschließen, die Sie nicht testen müssen

Wenn Ihre Testreihe Seiten besucht, die Sie nicht auf Barrierefreiheit testen müssen (z.B. Anmeldeseiten, Drittanbieterseiten, Admin-Dashboards, Checkout-Flows, die von einem anderen Team verwaltet werden), können Sie diese vollständig überspringen, indem Sie excludeUrlPatterns. Das Überspringen ganzer Seiten ist der effektivste Weg, um die Testdauer zu verkürzen.

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 Mustersyntax und Übereinstimmungsbeispiele.

Analyse auf bestimmte Seitensektionen beschränken

Anstatt die gesamte Seite zu analysieren, verwenden Sie runContext , um sich auf den Abschnitt zu konzentrieren, den Ihr Test abdeckt. Zum Beispiel, wenn ein Test nur das Checkout-Formular abdeckt, besteht keine Notwendigkeit, die Navigation, das 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 über runContextangeben, analysiert Axe Watcher nur die übereinstimmenden Elemente. Wenn ein Selektor nichts auf der Seite findet, wird nichts analysiert und kein Seitenzustand erfasst. Überprüfen Sie Ihre Selektoren sorgfältig, bevor Sie diese Konfiguration einsetzen.

Siehe (JavaScript/TypeScript) runContext oder (Java) AxeRunContext für weitere Informationen.

Teure Regeln deaktivieren

Einige Regeln von axe-core sind rechnerisch aufwendig. Die color-contrast -Regel beispielsweise erfordert, dass der Browser die gerenderte Farbe jedes sichtbaren Textelements auf der Seite berechnet, was bei inhaltsreichen Seiten erheblich Zeit kosten kann.

Sie können spezifische Regeln deaktivieren, indem Sie runOptions.rules:

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 werden, nicht in Ihren Ergebnissen erscheinen. Ziehen Sie in Betracht, deaktivierte Regeln in einer separaten, dedizierten Testreihe auszuführen, anstatt sie dauerhaft zu überspringen.

Die Verwendung von runOptions.rules (oder runOnly) generiert eine Warnung, da diese Einstellungen mit der globalen Axe-Konfiguration Ihrer Organisation in Konflikt geraten können. Siehe Verwendung von runOptions mit runOnly oder Rules.

Siehe (JavaScript/TypeScript) runOptions oder (Java) AxeRunOptions für weitere Informationen.

Verwenden Sie den manuellen Modus, um zu steuern, welche Tests Seiten analysieren

Standardmäßig analysiert Watcher automatisch jede Seite, die Ihre Tests besuchen. Wenn der Großteil Ihrer Testreihe Seiten besucht, die Sie nicht überprüfen müssen, können Sie die automatische Analyse global ausschalten 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);

Mit deaktivierter automatischer Analyse rufen Sie ", "context": "paragraph analyze() explizit dort auf, wo Sie ein Ergebnis benötigen, und verwenden ", "context": "paragraph start() / ", "context": "paragraph stop() , um Abschnitte Ihrer Testreihe zu kennzeichnen, in denen Sie die automatische Analyse wieder aufnehmen möchten.", "context": "paragraph

Siehe ", "context": "paragraph Steuern Sie Ihre Scans", "context": "link text für ausführliche Anweisungen und Beispiele.", "context": "paragraph

Tests parallel ausführen

Wenn Ihre Testinfrastruktur parallele Ausführung unterstützt, reduziert die Ausführung Ihres Test-Suites mit mehreren Arbeitern die gesamte Echtzeit. Watcher unterstützt Parallel-Testläufer; Sie müssen nur sicherstellen, dass jeder Arbeiter den gleichen nicht-null buildID teilt, sodass ihre Ergebnisse kombiniert und nicht überschrieben werden.

Siehe Tests parallel ausführen für Anweisungen zur Einrichtung.

Zusammenfassung

Technik Am besten für Kompromiss
Seiten ausschließen Seiten, die Ihr Team nicht besitzt oder nicht testen muss Wichtige Seiten könnten versehentlich übersehen werden
Seitenteile beschränken Große Seiten, bei denen nur ein Teil für Ihren Test relevant ist Probleme außerhalb der ausgewählten Abschnitte werden nicht gefunden
Teure Regeln deaktivieren Teams stellen fest, dass bestimmte teure Regeln nicht auf ihre Situation zutreffen Diese Regeln werden in diesem Test-Suite nicht ausgeführt
Manueller Modus Test-Suites, die viele Seiten besuchen, die für Barrierefreiheitstests irrelevant sind Erfordert explizite analyze() / start() / stop() Aufrufe im Testcode
Paralleles Testen Teams mit CI-Infrastruktur, die parallele Arbeiter unterstützt Erfordert die Koordination buildID zwischen den Arbeitern