Cypress Accessibility Testing

Nach jeder Aktion neu prüfen

Buttons, Links, Felder, ARIA-Zustände: der Test folgt dem Bedienweg.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2Tauschen-Button ohne Namen

Testlauf als Bedienweg

Axe sieht immer nur den aktuellen Zustand

Öffnen, prüfen, weiterbedienen: jeder neue DOM-Zustand braucht seinen eigenen Blick.

Konzeptansicht: ein Cypress-Lauf mit zwei axe-PrüfungenDie Oberfläche ist eine Illustration, kein echter Test-Runner.

Cypress15.21.1

cypress-axe1.7.0

axe-core4.13.0

Kompatibel gepinnt · Stand September 2026
01cy.visit()Seite laden
02cy.injectAxe()axe einfügen
03cy.checkA11y()Seite geschlossen
04.click()Panel öffnen
05cy.checkA11y()Seite geöffnet

Cypress-Befehlslog

  1. visit /suche
  2. injectAxe
  3. checkA11y
  4. click [data-open]
  5. ×checkA11y
Beispielbefundbutton-name

Schließen-Symbol ohne zugänglichen Namen

localhost:4200/suche
SucheAntworten finden

Das Panel ist jetzt Teil des DOM-Zustands.

Filter× Name fehlt

SuchbegriffBarrierefreiheit

axe prüft diesen geöffneten Zustand

Einmal einrichten

Terminal

npm install --save-dev \
  cypress@15.21.1 \
  cypress-axe@1.7.0 \
  axe-core@4.13.0

cypress/support/e2e.js

import 'cypress-axe';

Der Import registriert injectAxe und checkA11y für alle Spezifikationen. injectAxe steht nach jedem neuen visit.

Den Zustand und den Tastaturweg prüfen

cypress/e2e/suche.cy.js

describe('Suche', () => {
  beforeEach(() => {
    cy.visit('/suche');
    cy.injectAxe();
  });

  it('prüft das geöffnete Filterpanel', () => {
    cy.checkA11y();

    cy.get('[data-open]').click();
    cy.get('[data-panel]').should('be.visible');

    cy.checkA11y();
  });

  it('prüft den Fokusweg im Panel', () => {
    cy.get('[data-open]').focus();
    cy.press(Cypress.Keyboard.Keys.ENTER);
    cy.get('[data-close]').should('have.focus');

    cy.press(Cypress.Keyboard.Keys.TAB);
    cy.get('[data-search]').should('have.focus');
  });
});

So prüfen Sie die Einrichtung

  1. Runner startennpx cypress open
  2. Spezifikation wählensuche.cy.js
  3. Panel beobachtenBeide checkA11y-Aufrufe erscheinen.
  4. Fehler behebenDanach bleibt derselbe Bedienweg grün.

Aus dem Prüfbericht

Fünf Regeln auf einem Bedienweg

Kritisch Der Aufklappzustand am Menü-Button Regel aria-valid-attr-value

Erlaubt sind nur true und false. Ein Wert wie „maybe“ fällt im Testlauf auf und wird durch den echten Zustand ersetzt.

Anleitung: Gültige ARIA-Attributwerte setzen

Kritisch Ein Link im Button der Trefferliste Regel nested-interactive

Verschachtelte Bedienelemente meldet axe zuverlässig. Trennen Sie Link und Schaltfläche, dann prüft cy.press() beide als eigene Tabstopps.

Anleitung: Verschachtelte Bedienelemente auflösen

Zum Mitnehmen

Der Testlauf, korrigiert

Erst nach jeder Aktion prüfen, dann den Tastaturweg.

Korrektur in 3 Schritten ansehen
  1. Nach jeder Aktion erneut prüfen

    cypress-axe prüft die Seite zum Zeitpunkt des Aufrufs. Was ein Klick einblendet, sehen Sie nur mit einem zweiten Lauf.

    KorrekturvergleichSchritt 1 · JavaScript

    Vorher

    cy.visit('/suche');
    cy.injectAxe();
    cy.checkA11y();
    cy.get('[data-open]').click();

    Nachher

    cy.visit('/suche');
    cy.injectAxe();
    cy.checkA11y();
    cy.get('[data-open]').click();
    cy.checkA11y();

    Markierte Zeilen wurden geändert

    So prüfen Sie es Öffnen Sie das Panel im Testlauf. Der Bericht führt jetzt auch dessen Felder auf.

  2. Den Tabweg mit cy.press prüfen

    focus() setzt den Fokus selbst und beweist nichts. cy.press() löst einen echten Tab-Wechsel aus und zeigt das nächste erreichbare Element.

    KorrekturvergleichSchritt 2 · JavaScript

    Vorher

    cy.get('[data-close]').focus();
    cy.focused().should('have.attr', 'data-close');

    Nachher

    cy.get('[data-open]').focus();
    cy.press(Cypress.Keyboard.Keys.TAB);
    cy.focused().should('have.attr', 'data-close');

    Markierte Zeilen wurden geändert

    So prüfen Sie es Sehen Sie sich den Testlauf an. Der Fokus wandert Schritt für Schritt weiter.

  3. Dem Schließen-Symbol einen Namen geben

    Das Symbol ist für Vorleseprogramme verborgen. aria-label liefert den Namen, den der Testlauf und die Bedienung brauchen.

    KorrekturvergleichSchritt 3 · HTML

    Vorher

    <button data-close>
      <svg aria-hidden="true"><use href="#icon-x"></use></svg>
    </button>

    Nachher

    <button data-close aria-label="Dialog schließen">
      <svg aria-hidden="true"><use href="#icon-x"></use></svg>
    </button>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tabben Sie auf das Symbol. Ein Vorleseprogramm sagt „Dialog schließen, Schaltfläche“.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.