Unsplash / Sigmund

Dostępność cyfrowa e-commerce 2025: ARIA live, dostępne formularze, WCAG i nowe wymogi prawne

Planujesz rozwój swojego e-commerce w nadchodzących latach? Zastanawiasz się, jak zapewnić dostępność swojej strony dla wszystkich użytkowników? Poznaj nowe regulacje i najlepsze praktyki w zakresie ARIA, formularzy i WCAG. Przeczytaj artykuł ekspertów Krakweb i zadbaj o swoją przyszłość online!

18.04.2025 10:04
9 minut czytania

W poniższym artykule omawiamy kluczowe obszary dostępności cyfrowej: od powiadomień o dynamicznych zmianach dla czytników ekranowych, przez dostępne walidacje formularzy, po logiczną strukturę nagłówków i linki. Wyjaśniamy również najważniejsze zapisy Ustawy z 26 kwietnia 2024 r. („o zapewnianiu spełniania wymagań dostępności…”) – terminy, wyjątki dla mikroprzedsiębiorców, okresy przejściowe oraz konsekwencje prawne. Na koniec formułujemy praktyczny plan działania.

Czytaj dalej - pod formularzem.

Umów się na darmową konsultację

Powiadomienia o dynamicznych zmianach (ARIA live regions)

Wszystkie dynamiczne zmiany, które zachodzą „poza kontekstem” (np. automatyczne odświeżanie koszyka czy pojawienie się komunikatu) muszą być dostępnie komunikowane, inaczej osoby korzystające z czytników ekranowych ich nie zauważą i łatwo się zgubią podczas zakupów  . ARIA live regions pozwalają programistycznie oznaczyć fragmenty strony jako obszary, w których zmiany będą automatycznie ogłaszane przez AT (assistive technologies) dzięki atrybutowi aria-live  . Odpowiedni dobór wartości (polite vs. assertive) oraz dodatkowych atrybutów (aria-atomic, aria-relevant) decyduje o priorytecie i zakresie odczytywanej informacji  . Ponadto, aby nie naruszać Success Criterion 2.2.1 (Timing Adjustable), dynamiczne procesy powinny dawać użytkownikowi kontrolę nad czasem wyświetlania komunikatów lub umożliwiać ich wywołanie „na żądanie”

Problem i konieczność powiadomień

Gdy fragmenty strony są aktualizowane automatycznie lub w odpowiedzi na akcję użytkownika, bez przeładowania całości, osoby niewidome nie widzą wizualnych wskazówek i mogą nie wiedzieć, że pojawiła się nowa treść czy błąd  .
Brak odpowiednich powiadomień często kończy się utratą kontekstu – użytkownik nie wie, czy dodano produkt do koszyka, czy formularz zgłoszenia wysłano poprawnie, co prowadzi do porzucenia procesu zakupowego

ARIA live regions

Atrybut aria-live

  • aria-live="polite": komunikaty są odczytywane dopiero po zakończeniu bieżącego ogłoszenia, co minimalizuje przerwania interakcji użytkownika  .

  • aria-live="assertive": bieżące komunikaty są przerywane i natychmiast ogłaszane, zalecane tylko dla krytycznych powiadomień (np. poważne błędy)  .

  • aria-live="off": zmiany są ogłaszane tylko, gdy fokus znajduje się w regionie; domyślne dla ról takich jak marquee czy timer  

Atrybuty dodatkowe

  • aria-atomic="true|false" – decyduje, czy czytnik odczyta cały region po zmianie (true), czy tylko zaktualizowaną część (false). Przydatne np. przy zegarach czy podsumowaniach  .

  • aria-relevant="additions removals text all" – określa, które typy zmian (dodania, usunięcia, zmiany tekstu) powinny być ogłaszane; np. w czatach warto nasłuchiwać zarówno nowych, jak i usuniętych wiadomości  .

Role z wbudowanymi live regions

