Młotek sędziowski na biurku, a w tle ludzie podczas rozprawy sądowej.

Opis zdjęcia: Młotek sędziowski na biurku, a w tle ludzie podczas rozprawy sądowej.

Co jest przedmiotem pozwów: Przewodnik po wzorcach interfejsu użytkownika leżących u podstaw 6 666 skarg dotyczących dostępności

Katalog wzorów · 19 eksponatów

Co jest przedmiotem pozwów: Przewodnik po wzorcach interfejsu użytkownika leżących u podstaw 6 666 skarg dotyczących dostępności

Skargi federalne dotyczące dostępności, składane na podstawie ustawy Americans with Disabilities Act, rzadko wskazują na nowe rodzaje uchybień. W kółko powtarzają te same dziewiętnaście zarzutów, używając mniej więcej tego samego sformułowania. Niniejszy katalog zawiera przegląd najczęściej występujących elementów stron, błędów w kodzie i wyborów projektowych — każdy z nich oparty jest na dosłownym cytacie zaczerpniętym z dokumentów skargi.

W poprzedniej części tej serii przeanalizowaliśmy sytuację procesową z szerszej perspektywy: 8 788 spraw federalnych w Stanach Zjednoczonych, kto je wnosi, jak skoncentrowana jest grupa prawników reprezentujących powodów oraz jak szybko dochodzi do ugody. Takie spojrzenie jest przydatne dla zespołów prawnych i finansowych. Jest ono jednak mniej przydatne dla programisty, projektanta lub menedżera produktu, który musi wprowadzić faktyczną poprawkę w poniedziałek rano.

W niniejszym przewodniku przyjęto odwrotne podejście. Rozpoczyna się on od samej strony. Każdy poniższy wpis to konkretny wzorzec interfejsu użytkownika — czasem pojedynczy element, czasem sekwencja — z którym zetknął się użytkownik czytnika ekranu, użytkownik korzystający z klawiatury lub użytkownik z wadą wzroku, z którym nie mógł sobie poradzić i który stał się przedmiotem pozwu w sądzie federalnym. Dla każdego z nich pokazujemy, co faktycznie napisali powodowie w pozwie, jak często ten wzorzec pojawia się w zbiorze danych, dlaczego powoduje spór sądowy i jak wygląda rozwiązanie.

Spis dowodów · Nr kat. 2026.04

19 wzorców · uszeregowanych według częstotliwości występowania w wyodrębnionych zgłoszeniach reklamacyjnych

n = 113 120 wydań
ID Wzór Strona / powierzchnia Zgłoszone problemy
E·01Pole formularza oznaczone jako „pole edycji”Formularze dostępne na całej witrynie17,693 ↑
E·02Nawigacja globalna / menu typu hamburgerNagłówek, na każdej stronie7,934
E·03Brakujący lub niewidoczny wskaźnik ostrościW całej witrynie7,294
E·04Logo i grafiki dekoracyjne bez tekstu alternatywnegoNagłówki, banery6,337
E·05Okno modalne / wyskakujące nie zostało zasygnalizowane ani nie ma na nim fokusuW całej witrynie3,476
E·06Film bez napisów ani transkrypcjiHero, strony z treścią3,355
E·07Karta produktu / siatka PLP nie działaStrony z ofertami2,900
E·08Rozmiar, ilość, przyciski z próbkami (strona produktu)Szczegóły produktu2,725
E·09Puste linki oraz „kliknij tutaj” / „czytaj dalej”W całej witrynie2,723
E·10Struktura strony: brakuje nagłówka H1, nieprawidłowe punkty orientacyjneW całej witrynie2,485
E·11Błędy w procesie realizacji zamówienia i pola obowiązkoweKasa1,656
E·12Elementy sterujące zawierające wyłącznie ikony (koszyk, czat, media społecznościowe)Nagłówek, stopka1,531
E·13Pasek wyszukiwania i sugestie autouzupełnianiaNagłówek1,252
E·14Nakładka ułatwiająca dostęp / sam widgetW całej witrynie1,210
E·15Formularze logowania, rejestracji i hasłaStrony autoryzacji1,158
E·16Strona koszyka: ilość, usuń, zaktualizujKoszyk1,022
E·17Bariery dostępne wyłącznie na urządzeniach mobilnychWersja mobilna strony internetowej / aplikacja787
E·18„Dodaj do koszyka” — brak dźwiękowego potwierdzeniaPDP, wózek718
E·19Etykiety pól płatności (kod CVV, numer karty)Kasa524

Liczby odzwierciedlają sklasyfikowane wpisy dotyczące kwestii spornych, zaczerpnięte z dokumentów skargowych zawartych w zbiorze danych sądów federalnych; jedna sprawa generuje zazwyczaj dziesiątki takich wpisów. Wzory uporządkowano według łącznej liczby odnotowanych kwestii spornych, a nie według częstotliwości występowania w poszczególnych sprawach.

Skąd pochodzą dane

Katalog opiera się na tym samym zbiorze danych sądów federalnych, który opisano w poprzedniej części: obejmuje on 8 788 spraw dotyczących dostępności stron internetowych w świetle tytułu III ustawy ADA, pobranych z systemu PACER (systemu publicznego dostępu do elektronicznych akt sądowych federalnego wymiaru sprawiedliwości), przy czym z dokumentów pozwów wyodrębniono 6 666 opisów poszczególnych problemów i przypisano je do 27 kategorii funkcjonalnych — nawigacja ogólna, komunikaty czytnika ekranu, nawigacja za pomocą klawiatury, formularze, okna modalne, płatności i tak dalej.

Każdy cytat w poniższych wpisach został zaczerpnięty z fragmentów akt sprawy w takiej postaci, w jakiej pojawia się w skardze, z niewielkimi poprawkami redakcyjnymi mającymi na celu jedynie usunięcie oczywistych błędów wynikających z rozpoznawania optycznego (np. „A nnounced” → „Announced”), które powstały podczas skanowania akt sądowych. Liczba zagadnień odzwierciedla liczbę skategoryzowanych wpisów, a nie liczbę unikalnych spraw — pojedyncza sprawa zazwyczaj generuje dziesiątki wpisów dotyczących zagadnień, obejmujących wiele kategorii. Tam, gdzie jest to przydatne, odnotowujemy względną dominację podwzoru w ramach danej kategorii.

Powodowie nie zajmują się w swoich pozwach rzadkimi, trudnymi do wykrycia błędami. W swoich pozwach wskazują na ten sam proces realizacji transakcji, to samo logo, to samo okno modalne, to samo pole formularza – na jednej stronie internetowej po drugiej.

Część I · Ścieżka użytkownika
Wzory, które są przedmiotem pozwów, w kolejności, w jakiej użytkownik je napotyka

Osiem elementów rozmieszczonych od momentu wejścia na stronę aż po realizację zamówienia. Elementy strony, z których w większości przypadków rozpoczyna się proces zakupowy, nie znajdują się na obrzeżach witryny, lecz wzdłuż ścieżki konwersji — nagłówek, wyszukiwarka, produkt, koszyk, realizacja zamówienia — dokładnie tam, gdzie generowane są przychody.

E·02

Nawigacja globalna i menu hamburgerowe bez etykiety

Dosłowne cytaty ze skarg
Przycisk menu głównego nie ma opisu
Link „Przejdź do menu” nie działa prawidłowo
Na stronie brakuje linku do pominięcia
Na stronie brakuje linku do przeskoczenia lub obszaru orientacyjnego, które umożliwiłyby użytkownikom korzystającym z klawiatury przejście do dalszej części strony, co zmusza ich do przechodzenia między elementami nagłówka za pomocą klawisza Tab
Częstotliwość
7 934wpisów sklasyfikowanych w kategorii „Globalna nawigacja / Nagłówek”
301 wpisówdotyczących konkretnie błędów związanych z menu, hamburgerem lub linkami pomijającymi
Dlaczego firma zostaje pozwana

Nagłówek to pierwszy interaktywny element na każdej stronie, a przycisk „hamburger” jest często pierwszą rzeczą, do której dociera użytkownik korzystający z klawiatury. Gdy przycisk ten jest wyświetlany jako <div> jeśli element zawiera obraz tła CSS, nie ma nazwy ułatwiającej dostęp lub rozwijając menu blokuje fokus albo nie informuje o swoim stanie (otwarte/zamknięte), cała strona staje się strukturalnie niedostępna przy obsłudze za pomocą klawiatury, zanim użytkownik dotrze do jakiejkolwiek rzeczywistej treści.

