CometWebDostępność / WCAG / EAA

Przycisk z poprawną nazwą i pułapką klawiaturową

Maciej Zmitrukiewicz · Pakiet badania do artykułu Audyt dostępności cyfrowej: zakres, testy WCAG i EAA

To materiał do artykułu. We wrześniu 2026 przygotowałem dwie wersje tej samej małej strony z przyciskiem „Zamów”, żeby pokazać, że przycisk może mieć poprawną nazwę i rolę, a mimo to zatrzymać użytkownika klawiatury.

Na co patrzyłem

Obie strony mają pole e-mail, przycisk „Zamów” i link „Pomoc”. W pierwszej wersji celowo dodałem skrypt, który blokuje klawisz Tab na przycisku, a w drugiej go usunąłem. To strony napisane tylko do tego testu, a nie strony CometWeb ani klienta.

Skrypt w Playwright wczytał każdą stronę do Chromium bez serwera i najpierw odczytał rolę oraz nazwę przycisku z drzewa dostępności przeglądarki. Potem w dwóch osobnych przebiegach ustawił focus na przycisku i nacisnął trzy razy Tab, a w drugim trzy razy Shift+Tab. Przy wersji bez blokady sprawdzał, czy pierwszy krok w każdą stronę trafia do sąsiedniego elementu.

Wyniki

Co sprawdziłemWersja z blokadąWersja bez blokady
Rola i nazwa w drzewie dostępnościbutton, „Zamów”button, „Zamów”
Focus po trzech naciśnięciach Tabcały czas na przyciskupierwszy Tab przenosi go do linku „Pomoc”
Focus po trzech naciśnięciach Shift+Tabcały czas na przyciskupierwszy Shift+Tab przenosi go do pola e-mail

Poprawna nazwa i rola stały więc obok pułapki, z której użytkownik klawiatury nie wyjdzie. Ujawnił ją dopiero osobny test interakcji, co też pokazuje, że automatyczny skrypt może wykryć pułapkę, jeśli ktoś go do tego napisze. Pełną ścieżkę focusu w obu wersjach znajdziesz w pliku JSON.

Taką pułapkę opisuje kryterium 2.1.2 No Keyboard Trap. Wersja z blokadą nie daje żadnej drogi wyjścia. Otwarty modal, który trzyma focus, ale da się go obsłużyć i zamknąć klawiaturą, to inny przypadek.

Czego te dane nie pokażą

Pliki

Strony udostępniam jako tekst, żeby wadliwa wersja nie działała na żywo. Żeby powtórzyć test, zapisz pliki bez końcówki .txt jako lab/fixtures/before.html, lab/fixtures/after.html i lab/run_keyboard_lab.py, utwórz obok katalog evidence i uruchom skrypt z opcją --browser wskazującą Chromium. Ja używałem Playwright 1.57 i Chromium 144.

Wszystkie materiały · Wróć do artykułu