Niektóre role ARIA pełnią funkcję live region domyślnie:

  • role="status" – służy do aktualizacji stanu, np. paska postępu; zaleca się dodać redundantne aria-live="polite" dla lepszej kompatybilności  .

  • role="alert" – do komunikatów o błędach lub ostrzeżeń; automatycznie prefiksowane tekstem „Alert” i często implementowane jako assertive

Praktyczne wskazówki

Definiowanie live region

  1. Oznacz kontener jako live region przed wystąpieniem zmian (najlepiej w oryginalnym kodzie lub tuż po załadowaniu) – w przeciwnym razie AT mogą nie zarejestrować regionu 

  2. W drugim kroku zmieniaj tylko zawartość regionu – dodaj lub zaktualizuj tekst, zamiast rekonstruować cały element, by zapewnić stabilność focusu i czytelność dla AT  .

Testowanie

  • Automatyczne: sprawdź obecność aria-live, aria-atomic i aria-relevant w kodzie (axe, WAVE, Lighthouse).

  • Manualne:

    • Nawigacja klawiaturą – upewnij się, że elementy docelowe nie tracą focusu po aktualizacji.

    • Czytniki ekranowe (NVDA, VoiceOver) – zweryfikuj, czy zmiany są faktycznie ogłaszane i czy nie dochodzi do dubli lub pominięć

Kontrola użytkownika

Zgodnie z WCAG 2.2 Success Criterion 2.2.1, użytkownik musi mieć kontrolę nad elementami zawierającymi limity czasowe lub automatyczne odświeżanie:

  • możliwość wyłączenia lub wstrzymania odliczania,

  • regulacja czasu wyświetlania komunikatów,

  • wyraźne ostrzeżenie przed wygaśnięciem i opcja przedłużenia  .
    Dynamiczne treści powinny też być wywoływane „na żądanie” (np. kliknięcie „Pokaż nowe wiadomości”) zamiast automatycznie, aby uniknąć niezamierzonych przerwań

Stosowanie ARIA live regions to klucz do dostępnego e-commerce: odpowiednie oznaczenie obszarów, wybór polite vs. assertive, użycie aria-atomic i aria-relevant, oraz zapewnienie użytkownikowi kontroli zgodnie z SC 2.2.1 gwarantują, że wszystkie dynamiczne zmiany będą zauważone i zrozumiane przez osoby z niepełnosprawnościami. Regularne testy automatyczne i manualne pozwolą utrzymać wysoki standard dostępności.

Walidacja formularzy i komunikaty błędów

Przed wyświetleniem komunikatu o błędzie warto już natychmiastowo poinformować użytkownika o wymaganiach dotyczących pola (np. zasady tworzenia hasła) umieszczając krótką instrukcję bezpośrednio pod kontrolką – zgodnie z wytycznymi W3C Form Instructions, które zalecają podawanie formatów i zasad przed przełączeniem się czytnika w tryb „Forms Mode”  . Jeśli natomiast błąd zostanie wykryty, Success Criterion 3.3.1 (Error Identification) wymaga, aby pole zostało oznaczone programowo (aria-invalid="true"), a komunikat błędu opisany w tekście i ogłoszony technologii wspomagającej (np. za pomocą role="alert" lub aria-live="assertive")  . Z kolei SC 3.3.2 (Labels or Instructions) każe dostarczyć każdej kontrolce właściwą etykietę (<label> lub aria-labelledby/aria-describedby), a placeholder nie zastępuje formalnej etykiety, gdyż znika przy wpisywaniu i nie jest traktowany jak label przez czytniki ekranu  . Całość należy poddać zarówno testom automatycznym (axe, WAVE, Lighthouse), jak i manualnym (wypełnianie tabulatorem oraz weryfikacja z NVDA/VoiceOver), aby mieć pewność, że komunikaty błędów są odczytywane natychmiast po walidacji