Link pomijający jest tym samym problemem. Działający "Skip to main content" Link ten wymaga zaledwie pięciu linijek kodu, ale stanowi jednocześnie najskuteczniejszy wskaźnik pozwalający sprawdzić, czy zespół programistów w ogóle uwzględnił kwestię dostępności w swojej liście kontrolnej. W zgłoszeniach często pojawiają się obie te kwestie w tym samym akapicie, ponieważ brakujący lub niedziałający link do pominięcia jest swego rodzaju „kanarkiem” – jeśli zespół nie wdrożył linku do pominięcia, to prawie na pewno nie wdrożył też stanów aria-expanded.

Poprawka

Przedstaw wywołanie menu jako rzeczywiste <button> z etykietą tekstową widoczną lub dostępną wyłącznie dla czytnika ekranu oraz zarządzanym aria-expanded atrybut. Podaj "Skip to main content" link, który staje się widoczny po najechaniu kursorem i prowadzi do strony <main> punkt orientacyjny. Upewnij się, że po otwarciu menu fokus przechodzi do niego, a po zamknięciu wraca do elementu wyzwalającego oraz że Esc zamyka menu.

Nagłówek strony, każda strona WCAG 2.2 AA2.4.1 Pomijanie bloków · 4.1.2 Nazwa, rola, wartość · 2.1.1 Klawiatura
E·13

Pasek wyszukiwania i sugestie autouzupełniania

Dosłowne cytaty ze skarg
Użytkownik nie może korzystać z paska wyszukiwania
Sugestie wyszukiwania wyświetlane poniżej paska wyszukiwania nie pozwalały na przeniesienie fokusu klawiatury
Użytkownik nie zauważył podpowiedzi wyszukiwania po wpisaniu frazy w pasku wyszukiwania
Powód nie został poinformowany, że na ekranie pojawiły się wyniki wyszukiwania
Częstotliwość
1 252wpisy dotyczące wyszukiwania i filtrowania
164 wpisówdotyczących konkretnie funkcji autouzupełniania, sugestii lub interfejsu z funkcją przewidywania
Dlaczego firma zostaje pozwana

W większości dużych witryn funkcja wyszukiwania jest zaimplementowana jako niestandardowy komponent — pole tekstowe z wygaszeniem, które wysyła żądanie przy każdym naciśnięciu klawisza i wyświetla pływającą listę sugestii wewnątrz elementu o pozycji absolutnej <div>. Samo pole tekstowe zazwyczaj działa bez zarzutu. Lista sugestii prawie nigdy nie działa poprawnie. Jest ona renderowana poza kontekstem DOM pola tekstowego i nie ma role="listbox", nie aria-activedescendant… i brak komunikatu o aktywnej strefie, gdy pojawiają się wyniki. Użytkownik czytnika ekranu wpisuje tekst, nie słyszy nic, naciska klawisz Enter i otrzymuje stronę z wynikami, o której nie wiedział, że tam czeka.

Ten sam wzorzec architektoniczny powtarza się zarówno w panelach filtrów wyszukiwania fasetowego, jak i na samej liście wyników: elementy, na które można przenieść fokus klawiatury, są widoczne, ale nigdy nie są odczytywane. Skargi dotyczące wyszukiwania rzadko dotyczą samego pola wyszukiwania; dotyczą one wszystkiego, co pojawia się po wpisaniu tekstu przez użytkownika.

Poprawka

Należy zastosować standardowy wzorzec Combobox zgodny z WAI-ARIA: role="combobox" na wejściu z aria-expanded, aria-controlsoraz aria-activedescendant podłączony do role="listbox" sugestii. Dodajcie elegancki obszar interaktywny, który wyświetla liczbę wyników. Upewnijcie się, że do listy sugestii można dotrzeć za pomocą klawisza strzałki w dół, a nie tylko myszką.

Wyszukiwaniew nagłówku strony· strona wyników wyszukiwania WCAG 2.2 AA4.1.2 Nazwa, rola, wartość · 4.1.3 Komunikaty o stanie · 2.1.1 Klawiatura
E·07

Karta produktu i siatka PLP

Dosłowne cytaty ze skarg
Użytkownik nie może obsługiwać tego filtra
Użytkownik nie może korzystać z menu filtrów
atrybuty i niedostępne filtry
W rezultacie użytkownik korzystający z czytnika ekranu nie może używać narzędzia „Filtr”
Częstotliwość
2 900wpisów na stronie z listą produktów
30 przypadkówwraz ze szczegółową analizą problemów związanych z PLP
Dlaczego firma zostaje pozwana

Siatka PLP skupia kilka antywzorców na jednym ekranie. Każdy element siatki to zazwyczaj klikalna karta zawierająca trzy lub cztery interaktywne elementy podrzędne — link do obrazu, link do tytułu, próbki kolorów, przycisk szybkiego dodawania — otoczone kolejnym linkiem do strony produktu. Skutkiem tego są zagnieżdżone elementy interaktywne (błąd HTML), zbędny tekst linków („Link do obrazu Hero Dash Three” powtarzający się cztery razy) oraz próbki kolorów zbudowane z <div> elementy z procedurami obsługi kliknięcia, ale bez roli i nazwy.

Pasek boczny filtru wprowadza drugą kategorię błędów. Filtry są zazwyczaj listami pól wyboru, ale tworzone są przy użyciu niestandardowych elementów div i span, stylizowanych tak, by wyglądały jak pola wyboru, przy czym rzeczywiste <input> ukryty poza ekranem. Gdy ten ukryty element wejściowy traci swoje powiązanie — na skutek reguły CSS, procedury obsługi zdarzeń JavaScript, która ignoruje naciśnięcia klawisza spacji, lub braku for atrybut na widocznej etykiecie — filtr można obsługiwać wyłącznie za pomocą myszy.

Poprawka

Używaj jednego linku na produkt z opisem, a nie trzech linków na produkt. Wyświetlaj próbki w rzeczywistym wyglądzie <button> elementy wewnątrz role="radiogroup". Twórz filtry według rzeczywistych <input type="checkbox"> elementy powiązane z <label> tagi; należy stylizować pola wprowadzania danych w sposób widoczny, zamiast je ukrywać. O zmianach w filtrze należy informować za pomocą uprzejmego komunikatu wyświetlanego na bieżąco.

Strony z listąproduktów Surface, wyniki wyszukiwania WCAG 2.2 AA1.3.1 Informacje i relacje · 2.4.4 Cel linku · 4.1.2 Nazwa, rola, wartość
E·08

Szczegóły produktu: przyciski rozmiaru, ilości i próbki

Dosłowne cytaty ze skarg
Przyciski „Rozmiar” i „Ilość” na stronach produktów nie mają opisów
Przycisk „Ilość” nie jest opisany ani dostępny na stronach produktów
Na stronach produktów brakuje opisu przycisku „Tabela rozmiarów”
Na stronie produktu witryna nie wyświetla informacji z przewodnika po rozmiarach
Częstotliwość
2 725wpisów dotyczących problemów na stronie szczegółów produktu
169 wpisówdotyczących konkretnie rozmiarów, ilości, próbek lub selektorów kolorów
Dlaczego firma zostaje pozwana

Na stronie szczegółów produktu użytkownik czytnika ekranu musi dokonać kilku konkretnych wyborów w odpowiedniej kolejności: wybrać kolor, wybrać rozmiar, określić ilość, a następnie dodać do koszyka. Każdy z tych wyborów jest w nowoczesnym e-commerce zrealizowany jako niestandardowy widget — zazwyczaj w postaci poziomego rzędu <button>w kształcie <div>Jeśli chodzi o rozmiary, kolorowe kafelki zbudowane z elementów div stylizowanych za pomocą CSS oraz suwak numeryczny złożony z dwóch przycisków z ikonami po obu stronach pola wprowadzania danych. Przyciski zwiększania i zmniejszania są zazwyczaj dostarczane bez nazwy ułatwiającej dostęp; w zgłoszeniach opisuje się je jako ogłoszono jako „button, button” bez żadnej wzmianki o tym, czym się zajmują.

Przewodniki po rozmiarach i tabele rozmiarów to osobny problem: prawie zawsze znajdują się one pod linkiem „Tabela rozmiarów”, który otwiera okno modalne, a sam link często nie ma opisu, okno modalne często nie ma widocznego tytułu, a tabela w środku często nie ma nagłówków wierszy ani kolumn.

Poprawka

Należy stosować prawdziwe elementy formularza. Próbki kolorów i selektory rozmiarów powinny być role="radiogroup" z role="radio" przyciski (lub rzeczywiste pola wyboru stylizowane tak, by były niewidoczne), z których każdy powinien mieć nazwę dostępności, np. „Rozmiar: Średni”. Suwak ilości powinien być oznaczonym polem liczbowym z parą przycisków zwiększania i zmniejszania, których nazwy dostępności zawierają opis działania oraz aktualną ilość. Cały blok wyboru należy umieścić w elemencie `fieldset` z podpisem.

