Co jsou falešně pozitivní výsledky v přístupnosti

Ne vždy, co vypadá jako chyba, opravdu chybou je. Tak je tomu i v případě falešně pozitivních výsledků. Co to je, proč k nim dochází a jak je identifikovat?

Co je false-positive?

Falešně pozitivní (false-positive) výsledek nastává, když testovací nástroj označí něco jako chybu přístupnosti, ale ve skutečnosti o chybu nejde. Element sice nesplňuje určité pravidlo, ale nepředstavuje žádnou reálnou bariéru pro uživatele.

Proč k false-positives dochází?

Automatické nástroje testují přístupnost podle pevně daných pravidel. Kontrolují například, zda má každý:

  • obrázek alternativní text?
  • formulářový prvek popisek?
  • iframe atribut title?

Tyto kontroly jsou užitečné, ale nástroje nerozumí kontextu. Nevědí, že:

  • skrytý element (display: none) uživatel nikdy neuvidí.
  • element označený aria-hidden="true" je záměrně skrytý pro odečítače obrazovky.
  • technický prvek ve formuláři jako <input type="hidden"> slouží pouze pro přenos dat.

Typické příklady false-positives

<iframe style="display: none;" src="https://chatbot.example.com"></iframe>

Co hlásí nástroj: Iframe nemá atribut title, uživatel odečítače obrazovky neví, co obsahuje.

Proč to není problém: Iframe je zcela skrytý (display: none), uživatel se k němu nikdy nedostane. Chatbot se zobrazí až po kliknutí na tlačítko, kdy se změní styl na display: block a přidá se title.

<input type="hidden" name="form_build_id" value="abc123">

Co hlásí nástroj: Formulářové pole nemá správný atribut autocomplete.

Proč to není problém: Skrytá pole jsou technické prvky pro správu formulářů. Uživatel je nevidí, nemůže do nich psát, autocomplete zde nedává smysl.

<textarea  id="g-recaptcha-response"  style="display: none;" ></textarea>

Co hlásí nástroj: Textarea nemá přístupný popisek (label).

Proč to není problém: Toto pole vyplňuje JavaScript automaticky po ověření CAPTCHA. Je skryté, uživatel s ním neinteraguje.

Jak false-positives identifikujeme?

Analyzujeme HTML kód nahlášených problémů a hledáme vzory, které indikují kompletně skrytý element:

  • display: none – element není vykreslen
  • visibility: hidden – element není viditelný
  • type="hidden" – skrytý formulářový prvek

Poznámka: aria-hidden="true" záměrně NENÍ v seznamu. Tento atribut skrývá element pouze pro odečítače obrazovky, ale element zůstává viditelný pro ostatní uživatele. Chyby jako aria-hidden-focus (focusovatelný element je skrytý pro screen reader) jsou skutečné problémy přístupnosti.

Proč tyto chyby nezapočítáváme do skóre?

  1. Zkreslování výsledků – Web s chatbotem by měl automaticky horší skóre než web bez chatbotu, i když oba jsou stejně přístupné.
  2. Demotivace správců – Správci webů by viděli chyby, které nemohou nebo nemají smysl opravovat.
  3. Falešný pocit bezpečí – Oprava false-positives by zlepšila skóre bez reálného zlepšení přístupnosti.
  4. Přesnost hodnocení – Chceme, aby skóre odráželo skutečnou přístupnost, ne technické artefakty.

Co s false-positives děláme?

  • Nezapočítáváme je do skóre – Tyto chyby se nezapočítávají do výsledného hodnocení.
  • Zobrazujeme je v detailech – Pro transparentnost je zobrazujeme v detailní zprávě, abyste je měli možnost ručně zkontrolovat.
  • Označíme je – Jasně uvádíme, že jde o false-positive.
  • Pravidelně aktualizujeme seznam – S novými verzemi nástrojů a webových technologií přibývají nové vzory.

Automatické testování má limity

False-positives jsou jedním z důvodů, proč automatické testování zachytí pouze 30–50 % skutečných problémů s přístupností. Pro kompletní hodnocení je vždy nutné:

  • Manuální testování s odečítačem obrazovky.
  • Testování ovládání pouze klávesnicí.
  • Uživatelské testování s lidmi s různými omezeními.

Automatické skóre je užitečný indikátor, ale ne kompletní obraz přístupnosti webu.