Natychmiastowa informacja o wymaganiach

  • Podawaj wymagania formatu przy polu (np. „Hasło musi mieć min. 8 znaków i zawierać literę oraz cyfrę”) w formie in-line instructions – bez czekania na pierwsze nieudane wysłanie formularza; dzięki temu użytkownicy znają reguły od razu  .

  • Unikaj polegania wyłącznie na placeholderach, które znikają przy wpisywaniu i nie są odczytywane jako etykiety przez AT

Kryterium sukcesu 3.3.1 Error Identification - Identyfikacja błędów

Oznaczanie pola w błędzie

  • Dodaj aria-invalid="true" do kontrolki, która nie spełnia warunków walidacji (np. wymagane pole puste lub niewłaściwy format)  

Opis tekstowy błędu

  • Wyświetlaj komunikat błędu w postaci czytelnego tekstu obok lub pod polem (nie tylko czerwone obramowanie), np. <span id="emailError">Adres e-mail musi zawierać „@”</span>  

Ogłaszanie błędu czytnikom ekranu

  • Użyj role="alert" lub aria-live="assertive", aby AT przerwały bieżące komunikaty i niezwłocznie odczytały treść błędu; alternatywnie aria-live="polite" odczyta komunikat po zakończeniu bieżącej kolejki

Kryterium sukcesu 3.3.2 Labels or Instructions - Etykiety lub instrukcje

  • Każda kontrolka wymaga powiązanej etykiety – <label for="pole"> lub aria-labelledby/aria-describedby – aby AT mogły zidentyfikować jej przeznaczenie  .

  • Placeholder nie zastępuje etykiety: znika przy rozpoczęciu wpisywania i nie jest odczytywany jako label przez czytniki ekranu .

  • W razie potrzeby dodaj instrukcje dotyczące formatu lub zakresu wartości bezpośrednio w treści etykiety lub w dodatkowym elemencie opisowym (aria-describedby="hintId")

Testy

Testy klawiaturą

  • Wypełnij formularz wyłącznie za pomocą Tab, Space, Enter oraz klawiszy strzałek; sprawdź, czy focus logicznie przechodzi między polami i czy komunikaty błędów są dostępne po wywołaniu walidacji  

Testy czytnikiem ekranu

  • Użyj NVDA (Windows) i VoiceOver (macOS/iOS), aby zweryfikować, że:
    • pole z aria-invalid="true" jest oznaczone jako błędne,
    • komunikaty błędów pojawiają się natychmiast i są odczytywane przez AT dzięki role="alert" lub aria-live

Dzięki tak kompleksowemu podejściu (natychmiastowe instrukcje, oznaczanie błędnych pól, czytelne komunikaty i pełne etykiety) formularze staną się bardziej przyjazne i dla osób z niepełnosprawnościami, i dla wszystkich użytkowników.

Struktura nagłówków i linki

Nagłówki (SC 2.4.6)

Hierarchia i zagnieżdżanie

  • Nagłówki <h1><h6> muszą być zagnieżdżane kolejno bez pomijania poziomów: po <h2> powinna wystąpić dopiero <h3>, nie <h4> czy <h5> W3C.

  • Uporządkowanie zgodne z semantyką dokumentu pomaga użytkownikom AT (Assistive Technology) w szybkim przeglądaniu i rozumieniu struktury strony, podobnie jak spis treści .

Opis i znaczenie

    • Nagłówki powinny krótko i precyzyjnie oddawać temat sekcji; ich pominięcie lub stosowanie dla dekoracji naraża na utratę kontekstu W3C.

    • Etykiety (<label>) w formularzach i inne oznaczenia interfejsu również muszą być opisowe – wspierając zasadę „Headings and Labels” na poziomie AA

Linki (Kryterium sukcesu 2.4.4)

Cel linku w tekście

  • Tekst linku sam w sobie musi przekazywać, dokąd prowadzi (SC 2.4.4): np. „Pobierz regulamin (PDF)”, nie „Kliknij tutaj” W3C.

  • Ułatwia to nawigację listą linków w czytniku ekranu oraz orientację użytkownikom z ograniczeniami kognitywnymi lub motorycznymi.