Strony szczegółoweproduktów Surface WCAG 2.2 AA1.3.1 Informacje i relacje · 4.1.2 Nazwa, rola, wartość · 3.3.2 Etykiety lub instrukcje
E·18

„Dodaj do koszyka” — przycisk, który nie potwierdza

Dosłowne cytaty ze skarg
Brak informacji o potwierdzeniu dodania do koszyka
Przycisk „Dodaj do koszyka” NIE jest odczytywany i NIE jest dostępny
Komunikat „Dodaj do koszyka” nie jest odczytywany użytkownikom czytników ekranu
Użytkownik nie może dodać produktu do koszyka
Częstotliwość
718wpisów dotyczących akcji „Dodaj do koszyka”
78 wpisówzawierających konkretnie wyrażenie „nie ogłoszono” / „brak potwierdzenia”
Dlaczego firma zostaje pozwana

Funkcja „Dodaj do koszyka” to najczęściej testowany etap w każdym lejku e-commerce i jeden z tych, które najczęściej nie działają poprawnie dla użytkowników technologii wspomagających. Schemat jest prosty: użytkownik klika przycisk, na ekranie pojawia się na dwie lub trzy sekundy małe okienko potwierdzenia lub wysuwana szuflada koszyka, a ikona koszyka aktualizuje liczbę produktów w nagłówku. Użytkownicy widzący widzą wszystkie trzy sygnały. Użytkownicy czytników ekranu zazwyczaj nie otrzymują żadnego. Okienko pojawia się poza obszarem aktywnym, wysuwana szuflada pojawia się bez zarządzania fokusem, a zmiana liczby produktów w koszyku jest przekazywana jako zwykła mutacja DOM, której żaden czytnik ekranu nie ogłosi.

W rezultacie powstaje przycisk, który z punktu widzenia użytkownika nie działa. Naciskają go, nie słyszą żadnego dźwięku, zakładają, że coś poszło nie tak, i naciskają go ponownie. W niektórych zgłoszeniach klienci opisują, że naciskali przycisk pięć lub sześć razy, zanim zorientowali się, że do koszyka po cichu trafiło pięć lub sześć produktów.

Poprawka

Otocz obszar „cart-status” tagiem aria-live="polite" i aktualizować jego treść przy każdym pomyślnym dodaniu produktu. Jeśli projekt wykorzystuje okienko potwierdzenia, należy przenieść fokus na to okienko po jego otwarciu i przywrócić fokus do pierwotnego przycisku po jego zamknięciu. Należy zaktualizować znacznik liczby produktów w koszyku, dodając komunikat przeznaczony wyłącznie dla czytników ekranu, np. „Dodano 1 produkt. Łącznie w koszyku: 3 produkty”.

Szczegółyproduktu· koszyk · strony z listą produktów WCAG 2.2 AA4.1.3 Komunikaty o stanie · 4.1.2 Nazwa, rola, wartość · 2.4.3 Kolejność fokusowania
E·12

Elementy sterujące składające się wyłącznie z ikon: koszyk, dymek czatu, pasek mediów społecznościowych

Dosłowne cytaty ze skarg
Ikona koszyka nie ma odpowiedniego opisu
Ikony „Konto” i „Koszyk” nie są opatrzone podpisami na platformie cyfrowej pozwanego
Ikona czatu nie jest dostępna za pomocą klawiatury
Linki do mediów społecznościowych w stopce nie są opatrzone podpisami
Częstotliwość
1 531haseł dotyczących ikon i elementów wizualnych
40 wpisówdotyczących konkretnie oznaczania ikon koszyka
Dlaczego firma zostaje pozwana

Elementy sterujące składające się wyłącznie z ikon zawodzą w przewidywalny sposób: widoczna treść to plik SVG lub znak z czcionki ikonowej, treść dostępna jest pusta, a komunikat czytnika ekranu sprowadza się do strukturalnej roli elementu bez nazwy. Ikona koszyka jest w końcu ogłaszana jako „link” lub „zwinięta”; dymek czatu jako „przycisk”; rząd ikon społecznościowych w stopce jako „link, link, link, link, link”. Użytkownik nie ma możliwości dowiedzieć się, do czego służą.

Ikony koszyka ulegają awariom częściej niż inne ikony z przyczyn technicznych: w wielu implementacjach liczba produktów w koszyku jest renderowana w ramach nazwy dostępowej ikony (np. w pliku SVG ikona zawiera cyfrę „0”), a czytnik ekranu wychwytuje jedynie tę cyfrę. Zgłaszane skargi dotyczą sytuacji, w których ikona koszyka jest odczytywana jako „3, link” lub „0, link”, bez żadnej wskazówki, że „3” odnosi się do liczby produktów w koszyku.

Poprawka

Każdy element sterujący zawierający wyłącznie ikonę musi mieć nazwę dostępności. Dodaj aria-label na przycisku lub umieścić w nim niewidoczną etykietę tekstową: "Shopping cart, 3 items". Należy unikać umieszczania cyfr liczbowych w nazwie dostępności ikony bez odpowiedniego kontekstu. W przypadku ikon dekoracyjnych umieszczonych obok widocznego tekstu należy używać aria-hidden="true" kliknij ikonę i niech tekst pełni rolę etykiety.

Nagłówek· stopka · widżety pływające WCAG 2.2 AA1.1.1 Treści nietekstowe · 4.1.2 Nazwa, rola, wartość · 2.4.4 Cel linku
E·11

Kasa: formularz, którego nie da się wypełnić

Dosłowne cytaty ze skarg
Na stronie płatności nie wyświetla się komunikat o błędzie
Użytkownik nie może wprowadzić danych rozliczeniowych podczas finalizacji zamówienia
Listy rozwijane w sekcji „Dane rozliczeniowe” nie działają przy użyciu klawisza spacji
Komunikaty o błędach podczas finalizacji zamówienia są niejasne i nie informują użytkowników, co należy poprawić
Częstotliwość
1 656wpisów dotyczących procesu realizacji transakcji
124 wpisydotyczące komunikatów o błędach, pól obowiązkowych lub przeszkód w formularzu rozliczeniowym
Dlaczego firma zostaje pozwana

Strona kasy wiąże się z większym ryzykiem naruszenia przepisów na każdy piksel niż jakakolwiek inna strona w witrynie sklepu internetowego, a występowanie błędów jest bardzo częste. Lista rozwijana z adresami wyświetlana jako element niestandardowy <div> elementy, które ignorują klawisz spacji. Oznaczenia pól obowiązkowych wyświetlane są wyłącznie jako czerwona gwiazdka, bez aria-required ani żadnego powiązania programowego. Komunikaty o błędach wyświetlane są na czerwono poniżej pola, bez aria-describedby powiązanie pola z błędem oraz brak komunikatu o obszarze aktywnym w przypadku niepowodzenia walidacji. Użytkownik wypełnia formularz, klika „Kontynuuj”, zostaje po cichu przekierowany z powrotem i nie ma możliwości dowiedzieć się, które pola nie przeszły walidacji ani dlaczego.

W setkach zgłoszeń powtarzają się te same uwagi: brak komunikatów o błędach, niejasne komunikaty o błędach, brak możliwości wprowadzenia danych rozliczeniowych. Nie są to pojedyncze usterki. Stanowią one standardowe zachowanie większości komponentów kasowych w systemach e-commerce, które zostały wdrożone bez uwzględnienia kwestii dostępności.

Poprawka

Używaj prawdziwych <label> elementy powiązane z wejściami poprzez for/id. Pola obowiązkowe należy oznaczyć symbolem aria-required="true" i zaznaczaj wymagania za pomocą widocznego tekstu, a nie tylko kolorem. W przypadku niepowodzenia walidacji wyświetl komunikat o błędzie wewnątrz pola aria-describedby cel, podaj pole, w którym wystąpił błąd aria-invalid="true"oraz przenieść fokus klawiatury na pierwsze nieprawidłowe pole. W górnej części formularza należy umieścić obszar podsumowujący błędy wraz z linkami do poszczególnych pól, w których wystąpiły błędy.

SurfaceCheckout· formularze adresowe · formularze kontaktowe WCAG 2.2 AA3.3.1 Identyfikacja błędów · 3.3.3 Sugestie dotyczące błędów · 1.3.1 Informacje i relacje · 4.1.3 Komunikaty o stanie
E·19

