Projektowanie dostępnych aplikacji, czyli praktyczne o WCAG 2.2
Choć WCAG kojarzone jest z ułatwieniami dla osób z ograniczeniami w rzeczywistości obejmuje znacznie szerszy kontekst. Dostępność cyfrowa to tworzenie treści w sposób uniwersalny i przewidywalny. W praktyce oznacza to tworzenie środowiska przyjaznego dla AI i LLM.
WCAG Wstęp
Wprowadzenie do standardów dostępności cyfrowej.
02Etapy audytu
Omówienie kroków potrzebnych do przeprowadzenia audytu.
03Narzędzia i zasoby
Narzędzi i materiałów wspierające testowanie.
04Wybór wzorca ARIA
Dobór ról i atrybutów ARIA dla komponentów.
05WCAG w HTML
Zastosowanie wytycznych WCAG w znacznikach HTML.
06Rezultat testów
Moje rezultaty
WCAG Wstęp
Podstawowe informacje i dobra paktyka
WCAG (Web Content Accessibility Guidelines) to zbiór wytycznych, które pomagają tworzyć strony i aplikacje dostępne dla szerokiego spektrum użytkowników. Oficjalnie dla osób z niepełnosprawnościami w rzeczywistości jest to tworzenie globlanie przyjaznego środowiska dla AI i LLM.
Współcześnie standard WCAG dotyczy to niemal wszystkich aplikacji podlegających walidacji jakości. Dobrą praktyką jest uwzglednienie dostepności cyfrowej juz na etapie projektowania wireframe'ów i makiet przez UX/UI Designera, a nastepnie dodanie WCAG do konwencji programistycznych (czyli zbioru ustaleń dotyczących stylu kodu, struktury plików i tak dalej) oraz zasad obowiązujących w projekcie, na których mogą oprzeć się testerzy odpowiedzialni za kontrole jakości. W rezultacie umożliwi to wcześniejsze wychwycenie błędów.