Wizualne wyróżnienie

    • Nie polegaj wyłącznie na kolorze: dodaj podkreślenie lub obramowanie, by osoby z zaburzeniami percepcji kolorów mogły zidentyfikować link (SC 1.4.1 Use of Color)

Zmiana rozmiaru tekstu (Kryterium sukcesu 1.4.4)

Zmiana rozmiaru tekstu (SC 1.4.4)

Intencja i wymagania
  • Tekst (oprócz obrazów tekstu) musi być powiększalny do co najmniej 200 % bez utraty funkcjonalności ani treści, zapewniając komfort osobom ze słabszym wzrokiem 

Pozwól użytkownikowi zoomować
  • Nie wyłączaj możliwości powiększania w przeglądarce (np. user-scalable=no). Zadbaj, by <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes"> wspierało zoom  

Elastyczne jednostki
  • Używaj relatywnych jednostek (em, rem, %) zamiast pikseli, co pozwala zachować proporcje i czytelność przy zmianie font-size w ustawieniach przeglądarki  

Testowanie
  • Sprawdź, czy interfejs nie „rozsypuje się” przy 200 % zoomie: wszystkie elementy (formy, nawigacja) powinny pozostać czytelne i funkcjonalne.

Prosty język i zrozumiałość treści

Plain language (Kryterium sukcesu 3.1.5)

Definicja i cele

Success Criterion 3.1.5 wymaga, by treść nie przekraczała poziomu czytania niższego średniego wykształcenia, a w przypadku tekstów trudniejszych – udostępniono prostsze podsumowania czy wersje pomocnicze W3C.

Korzyści

Pisanie w prostym języku ułatwia korzystanie z witryny osobom z dysleksją, zaburzeniami uwagi, niską biegłością językową oraz użytkownikom, dla których język strony nie jest ojczysty

Wytyczne WCAG i techniki

Techniki podstawowe
  • G153: Making text easier to read – stosuj krótkie zdania i proste słownictwo W3C.

  • G79: Providing spoken version – rozważ udostępnienie wersji audio dla trudniejszych fragmentów W3C.

  • G86: Providing a text summary – zamieszczaj streszczenia w uproszczonym języku na stronach zawierających skomplikowane informacje W3C.

Techniki dodatkowe

  • Definiowanie terminów w prostym słownictwie oraz stosowanie glosariusza dla terminów specjalistycznych W3C.

  • Unikanie idiomów, metafor i sarkazmu, które mogą być niezrozumiałe dla wielu osób W3C.


Zasady pisania prostym językiem

Krótkie zdania i aktywny tryb

Zaleca się, by zdania nie przekraczały 20 słów oraz by pisane były w czasie czynnym (np. „Wprowadź kod pocztowy”, nie „Kod pocztowy powinien być wprowadzony”) WCAG.

Unikanie żargonu i złożonych klauzul

Zamiast terminów typu „przeprowadzenie weryfikacji” używaj „sprawdź”, a złożone klauzule rozbij na mniejsze zdania Smashing Magazine.

Lista punktowana
  • Listy ułatwiają skanowanie treści wzrokiem i pozwalają na szybkie odnalezienie kluczowych informacji WCAG.

  • Każdy element listy zaczynaj od czasownika lub rzeczownika („Wybierz”, „Sprawdź”, „Podaj”)

Czytelność i UX

Jasne instrukcje

Umieszczaj wskazówki tuż pod polem formularza, np.:

„Hasło musi mieć min. 8 znaków, w tym przynajmniej jedną cyfrę i dużą literę”  

Unikanie podwójnych negacji

Zwroty typu „Nie nieakceptuje” zastąp pozytywnymi: „Musisz zaakceptować” .

Struktura i formatowanie

  • Nagłówki i akapity jasno oddzielone, by użytkownik mógł szybko przejść do interesującej sekcji.
  • Używaj listek wypunktowanych zamiast długich bloków tekstu

Testowanie i monitorowanie

Testy automatyczne