Płatność: pole CVV bez etykiety

Dosłowne cytaty ze skarg
Pola edycji „Karta debetowa lub kredytowa” na stronie płatności NIE są opatrzone etykietami
Gdy użytkownik próbuje dokonać płatności kartą kredytową, brakuje odpowiedniej etykiety wskazującej pole na kod CVV
Użytkownik nie może wprowadzić danych karty kredytowej podczas finalizacji zamówienia
Użytkownik nie może dodać karty kredytowej podczas finalizacji zamówienia
Częstotliwość
524wpisy dotyczące płatności
75 wpisówdotyczących konkretnie oznaczeń na kartach kredytowych, kodów CVV lub numerów kart
Dlaczego firma zostaje pozwana

Blok płatności jest nietypowy, ponieważ często jest wyświetlany za pomocą osadzonej ramki iframe dostawcy zewnętrznego — Stripe Elements, Braintree Hosted Fields czy wtyczki Adyen. Wewnątrz ramki iframe formularz dostawcy usług płatniczych jest zazwyczaj dobrze oznaczony. Jednak w momencie, gdy strona tworzy własny moduł do wprowadzania danych karty lub otacza osadzone pola niestandardowym układem, który zastępuje etykiety wizualnymi symbolami zastępczymi, cztery pola — numer, data ważności, kod CVV, kod pocztowy — stają się dla czytnika ekranu rzędem pustych pól.

Pole CVV jest najczęściej błędnie oznaczane, ponieważ projektanci często zastępują jego etykietę ikoną znaku zapytania, która otwiera podpowiedź wyjaśniającą, czym jest kod CVV. Podpowiedź nie jest etykietą; pole nadal wymaga nazwy programowej. Gdy jej brakuje, czytnik ekranu odczytuje cały blok płatności jako „edytuj, edytuj, edytuj, edytuj”, a transakcja zostaje przerwana.

Poprawka

Jeśli korzystasz z integracji z polami hostowanymi przez podmiot zewnętrzny, postępuj zgodnie z wytycznymi dostawcy dotyczącymi dostępności — większość z nich udostępnia udokumentowaną metodę oznaczania pól spoza ramki iframe. Jeśli tworzysz niestandardowy moduł do wprowadzania danych, każde pole wprowadzania danych musi mieć rzeczywisty <label> element z widoczną etykietą tekstową oraz autocomplete="cc-number" / cc-exp" / cc-csc" atrybuty, dzięki czemu menedżery haseł i technologie wspomagające mogą rozpoznawać pola według ich przeznaczenia.

SurfaceCheckout· etap płatności WCAG 2.2 AA3.3.2 Etykiety lub instrukcje · 1.3.5 Określanie przeznaczenia pola wprowadzania danych · 4.1.2 Nazwa, rola, wartość
E·16

Strona koszyka: suwak ilości i brakujący przycisk „Usuń”

Dosłowne cytaty ze skarg
W związku z tym użytkownicy czytników ekranu nie mogą usuwać produktów z koszyka
Powód nie mógł usunąć żadnego produktu z koszyka
Powód nie był w stanie zmienić liczby produktów w koszyku
W koszyku opcja wyboru ilości nie jest odpowiednio opisana
Częstotliwość
1 022wpisy na stronie „Koszyk”
174 wpisówdotyczących konkretnie operacji związanych z ilością, usuwaniem lub aktualizacją
Dlaczego firma zostaje pozwana

Na stronie koszyka powtarza się ten sam błąd, co w przypadku suwaka ilościowego na stronie produktu, ale stawka jest wyższa: użytkownik korzystający z czytnika ekranu, który nie może obsługiwać suwaka, nie jest w stanie sfinalizować zamówienia. Przycisk „Usuń” sam w sobie stanowi antywzorzec — zazwyczaj jest to mała ikona „×” obok każdej pozycji, często bez widocznego tekstu, bez aria-label… i brak komunikatu po usunięciu wiersza. Użytkownik naciska przycisk, który, jak ma nadzieję, służy do usuwania, wiersz znika, a czytnik ekranu milczy. Nie ma możliwości potwierdzenia, że operacja się powiodła.

W kilku zgłoszeniach opisano podobny błąd: suma w koszyku aktualizuje się dynamicznie w miarę zmiany ilości lub usuwania produktów, jednak nowa suma jest wyświetlana jako zwykły tekst DOM poza obszarem aktualizacji na żywo, przez co użytkownik nie ma pojęcia, jaka kwota zostanie mu naliczona.

Poprawka

Każda pozycja powinna zawierać przycisk usunięcia z etykietą (np. "Remove Blue T-Shirt, size M, from cart"). Elementy do zmiany wartości ilości powinny podawać swoją aktualną wartość w ramach nazwy dostępnej dla osób niepełnosprawnych lub poprzez powiązane aktualizacje obszaru aktywności. Suma częściowa koszyka powinna znajdować się wewnątrz elementu aria-live="polite" region, więc zmiany są ogłaszane. Potwierdź usunięcia za pomocą funkcji cofania.

Strona koszyka WCAG 2.2 AA4.1.3 Komunikaty o stanie · 4.1.2 Nazwa, rola, wartość · 2.4.4 Cel linku
Część II · Wzorce dotyczące całej witryny
Błędy, które powtarzają się na każdej stronie, niezależnie od ścieżki użytkownika

Siedem elementów, które nie są powiązane z konkretnym etapem lejka. Są to kwestie infrastrukturalne — standardy na poziomie stron, komponenty globalne, podstawowe wytyczne dotyczące treści — a każda usterka w tym obszarze powiela się na każdej stronie, na której pojawia się dany komponent.

E·01

Pole formularza oznaczone jako „pole edycji”

Dosłowne cytaty ze skarg
Powód natrafił na nieoznaczone pola formularza, które były opisane jedynie jako „pole edycji”, i nie mógł skorzystać z promocji ani sfinalizować płatności
Na stronie logowania pole wprowadzania danych nie ma etykiety i nie jest odczytywane
Brak etykiet w polach formularza • Problem: Brak etykiet w polach „Imię i nazwisko” oraz „Adres e-mail”
Przyciski zwiększania i zmniejszania również nie są opatrzone etykietami i nie są odczytywane użytkownikom czytników ekranu
Częstotliwość
17 693wpisów sklasyfikowanych jako komunikaty czytnika ekranu
2 522wpisów dotyczących wydaniabezpośrednio w kategorii „Formularze”
Dlaczego firma zostaje pozwana

Jest to największa kategoria w zbiorze danych, ponieważ wykrycie tego problemu wiąże się z najniższymi kosztami, a jego zignorowanie – z najwyższymi. Czytnik ekranu przechodzi przez drzewo DOM, napotyka element <input>i odczytuje jego nazwę dostępową — którą oblicza na podstawie następujących elementów, w kolejności: aria-labelledby, aria-label, powiązany <label for>, title atrybut lub symbol zastępczy. Jeśli żadnego z nich nie ma, czytnik ekranu odczytuje jedynie rolę: „pole edycji” lub „edycja, puste”. To sformułowanie, niemal dosłownie, powtarza się w setkach zgłoszeń.

Powód, dla którego jest to tak powszechne, ma charakter strukturalny. Nowoczesne systemy projektowania często wyświetlają tekst zastępczy wewnątrz pola wprowadzania danych jako namiastkę widocznej etykiety, a programiści zakładają, że to właśnie ten tekst zastępczy pełni funkcję etykiety. Tak jednak nie jest. Tekst zastępczy znika, gdy użytkownik zacznie pisać, nie pozostawiając żadnej nazwy programowej, co sprawia, że pole staje się bezużyteczne dla każdego, kto trafi do niego w dalszej części procesu lub powróci do niego po wystąpieniu błędu.

Poprawka

Każdy element sterujący otrzymuje widoczną etykietę, przypisaną programowo. <label for="email">Email</label><input id="email" type="email"> jest wzorcem standardowym. Symbole zastępcze stanowią jedynie dodatkowe wskazówki, a nie pełnoprawne zamienniki. W przypadku elementów sterujących, w których widoczna etykieta jest rzeczywiście niepożądana (pola wyszukiwania, przyciski z ikonami), należy używać aria-label z tekstem opisowym — nigdy z powtórzonym symbolem zastępczym.

Powierzchnia: Każdyformularz na stronie WCAG 2.2 AA3.3.2 Etykiety lub instrukcje · 1.3.1 Informacje i relacje · 4.1.2 Nazwa, rola, wartość
E·05

Okienko modalne, które nie jest ani sygnalizowane, ani nie ma na nim fokusu