WCAG bez iluzji
Dobro najsłabszych czy infrastruktura dla maszyn?
Etapy audytu
Proces testów dostępności cyfrowej
Proces dostępności obejmuje testowanie, raportowanie błędów i wskazanie oczekiwanego zachowania. Audyt różni się tym, że dodatkowo zawiera rekomendacje naprawcze, ale również wymaga przeprowadzenia testów.
01
Ustalenie zakresu
Ustalamy zakres dla widoków (komponentów) i scenariuszy oraz poziom zgodności WCAG
02
Przegląd projektu
Dokonujemy analizy frameworka oraz sposobu implementacji komponentów.
03
Przygotowanie środowiska
Konfigurujemy narzędzia oraz przeglądarki i czytniki ekranu.
04
Przypisanie wzorców
Dla każdego komponentu dobieramy wzorzec ARIA i weryfikujemy zgodność ról oraz zachowań.
05
Testy
Przeprowadzamy testy klawiatury, struktur nagłówków, kontrastu, tekstów alternatywnych i ról ARIA, uruchamiane są lintersy i skanery, a także oceniane jest działanie czytników ekranu w typowych scenariuszach. Każdy defekt opisywany jest z przypisanym kryterium WCAG oraz rekomendacjami naprawczymi.
06
Sumaryczny raport
Tworzymy liste defektów według priorytetu oraz przekazujemy pełną dokumentacje audytu.
01
Ustalenie zakresu
Ustalamy zakres dla widoków (komponentów) i scenariuszy oraz poziom zgodności WCAG
02
Przegląd projektu
Dokonujemy analizy frameworka oraz sposobu implementacji komponentów.
03
Przygotowanie środowiska
Konfigurujemy narzędzia oraz przeglądarki i czytniki ekranu.
04
Przypisanie wzorców
Dla każdego komponentu dobieramy wzorzec ARIA i weryfikujemy zgodność ról oraz zachowań.
05
Testy
Przeprowadzamy testy klawiatury, struktur nagłówków, kontrastu, tekstów alternatywnych i ról ARIA, uruchamiane są lintersy i skanery, a także oceniane jest działanie czytników ekranu w typowych scenariuszach. Każdy defekt opisywany jest z przypisanym kryterium WCAG oraz rekomendacjami naprawczymi.
06
Sumaryczny raport
Tworzymy liste defektów według priorytetu oraz przekazujemy pełną dokumentacje audytu.
Narzędzia i zasoby
Wsparcie w realizacji wymagań WCAG 2.2
Lista narzędzi opiera się na doświadczeniu w audycie relizowanym w projekcie opartym na Angular. Dla innych frameworków mogą obowiązywać inne dobre praktyki, konfiguracje lub dedykowane narzędzia. Warto korzystać z dokumentacji odpowiedniej dla danego stosu technologicznego.
Wybór wzorca dostępności (ARIA Pattern)
Określenie właściwej struktury i zachowania komponentu
Warto już na etapie projektowania UX/UI zaplanować, które komponenty będą zgodne ze wzorcami dostępności (ARIA patterns). Wzorce dostępności to gotowe zalecenia struktury HTML, ról i atrybutów ARIA dla komponentów takich jak: modal, dialog, menu, akordeon, tabs i tak dalej. Są opisane w oficjalnej dokumentacji ARIA Authoring Practices Guide (APG), przygotowanej przez W3C.
W projekcie zasosowałem wzorzec Dialog (Modal) Pattern, który określa:
- jak zarządzać fokusem wewnątrz modala,
- jak ukrywać tło (aria-hidden lub aria-modal),
- jakie role i atrybuty powinien mieć modal (role="dialog" lub alertdialog).
Wzorzec korzysta z atrybutu aria-modal="true" (został wprowadzony w specyfikacji ARIA 1.1), który informuje czytniki ekranu, że poza modalem nie ma aktywnej treści. Dzięki temu nie trzeba ręcznie stosować aria-hidden="true" na tle. Warto zauważyć, ze nie wszystkie czytniki wspierają aria-modal dlatego w projektach wymagających pełnej zgodności można rozważyć dodatkowe zabezpieczenia np. ręczne ukrywanie tła za pomocą aria-hidden.
WCAG w HTML (przykłady wskazówek)
Treści graficzne
Każdy element graficzny powinien mieć alternatywny opis taki by użytkownicy korzystający z czytników ekranu mogli zrozumieć, co dana grafika przedstawia.
Klasyczne obrazy <img> użycie alt
<img src="assets/creditcards.png" alt="Logo reklamowe dla Credit Cards">
Zastosowanie role="img" i aria-label
W przypadku złożonych elementów SVG, które są dekoracyjne lub ikonograficzne, należy:
- użyć role="img" - by czytnik wiedział, że to element graficzny,
- dodać aria-label - by zapewnić opis w drzewie dostępności.
<svg role="img" aria-label="Opis grafiki SVG">
<!-- zawartość SVG -->
</svg>
Dzięki temu czytnik ekranu odczyta cały obrazek jako jeden spójny element, zamiast analizować każdy fragment SVG z osobna.
Jeśli grafika nie wnosi treści (czysto dekoracyjna).
Można użyć role="presentation" to usuwa grafikę z accessibility tree. Należy jednak stosować to świadomie, aby nie ograbiać uzytkowników z treści.
<img src="assets/just-a-graphic-line-without-content.png" role="presentation">
Rezultat testów
Zakres czasu: 3,5 miesiące
Technologia: Angular
Zakres testów: Zgodność z WCAG 2.2 na poziomie AA (dostępność komponentów Angular w tym DOM, routing, formularze, modale, role ARIA, kontrast kolorów oraz nawigację klawiaturą w kontekście komponentów interfejsu użytkownika)
Statystyki:
- Liczba zgłoszonych błędów: 750+
- Liczba komponentów przetestowanych: brak danych (stracić rachubę)
- Rodzaj testów: manualne, półautomatyczne (axe, Wave), lintersy, testy screen readerem (NVDA)
Przykładowe błędy:
Obserwacje ogólne:
W większości analizowanych aplikacji warstwa UI (kontrast kolorów, rozmiary czcionek, minimalna klikalna powierzchnia itp.) jest dziś na ogół zgodna z podstawowymi wymaganiami WCAG. Wynika to z rosnącej świadomości projektowej i angażowania doświadczonych zespołów UX/UI w SDLC. W efekcie liczba błędów widocznych na pierwszy rzut oka była stosunkowo niewielka.
Najwięcej problemów dostępnościowych wynikało z ukrytych elementów struktury HTML. Najczęściej powtarzające się to:
- brak semantycznych ról,
- nieprawidłowe wykorzystanie atrybutów ARIA,
- brak obsługi klawiatury,
- błędne zarządzanie fokusem,
- nieczytelne tytuły stron,
- dekoracyjne obrazy nieoznakowane prawidłowo.
To pokazuje, że prawdziwe wyzwania w zakresie dostępności rzadko widoczne są gołym okiem i właśnie dlatego testy dostępności pod kontem WCAG 2.2 stanowia wyzwanie.
Testowanie potrafi pochłaniać od 30 do 50% całkowitego wysiłku projektowego. Dlatego testy są dziś nie tylko pierwszą linią obrony przed błędami, ale także podejściem, które należy rozwijać w kontekście wspierania optymalizacji pracy dzięki wykorzystaniu najlepszych praktyk.