Stosuj narzędzia do oceny czytelności (Flesch–Kincaid, Juicy Studio) oraz skanery dostępności, by wykryć zbyt długie zdania lub trudne słowa  

Testy manualne
  • Użytkownicy rzeczywiści – przeprowadzaj badania z udziałem osób z różnymi potrzebami poznawczymi, by ocenić zrozumiałość  

  • Feedback – zbieraj opinie i iteruj — plain language to proces cykliczny, nie jednorazowa poprawka

Kontekst prawny i terminy

Ustawa z 26 kwietnia 2024 r.

Ustawa o zapewnianiu spełniania wymagań dostępności produktów i usług przez podmioty gospodarcze weszła w życie 26 kwietnia 2024 r. Dziennik Ustaw.

Terminy obowiązywania

  • 26 czerwca 2025 – wymóg dostępności cyfrowej dla nowych i zaktualizowanych serwisów e-commerce Biznes.gov.pl.
  • 28 czerwca 2030 – koniec okresu przejściowego dla istniejących usług, jeżeli były świadczone „w formie niezmienionej” przed 2025  

Wyjątki dla mikroprzedsiębiorców

Firmy zatrudniające ≤ 10 osób i osiągające roczny obrót ≤ 2 mln EUR mogą być zwolnione z niektórych obowiązków dostępności.

Prawa użytkownika i kary

  • Użytkownik może zażądać zapewnienia dostępności; firma ma 7 dni na odpowiedź (max. przedłużenie do 2 miesięcy).
  • Kary: do 10 % rocznego obrotu; do 5 000 PLN za brak deklaracji dostępności Biznes.gov.pl.

Rekomendowany proces wdrożenia

  1. Audyt wstępny

    • Automatyczne skanery (Axe, WAVE) + ręczna weryfikacja klawiaturą i czytnikiem.
  2. Implementacja poprawek

    • ARIA live regions, role="alert", aria-invalid, label for input, alt text.
  3. Testy z użytkownikami

    • Sesje z osobami korzystającymi z czytników i nawigacji klawiaturą.
  4. Szkolenia zespołu

    • Dział marketingu, deweloperzy, webmasterzy – „accessibility by design”.
  5. Utrzymanie

    • Audyt co kwartał; monitorowanie zmian w WCAG i prawie.

Źródła

  1. Ustawa z dnia 26 kwietnia 2024 r. o zapewnianiu spełniania wymagań dostępności… (Dz.U. poz. 731) Dziennik Ustaw
  2. Biznes.gov.pl – zwolnienie mikroprzedsiębiorców i terminy dostosowania Biznes.gov.pl
  3. MDL Kancelaria – interpretacja okresu przejściowego do 2030 r. JKLAW
  4. MDN Web Docs – ARIA live regions dla dynamicznych zmian MDN Web Docs
  5. Harvard Accessibility – powiadamianie o dynamicznych zmianach accessibility.huit.harvard.edu
  6. W3C Understanding SC 3.3.1 Error Identification W3C
  7. Smashing Magazine – przewodnik po dostępnej walidacji formularzy Smashing Magazine
  8. TetraLogical – dostępne komunikaty błędów z aria-invalid i role="alert" TetraLogical
  9. W3C Understanding SC 3.3.2 Labels or Instructions W3C
  10. W3C Headings tutorial – logiczna struktura nagłówków W3C
  11. Yale Usability – znaczenie nagłówków dla czytników ekranowych usability.yale.edu
  12. Wikipedia WCAG 2.1 – lista success criteria (m.in. 2.4.4 Link Purpose) Wikipedia
  13. WCAG Plain Language blog – znaczenie prostego języka (SC 3.1.5) WCAG

Zapytanie ofertowe

Zapytaj o szczegóły oferty. Prześlij wymagania w opisie lub załączonym briefie.

Wybierz plik
 
Blog Artykuły
Ustawienia dostępności
Wysokość linii
Odległość między literami
Wyłącz animacje
Przewodnik czytania
Czytnik
Wyłącz obrazki
Skup się na zawartości
Większy kursor
Skróty