Dosłowne cytaty ze skarg
To okienko nie jest sygnalizowane ani nie otrzymuje fokusu
Jednak punkt skupienia nie przenosi się do wyskakującego okienka
Okno dialogowe nie uzyskało automatycznie fokusu
Okienko nie otrzymuje fokusu i nie jest odczytywane
Częstotliwość
3 476wpisów dotyczących wyskakujących okienek, okienek modalnych i nakładek
1 165 wpisówzawierających słowa „koncentracja”, „ucieczka” lub „zwolnienie”
Dlaczego firma zostaje pozwana

Wyrażenie „niezgłoszone lub bez fokusu” pojawia się dosłownie w ponad 400 zgłoszeniach i jest jednym z najczęściej powtarzających się zdań w całym zbiorze danych. Opisuje ono konkretny rodzaj błędu: na stronie pojawia się okno modalne lub okno dialogowe (często automatycznie — rejestracja do newslettera, weryfikacja wieku, potwierdzenie lokalizacji), widoczna treść ulega zmianie, ale czytnik ekranu nie otrzymuje żadnego sygnału, że coś się zmieniło. Fokus pozostaje na stronie bazowej. Użytkownik kontynuuje poruszanie się za pomocą klawisza Tab po tym, co znajdowało się pod okienkiem modalnym, zupełnie nieświadomy, że pojawiło się blokujące okno dialogowe.

To klasyczny przykład okienka modalnego, które zawodzi pod każdym względem: brak role="dialog", nie aria-modal="true", brak programowej zmiany punktu skupienia podczas otwarcia, brak pułapki skupienia podczas otwarcia, brak zamknięcia po naciśnięciu klawisza Esc, brak wyświetlania tytułu. Ponieważ wszystkie te błędy występują łącznie, naprawienie tylko jednego z nich nie przyniesie żadnej poprawy.

Poprawka

Należy stosować sprawdzony wzorzec okna dialogowego (punktem odniesienia jest specyfikacja WAI-ARIA Authoring Practices). Po otwarciu: należy przenieść fokus na pierwszy element w oknie dialogowym, który może przyjąć fokus, ustawić aria-modal="true" oraz role="dialog", nadaj oknu dialogowemu nazwę aria-labelledby wskazując na jego nagłówek. Gdy okno jest otwarte: utrzymuj fokus w oknie dialogowym. Po zamknięciu: przywróć fokus do elementu, który spowodował jego wyświetlenie. Obsługuj klawisz Esc. Jeśli okno modalne przerywa przebieg działania (np. automatyczne odtwarzanie po załadowaniu strony), zapewnij użytkownikowi jeden mechanizm umożliwiający jego trwałe zamknięcie.

Wyskakujące okienkaz biuletynem Surface· banery dotyczące plików cookie · mechanizmy weryfikacji wieku · wysuwane okienka potwierdzenia zawartości koszyka WCAG 2.2 AA4.1.2 Nazwa, rola, wartość · 2.4.3 Kolejność fokusowania · 2.1.2 Brak pułapek klawiaturowych · 4.1.3 Komunikaty o stanie
E·03

Brakujący wskaźnik ostrości

Dosłowne cytaty ze skarg
Niewidoczne wskaźniki fokusu klawiatury
Ponadto nie wyświetlają widocznych wskaźników ostrości
wskaźnik fokusu klawiatury nie był widoczny
Do innych naruszeń zaliczają się pułapki klawiaturowe
Częstotliwość
7 294wpisów dotyczących nawigacji za pomocą klawiatury i fokusu
197 wpisówdotyczących konkretnie wskaźników ostrości lub widocznej ostrości
Dlaczego firma zostaje pozwana

Wskaźniki fokusu są zazwyczaj celowo wyłączane przez programistę lub projektanta, który uznał domyślne obramowanie przeglądarki za element zakłócający wygląd i napisał *:focus { outline: none; } do globalnego arkusza stylów. Strona wygląda teraz bardziej przejrzyście dla widzącego użytkownika korzystającego z myszki. Dla widzącego użytkownika korzystającego z klawiatury — w tym dla większości osób z wadami wzroku, osób z niepełnosprawnością ruchową oraz użytkowników poruszających się po stronie bez myszki — strona staje się niemożliwa do użycia. Użytkownik może naciskać klawisz Tab, ale nie widzi, w którym miejscu się znajduje.

Jest to jeden z nielicznych rodzajów błędów, które można dostrzec bez użycia jakichkolwiek technologii wspomagających. Specjalista ds. kontroli jakości, który przejdzie po stronie głównej za pomocą klawisza Tab, nie korzystając z żadnych dodatkowych narzędzi, zauważy ten błąd w mniej niż minutę. Fakt, że zespoły ds. dostępności konsekwentnie wykrywają go na stronach, które stały się przedmiotem sporów sądowych, podczas gdy pomijały go wewnętrzne kontrole, stanowi jeden z najbardziej wiarygodnych sygnałów w zbiorze danych wskazujących, że strona ta w ogóle nie przeszła testów z użyciem klawiatury.

Poprawka

Nigdy nie wyłączaj wszystkiego na raz :focus kontury bez wypełnienia. Należy zastosować styl wyróżniający — zazwyczaj kontur o grubości 2–3 pikseli, zapewniający odpowiedni kontrast zarówno względem samego elementu, jak i jego tła — przy użyciu :focus-visible tak więc wskaźnik pojawia się podczas nawigacji za pomocą klawiatury, ale nie przy kliknięciach myszą. Sprawdź to w przypadku każdego interaktywnego elementu, w tym niestandardowych widżetów, linków wewnątrz kart oraz elementów z tabindex.

Powierzchnia każdegointeraktywnego elementu na stronie WCAG 2.2 AA2.4.7 Widoczność fokusu · 2.1.1 Klawiatura · 1.4.11 Kontrast elementów nietekstowych
E·04

Logo i grafiki dekoracyjne bez tekstu alternatywnego

Dosłowne cytaty ze skarg
Brak tekstu alternatywnego dla obrazu logo
Brak tekstu alternatywnego dla obrazu logo
Brak opisu tekstowego obrazu logo
Obraz bez atrybutu alt nie powinien mieć atrybutów title, aria-label ani aria-labelledby
Częstotliwość
6 337wpisów dotyczących obrazów i tekstu alternatywnego
394 wpisów, w których wyraźnie wspomniano o logo serwisu
Dlaczego firma zostaje pozwana

Logo jest najczęściej wyświetlanym obrazem na stronie internetowej i jednym z tych, które najczęściej nie działają. Zazwyczaj znajduje się ono w linku przekierowującym z powrotem na stronę główną, ale obraz jest dostarczany bez alt, nie aria-label w linku, bez otaczającego go tekstu. Czytnik ekranu odczytuje jedynie „link”, bez żadnej informacji o tym, dokąd prowadzi. Pomnóż to przez liczbę wszystkich stron w witrynie.

Szersza kategoria — obrazy bez tekstu alternatywnego — obejmuje grafiki banerowe, zdjęcia produktów, ilustracje w sekcji głównej, ikony serwisów społecznościowych oraz ogromny zbiór materiałów graficznych wykorzystywanych w marketingu, które zazwyczaj zawiera typowa strona sklepu internetowego. W skargach dotyczących tej kategorii często podaje się konkretne nazwy plików graficznych, co wskazuje, że biegły powoda przeprowadził automatyczną kontrolę, w wyniku której sporządzono listę wszystkich obrazów, których alt brakowało tego atrybutu lub był on pusty, podczas gdy powinien zawierać opis.

Poprawka

Logo powinno zawierać tekst alternatywny opisujący nazwę firmy, a jeśli logo prowadzi do jakiejś strony, również jej adres — alt="Acme Co. — homepage". Obrazy dekoracyjne otrzymują pusty atrybut alt (alt=""), co celowo uniemożliwia ich wykrycie przez technologie wspomagające. Obrazy informacyjne powinny mieć opisowy tekst alternatywny. Należy unikać automatycznego generowania tekstu alternatywnego na podstawie nazw plików lub opisów tworzonych przez sztuczną inteligencję bez weryfikacji przez człowieka; w rejestrach skarg wielokrotnie pojawiają się przypadki, w których narzędzia nakładkowe opisywały logo firmy jako „niebiesko-żółty znak”.

LogoSurfaceHeader· banery · zdjęcia produktów · strony marketingowe WCAG 2.2 AA1.1.1 Treści nietekstowe · 2.4.4 Przeznaczenie linku
E·09

Puste linki oraz „kliknij tutaj” / „czytaj dalej”

Dosłowne cytaty ze skarg
Witryna zawiera puste linki bez tekstu
Na przykład linki typu „Czytaj więcej” nie dostarczają wystarczającego kontekstu
Na przykład link z napisem „Kliknij tutaj” nie zawierał wystarczających informacji kontekstowych
Niejasne opisy linków • Problem: Linki typu „kliknij tutaj” nie zawierają informacji o tym, do czego służą
Częstotliwość
2 723wpisów dotyczących linków i przycisków
85 wpisówpasujących do wzorców „empty-link” lub „generic-link-text”
Dlaczego firma zostaje pozwana

Czytniki ekranu udostępniają widok „listy linków”, z którego często korzystają doświadczeni użytkownicy, aby w kilka sekund przejrzeć stronę. Widok ten pokazuje wyłącznie tekst linku, oddzielony od otaczającego go akapitu. Strona, na której każdy fragment zapowiedzi wpisu kończy się tagiem „Czytaj dalej” wyświetla się w tym widoku jako piętnaście identycznych wpisów. Strona z pięcioma pustymi linkami — <a href="..."></a>, co często zdarza się, gdy ikony znajdują się w elementach otaczających linki bez tekstu zastępczego — powoduje wyświetlenie pięciu pustych znaków.

Rozwiązanie tego problemu jest powszechnie znane, podobnie jak sama usterka, dlatego ten schemat wciąż pojawia się w zgłoszeniach — jego powtarzalność wskazuje na proces tworzenia oprogramowania, w którym brakuje automatycznego narzędzia do sprawdzania poprawności tekstu linków oraz ręcznej weryfikacji pod kątem zgodności z czytnikami ekranu.

Poprawka

Każdy link musi mieć nazwę ułatwiającą dostęp, opisującą miejsce docelowe lub działanie. Zastąp ogólne sformułowania opisowymi — „Czytaj dalej” staje się „Dowiedz się więcej o wynikach finansowych za III kwartał”. W przypadku linków zawierających wyłącznie ikony należy dodać tekst niewidoczny dla użytkownika lub element aria-label. Przeprowadź automatyczną kontrolę (axe, Lighthouse itp.) pod kątem pustych <a> elementy podczas CI.

Cała witryna· zapowiedzi wpisów na blogu · stopka · bloki powiązanych treści WCAG 2.2 AAA 2.4.4 Cel linku · 2.4.9 Cel linku (tylko link)
E·06

Film bez napisów ani transkrypcji

Dosłowne cytaty ze skarg
Witryna zawiera wiele filmów bez napisów
Brak napisów na filmach zamieszczonych na stronie internetowej
Na stronie internetowej znajduje się znacznie więcej filmów, które nie posiadają napisów
Częstotliwość
3 355wpisów dotyczących treści wideo i audio
86 wpisów, które konkretnie odnoszą się do napisów, automatycznego odtwarzania lub audiodeskrypcji
Dlaczego firma zostaje pozwana

W zgłoszeniach dotyczących filmów wideo pojawiają się dwa typowe przypadki. Pierwszy jest oczywisty: film marketingowy, prezentacja produktu lub film instruktażowy jest udostępniany bez napisów, transkrypcji ani żadnej alternatywy tekstowej — w związku z czym osoby niesłyszące lub niedosłyszące nie mają dostępu do tych treści. Drugi jest bardziej subtelny: filmik, który odtwarza się automatycznie po załadowaniu strony, co zakłóca działanie czytnika ekranu i narusza wymagania dotyczące kontroli pauzy/zatrzymania przewidziane w standardzie WCAG 2.2 poziom AA (zgodnie z SC 2.2.2 Pauza, zatrzymanie, ukrycie dla treści ruchomych oraz SC 1.4.2 dla wszelkich treści audio).

W niektórych skargach zawartych w tym zbiorze danych stwierdza się, że „brak napisów na filmach zamieszczonych na stronie internetowej stanowi naruszenie ustawy ADA”, co przedstawia się jako wniosek prawny. To, czy takie ujęcie ma rację bytu, zależy od jurysdykcji i okoliczności; bardziej istotne jest jednak to, że filmy te konsekwentnie nie spełniają wymogów standardu WCAG 2.2 AA, który większość sądów i ugód traktuje jako decydujący punkt odniesienia w zakresie zgodności.

Poprawka

Należy zapewnić zsynchronizowane napisy do wszystkich nagranych wcześniej filmów zawierających dźwięk. Należy również udostępnić transkrypcję tekstową; transkrypcje są przydatne dla użytkowników korzystających z urządzeń z wyciszonym dźwiękiem, w środowiskach o niskiej przepustowości oraz do celów indeksowania. Należy unikać automatycznego odtwarzania; jeśli automatyczne odtwarzanie jest konieczne ze względów projektowych, należy zapewnić przycisk pauzy/zatrzymania, który można natychmiast uruchomić za pomocą klawiatury. W przypadku treści zawierających wyłącznie obraz (bez dźwięku) należy zapewnić audiodeskrypcję lub alternatywę tekstową.

FilmySurfaceHero· prezentacje produktów · strony marketingowe · osadzone filmy z YouTube WCAG 2.2 AA1.2.2 Napisy (nagrane wcześniej) · 1.2.5 Opis audio (nagrany wcześniej) · 2.2.2 Wstrzymaj, zatrzymaj, ukryj
E·15

Formularze logowania, rejestracji i hasła

Dosłowne cytaty ze skarg
Użytkownik nie może skorzystać z formularza logowania
Użytkownik nie może zalogować się na swoje konto
Użytkownik nie może zalogować się na swoje konto
Użytkownik nie może się zalogować podczas finalizacji zamówienia
Częstotliwość
1 158wpisów dotyczących kont użytkowników i uwierzytelniania
Dlaczego firma zostaje pozwana

Logowanie stanowi punkt kontrolny całego procesu uwierzytelniania. Gdy formularz zawodzi, wszystkie kolejne strony stają się niedostępne, a użytkownicy często postrzegają tę kaskadę jako jedną przeszkodę. Wzorzec ten jest taki sam jak w przypadku błędu E·01 związanego z etykietowaniem formularza, często w połączeniu z trzema konkretnymi podbłędami: przełącznikiem „Pokaż hasło” zaimplementowanym jako przycisk zawierający wyłącznie ikonę, bez nazwy i bez komunikatu o zmianie stanu, CAPTCHA, która całkowicie uniemożliwia korzystanie z czytnika ekranu, oraz błędy wbudowane („nieprawidłowe dane uwierzytelniające”), które są wyświetlane na ekranie, ale nie są odczytywane.

Pole wyboru „Zapamiętaj mnie” to kolejny powtarzający się błąd drugorzędny: wyświetlane jako stylizowany <div>, przy czym rzeczywista <input> Ponieważ pole wyboru jest ukryte poza ekranem, można je obsługiwać za pomocą myszy, ale nie za pomocą klawiatury ani czytnika ekranu. Użytkownik nie ma możliwości włączenia trybu trwałej sesji.

Poprawka

Używaj prawdziwych <input>, <label>oraz <button> elementy. Spraw, by przełącznik „pokaż/ukryj hasło” stał się prawdziwym przyciskiem z nazwą ułatwiającą dostęp, która zmienia się wraz ze stanem ("Show password" / "Hide password") oraz ogłosić tę zmianę za pomocą aria-pressed. Zapewnij alternatywę dla CAPTCHA opartych na obrazkach (CAPTCHA dźwiękowa lub — najlepiej — zastąp CAPTCHA uwierzytelnianiem opartym na ocenie ryzyka lub wersjami hCaptcha dostosowanymi do potrzeb osób niepełnosprawnych).

StronySurfaceLogin· logowanie przy kasie · pulpity nawigacyjne kont WCAG 2.2 AA3.3.2 Etykiety lub instrukcje · 4.1.2 Nazwa, rola, wartość · 1.1.1 Treści nietekstowe (CAPTCHA)
Część III · Infrastruktura i wzorce na poziomie kodu
Błędy wynikające z wyborów dotyczących znaczników, struktury i narzędzi

Cztery przykłady, które ilustrują niedociągnięcia architektury, a nie konkretnych elementów interfejsu użytkownika. Są to decyzje podejmowane na poziomie wyższym niż strona — dotyczące struktury nagłówków, spójności z wersjami mobilnymi czy zależności od rozwiązań zewnętrznych — których skutki odczuwalne są w każdym obszarze.

E·10

Struktura strony: brakuje nagłówka H1, nieprawidłowe punkty orientacyjne, brak języka

Dosłowne cytaty ze skarg
Brak znacznika nagłówka – H1
Nieprawidłowa struktura nagłówków oraz brak deklaracji językowych w dokumencie
Main landmark not announced by screen reader • Issue: The <main> landmark is not defined within the page
Na stronie brakuje linku do przeskoczenia lub obszaru orientacyjnego, który umożliwiłby użytkownikom korzystającym z klawiatury przejście do dalszej części strony
Częstotliwość
2 485wpisów dotyczących struktury strony i semantyki
Ponad 950 wpisówodnoszących się konkretnie do nagłówków, punktów orientacyjnych lub zagadnień związanych z nagłówkami H1
Dlaczego firma zostaje pozwana

Czytniki ekranu udostępniają zawartość strony w trzech trybach nawigacji: według nagłówków, według punktów orientacyjnych i według linków. Strona, która nie zawiera <h1>, bez <main>, <nav>oraz <footer> zabytki, a bez lang="en" atrybut w <html> element ten pozbawił użytkowników wszystkich trzech trybów nawigacji jednocześnie. Użytkownicy nie mają możliwości przeglądania treści, nie mogą przejść bezpośrednio do wybranej sekcji, a czytnik ekranu nie może załadować odpowiedniego modułu wymowy.

Jest to niezwykle poważna usterka: brak jednego punktu orientacyjnego powoduje lawinę problemów w dalszej części strony, ponieważ wszystkie strategie nawigacji czytników ekranu, które się na nim opierają, przestają działać. Zgłoszenia tej kategorii zazwyczaj wymieniają jednocześnie cztery lub pięć konkretnych problemów strukturalnych, co stanowi dowód na brak semantycznej podstawy w witrynie.

Poprawka

Każda strona otrzymuje dokładnie jedną <h1>, z podtytułami (<h2>, <h3>) uporządkowane logicznie. Otocz regiony elementami orientacyjnymi HTML5: <header>, <nav>, <main>, <aside>, <footer>. Ustaw lang w katalogu głównym <html> element. Sprawdź poprawność za pomocą narzędzia do sprawdzania konturu lub uruchom document.querySelectorAll('h1').length === 1 jako test sprawdzający w CI.

Powierzchnia Każdastrona WCAG 2.2 AA1.3.1 Informacje i relacje · 2.4.6 Nagłówki i etykiety · 3.1.1 Język strony
E·17

Bariery dostępne wyłącznie na urządzeniach mobilnych

Dosłowne cytaty ze skarg
Błędy nie są zgłaszane do mobilnych jednostek SRU
Menu nie jest odczytywane użytkownikom mobilnych czytników ekranu (SRU)
Na przykład nazwa pola „Numer telefonu komórkowego” nie jest odczytywana
Mobilne urządzenia SRU nie mogą wybrać przycisku „Apple Pay” jako metody płatności
Częstotliwość
787wpisów dotyczących urządzeń mobilnych i responsywności
203 wpisywyraźnie porównujące zachowania użytkowników urządzeń mobilnych i komputerów stacjonarnych
Dlaczego firma zostaje pozwana

Większość testów zapewnienia dostępności przeprowadza się w przeglądarkach stacjonarnych przy użyciu programów NVDA lub JAWS. Mobilne technologie wspomagające — VoiceOver w systemie iOS czy TalkBack w systemie Android — wyświetlają ten sam model DOM w inny sposób, co często wiąże się z występowaniem innych błędów. W zgłoszeniach wielokrotnie pojawia się skrót „mobile SRU” (użytkownik mobilnego czytnika ekranu) w celu wskazania błędów charakterystycznych dla widoku mobilnego: menu hamburgerowe, które działa z NVDA na komputerze stacjonarnym, ale nie reaguje w VoiceOver, przycisk Apple Pay, który jest dostępny na laptopie, ale nie na stronie przeznaczonej dla iPhone'a, komunikaty o błędach wyświetlane na komputerze stacjonarnym, ale nie na urządzeniu mobilnym.

Z danych wynika, że pozwani, których strony działają bez zarzutu na komputerach stacjonarnych, nadal są pozywani z powodu problemów związanych z wersjami mobilnymi. Zgodność z wersjami mobilnymi stanowi osobny kryterium pozytywnego wyniku audytu.

Poprawka

Należy przeprowadzić testy przy użyciu funkcji VoiceOver w przeglądarce Safari na iOS oraz TalkBack w przeglądarce Chrome na Androidzie, przynajmniej w odniesieniu do tych samych scenariuszy, które obejmuje kontrola jakości na komputerach stacjonarnych. Należy zwrócić szczególną uwagę na interakcje oparte na gestach, natywne przyciski płatności oraz komunikaty dotyczące pól formularza po uzyskaniu przez nie fokusu. Jeśli istnieje aplikacja natywna, należy poddać ją tej samej kontroli — zgłoszenia często dotyczą zarówno strony internetowej, jak i aplikacji w ramach tej samej sprawy.

Wersja mobilnastrony internetowej · natywne aplikacje na iOS i Androida WCAG 2.2 AAAll— zastosowane do renderowania mobilnego · 2.5.1 Gesty wskaźnika · 2.5.2 Anulowanie wskaźnika
E·14

Sama nakładka lub widżet ułatwiający dostęp

Dosłowne cytaty ze skarg
Widżety nakładkowe ułatwiające dostępność, takie jak UserWay, nie są w stanie usunąć podstawowych barier dostępności na poziomie kodu i nie robią tego
Powód twierdzi, że zna nakładkę accessiBe i że „po prostu nie sprawdza się ona w przypadku osób całkowicie niewidomych”.
Problemy spowodowane przez wtyczkę AccessiBe do dostosowywania dostępności: Wtyczka AccessiBe nie tylko nie rozwiązuje problemów z dostępnością, ale wręcz stwarza poważne przeszkody w tym zakresie
Automatyczne nakładki ułatwiające dostęp nie zapewniają równego dostępu i mogą w rzeczywistości stwarzać dodatkowe bariery dla użytkowników z niepełnosprawnościami
Częstotliwość
1 210wpisów dotyczących komponentów innych producentów
26 wpisów, w których wyraźnie wymieniono dostawcę lub opisano błędy spowodowane przez nakładkę
Dlaczego firma zostaje pozwana

Nakładka ułatwiająca dostępność jest jedyną pozycją w tym katalogu, w której problem nie leży w ogóle po stronie samej witryny — wynika on z warstwy, która miała ten problem rozwiązać. Skargi z tej kategorii wskazują na dwie odrębne szkody. Po pierwsze, nakładki w rzeczywistości nie eliminują istniejących barier, więc użytkownik napotyka te same wadliwe okna modalne, błędnie oznaczone formularze i niekomunikowane błędy, niezależnie od tego, czy nakładka jest aktywna. Drugi jest bardziej konkretny: nakładki czasami wprowadzają nowe błędy poprzez wstawianie nieprawidłowych etykiet, niewłaściwe stosowanie ról ARIA lub zakłócanie konfiguracji technologii wspomagających użytkownika.

Warto zwrócić uwagę na jedną rzecz: w skargach z lat 2024 i 2025 coraz częściej wymienia się z nazwy dostawców nakładek. W dwóch konkretnych fragmentach skarg jednoznacznie wskazano firmy UserWay i AccessiBe, a ostatnie działania Federalnej Komisji Handlu (FTC) stworzyły wyraźne ryzyko, że samo dodanie nakładki może stanowić dowód na brak rzeczywistych działań naprawczych — a nie argument obrony w postępowaniu sądowym.

Poprawka

Traktuj nakładki jako sygnał ostrzegawczy, a nie jako rozwiązanie. Jeśli obecnie korzystasz z nakładki, opracuj plan rzeczywistych działań naprawczych, który zajmie się samym kodem źródłowym, a nie tylko zamaskuje problem. Sprawdzonym podejściem jest połączenie następujących elementów: zautomatyzowanego skanera zintegrowanego z procesem ciągłej integracji (CI), ręcznej weryfikacji zgodności z wytycznymi WCAG 2.2 poziom AA, ręcznych testów z wykorzystaniem co najmniej jednego czytnika ekranu i nawigacji wyłącznie za pomocą klawiatury oraz ciągłej kontroli jakości dostępności w ramach procesu projektowania i tworzenia oprogramowania.

Widżet nakładkiobejmujący całą witrynę WCAG 2.2 AA Nakładkinie spełniają wymagań zgodności z poziomem AA · wszystkie istotne kryteria szczegółowe pozostają w zakresie

Co łączy te dziewiętnaście wzorów

Katalog nie stanowi przypadkowej próby. Jeśli zapoznać się z przykładami w kolejności, można dostrzec kilka powtarzających się wzorców strukturalnych — wzorców wyjaśniających, dlaczego dominują właśnie te konkretne usterki, a nie na jakich powierzchniach się pojawiają.

  1. Niestandardowe komponenty JavaScript zastępujące natywne elementy HTML

    Wszystkie najczęściej wymieniane niepowodzenia wiążą się z <div> wykonywanie pracy <button>, a <label>, a <select>lub <dialog>. W przypadku stosowania elementu natywnego problem ten występuje rzadko. Gdy element ten zostaje zastąpiony — zazwyczaj ze względów estetycznych — problem ten pojawia się regularnie.

  2. Brak powiązań programowych między widoczną treścią a jej znaczeniem

    Zastępczy znak traktowany jako etykieta. Gwiazdka traktowana jako aria-required. Czerwona ramka traktowana jest jako komunikat o błędzie. Użytkownicy widzący dostrzegają powiązania wizualnie; użytkownicy korzystający z technologii wspomagających widzą jedynie powiązania istniejące w modelu DOM.

  3. Zmiany statusu, o których nie informujemy

    Potwierdzenia dodania do koszyka, liczba wyników wyszukiwania, błędy walidacji, otwieranie okienek modalnych, aktualizacje sumy w koszyku — każda dynamiczna zmiana stanu w katalogu ma co najmniej jedną skargę, w której opisuje się ją jako „cichą”. Komunikaty o stanie i obszary aktywne to zdecydowanie najrzadziej wykorzystywana część zestawu narzędzi WAI-ARIA.

  4. Różnice między wersjami mobilną a stacjonarną

    Ten sam komponent, stworzony przy użyciu semantycznego kodu HTML, działa zarówno w VoiceOver, jak i w NVDA. Ten sam komponent, stworzony przy użyciu niestandardowego kodu JS, często przechodzi testy jakości dla czytników ekranowych na komputerach stacjonarnych, ale nie działa na urządzeniach mobilnych, ponieważ renderowanie przez czytniki ekranowe na urządzeniach mobilnych ujawnia inne błędy w tym samym kodzie.

  5. Skargi są sporządzane według szablonu, ale opisane w nich błędy nie są zmyślone

    W setkach spraw pojawiają się dosłownie te same, szablonowe sformułowania w pozwach — jednak konkretne ustalenia dotyczące poszczególnych elementów w każdym pozwie można zweryfikować pod kątem zgodności z faktami i są one poprawne. Fakt, że kancelaria reprezentująca powoda korzysta z gotowego szablonu, nie oznacza, że podstawowe zarzuty są zmyślone; oznacza to jedynie, że stosuje się ten sam schemat postępowania w odniesieniu do tych samych, powtarzających się nieprawidłowości.

Od czego zacząć audyt, jeśli nie masz jeszcze programu zapewniania dostępności

Powyższy katalog jest wyczerpujący, ale nie zawiera priorytetów do celów wstępnej selekcji. Jeśli zespół zaczyna od zera i chce wiedzieć, które elementy należy sprawdzić przed kolejnym wydaniem, zbiór danych sugeruje jasną kolejność — opartą zarówno na częstotliwości występowania, jak i na obecności lub braku tych wzorców w rzeczywistych zgłoszeniach reklamacyjnych. Poniższa lista nie zastępuje pełnego audytu zgodności z WCAG 2.2 AA, ale obejmuje nieprawidłowości, które powtarzają się w największej części przypadków.

Poziom 1 — Najczęstsze usterki, najniższe koszty naprawy

  • Przechodź po stronie głównej za pomocą klawiatury. Czy widzisz, gdzie znajduje się kursor przy każdym kroku? (E·03)
  • Otwórz kod źródłowy strony i sprawdź, czy każda <input> na każdym formularzu znajduje się prawdziwy <label>. (E·01)
  • Otwórz każde okno modalne przy użyciu czytnika ekranu. Czy jest ono odczytywane? Czy kursor przechodzi do niego? (E·05)
  • Uruchom automatyczny skaner (np. DevTools, Lighthouse) na pięciu najpopularniejszych szablonach. (E·04, E·09, E·10)

Poziom 2 — Największe ryzyko finansowe w przypadku złamania

  • Przeprowadź proces realizacji transakcji od początku do końca przy użyciu czytnika ekranu, uwzględniając celowo wywołany błąd walidacji. Czy komunikaty o błędach są odczytywane? Czy odczytywane są pola obowiązkowe? (E·11)
  • Dodaj produkt do koszyka za pomocą czytnika ekranu. Czy słyszysz, że zawartość koszyka uległa zmianie? (E·18)
  • Obsługuj pole wyszukiwania i funkcję autouzupełniania wyłącznie za pomocą klawiatury. Czy możesz dotrzeć do propozycji i ją wybrać? (E·13)
  • Należy sprawdzić, czy każde pole formularza płatności ma rzeczywistą etykietę, a nie tylko symbol zastępczy. (E·19)

Poziom 3 — Łatwo przeoczyć podczas testów na komputerach stacjonarnych

  • Powtórz kroki z poziomu 1 i 2 w przeglądarce Safari na iOS z funkcją VoiceOver oraz w przeglądarce Chrome na Androidzie z funkcją TalkBack. (E·17)
  • Jeśli korzystasz z nakładki ułatwiającej dostępność, zaplanuj jej usunięcie zgodnie z planem rzeczywistych działań naprawczych. (E·14)
  • Sprawdź, czy wszystkie filmy mają napisy i transkrypcję. (E·06)
Podsumowując

Lista przedmiotów, które można kupić, jest niewielka, stała i widoczna na stronie głównej.

Powyższe 19 schematów stanowi zdecydowaną większość zgłoszonych problemów wśród 113 120 sklasyfikowanych skarg w 8 788 sprawach federalnych. Nie są one niczym nowym. Nie trudno ich znaleźć. To ta sama strona płatności, to samo okno modalne, to samo logo, to samo pole formularza, które można by znaleźć podczas dowolnego trzydziestominutowego przeglądu strony za pomocą klawiatury i czytnika ekranu.

Chodzi właśnie o tę asymetrię. Adwokaci reprezentujący powodów są dobrze zorganizowani, dysponują znacznymi zasobami i z przemysłową wydajnością analizują tę samą listę pod kątem powtarzających się schematów — połowa spraw kończy się ugodą w ciągu mniej niż 100 dni. Z kolei pozwani, jako grupa, wciąż na nowo wprowadzają te same schematy do praktyki, często dodając do nich jakiś element, który ma służyć jako pozorna linia obrony.

Wyrównanie tej asymetrii nie jest kwestią prawną. Jest to zadanie z zakresu inżynierii i projektowania, realizowane w oparciu o znaną, zamkniętą listę. Niniejszy artykuł stanowi tę listę.

Metodologia i dane: 19 załączników opiera się na 113 120 opisach poszczególnych problemów, podzielonych na 27 kategorii funkcjonalnych, zaczerpniętych z dokumentów skargowych dotyczących 8 788 federalnych spraw dotyczących dostępności stron internetowych w świetle tytułu III ustawy ADA (rejestry PACER, 2007–kwiecień 2026 r.). Liczba problemów podana w każdym wykazie odzwierciedla skategoryzowane wpisy w danym arkuszu, a nie unikalne sprawy — jedna sprawa zazwyczaj generuje dziesiątki wpisów. Cytaty dosłowne są odtworzone tak, jak pojawiają się w dokumentach skarg, z niewielkimi poprawkami wynikającymi wyłącznie z błędów OCR.

Odniesienia do WCAG:Kryteria sukcesu przytoczone są w WCAG 2.2 AA – wersji najczęściej traktowanej przez amerykańskie sądy federalne oraz w ugodach z Departamentem Sprawiedliwości (DOJ) jako obowiązujący wzorzec zgodności. WCAG 2.2 wprowadza dodatkowe kryteria sukcesu, ale nie jest jeszcze domyślnym standardem odniesienia w analizowanych tu sporach sądowych.

Zastrzeżenia: Niniejszyprzewodnik ma charakter informacyjny i nie stanowi porady prawnej. To, czy konkretny wzorzec interfejsu użytkownika pociąga za sobą odpowiedzialność, zależy od jurysdykcji, kategorii obiektu użyteczności publicznej, w którym doszło do zdarzenia, konkretnej szkody poniesionej przez powoda oraz sposobu przedstawienia sprawy w pozwie. Niektóre cytowane fragmenty pozwów zawierają wnioski prawne (np. że brak napisów „stanowi naruszenie ADA”), które należy traktować jako zarzuty powodów, a nie jako utrwalone orzecznictwo.

(system federalnego sądownictwa zapewniający publiczny dostęp do elektronicznych akt sądowych)