Kritéria, kontroly a packy

Kritérium je jedna věc, kterou má krok splnit. Má id (AC1), text pro lidi a právě jednu kontrolu check. Jak je do scénáře přidat: Přidat kritéria a packy. Jak se z výsledků stane verdikt: Jak vznikají verdikty.

Druhy kontrol

typeKdy ho použítVolby
deterministiccokoli spočitatelného nebo přesného: přítomnost, počty, text, URL, styly, hodnoty ve stránceassert a jeho volby (níže)
semanticúsudek: je text srozumitelný, je na stránce jedna hlavní akcequestion (anglicky, ano = splněno), true a false (co se počítá za ano a za ne), scope (CSS selektor, který se pošle evaluátorovi), about: console (čte chyby v konzoli místo stránky), vision: true (ukáže i screenshot)
manualnehodí se ani jedno; rozhodne kontrolující na plachtěnote

Čísla, data a počty patří do deterministických kontrol, nikdy do sémantické otázky. V jedné otázce se ptejte na jednu věc.

Deterministické kontroly (assert)

Společné volby: selector (CSS), pattern (regulární výraz) s flags (i, m, s), value, min, max, all (vyhovět musí každá shoda, ne jen jedna).

Obsah stránky

assertSplněno, když
existsselector najde aspoň jeden prvek
absentselector nenajde nic
countpočet shod je mezi min a max
text_matchesviditelný text prvku odpovídá pattern
text_absentžádný viditelný text neodpovídá pattern
text_equalscelý text se rovná value (mezery sloučené)
attr_equalsatribut attr se rovná value
attr_matchesatribut attr odpovídá pattern
no_overflowstránka se neposouvá do strany
no_console_errorsv konzoli nejsou chyby

Adresa, metadata a odkazy

assertSplněno, když
title_matchestitulek stránky odpovídá pattern
meta_matchescontent meta tagu ze selector odpovídá pattern
link_matcheshref odkazu ze selector odpovídá pattern
url_matchesURL po kroku odpovídá pattern; part vybere href, path, query, hash, host nebo origin
url_equalsURL se rovná value (cesta nebo celá URL); ignore_query vynechá ?… a #…
http_statusstav dokumentu je mezi min a max (výchozí 200–299), nebo se rovná value
link_homestránka odkazuje zpět na úvodní stránku
links_okkaždý odkaz na stejný původ odpoví pod 400 (max odkazů na stránku, pattern přeskočí cesty, follow mimo prostředí jen pro čtení)
hreflang_pairsaspoň min jazyků, každá verze odpoví 200 a odkazuje zpět

Styly a hodnoty ve stránce

assertSplněno, když
style_equalsspočítaná CSS vlastnost property se rovná value nebo design tokenu token; op porovnává čísla (>=), tolerance dovolí zaokrouhlení v px
style_matchesspočítaná property odpovídá pattern
js_equalsjeden JavaScriptový výraz expression, který jen čte, vrátí ve stránce value (nebo odpovídá pattern, nebo se porovná přes op)

Přístupnost (používá je pack a11y)

assertSplněno, když
a11y_images_altobrázky mají alternativní text
a11y_namesodkazy a tlačítka mají přístupný název
a11y_labelsformulářová pole mají popisky
a11y_headingsúrovně nadpisů se nepřeskakují
a11y_contrasttext splňuje kontrast WCAG AA
a11y_mainstránka má landmark main
a11y_unique_idsid prvků jsou jedinečná
a11y_focus_orderpořadí tabulátoru odpovídá stránce a dojde ke každému ovládacímu prvku
a11y_focus_visiblefokus je vidět s kontrastem aspoň 3 : 1
a11y_keyboard_traptabulátor nikde neuvízne
a11y_skip_linkodkaz pro přeskočení nebo hlavní obsah do tří zastavení tabulátoru
a11y_ax_namesovládací prvky mají název ve stromu přístupnosti prohlížeče
a11y_landmarkslandmarky jsou úplné a opakované mají popisek
a11y_ariarole a atributy ARIA jsou platné

Výkon, aplikace a design

assertSplněno, když
perf_lcp, perf_cls, perf_ttfb, perf_weightvykreslení největšího obsahu, posun rozvržení, čas do prvního bajtu nebo váha stránky nepřekročí max
app_labelskaždý ovládací prvek aplikace má přístupný popisek
app_touch_targetsdotykové plochy mají aspoň 48 dp (Android) nebo 44 pt (iOS)
app_no_truncationžádný text není useknutý trojtečkou
app_no_crashaplikace nespadla ani nepřestala odpovídat
design_pixelsobrazovka se od reference designu liší nejvýš v podílu ratio pixelů (výchozí 0,03)
design_structurenadpisy, landmarky, akce a pole odpovídají referenci designu
uses_tokensbarvy, písma, velikosti, mezery a zaoblení pocházejí ze sady tokenů

Packy

packs: [seo, a11y] u kroku přidá pevnou sadu kritérií. Vlastní kritérium se stejným id nahradí kritérium z packu; tak se mění limit (AC401 s max: 4000).

PackIdCo přidá
seoAC101–AC111jeden H1, titulek 10–70 a popis 50–160 znaků, canonical, hreflang pro každý jazyk, Open Graph, žádný noindex, meta viewport, html lang, žádné přetečení, žádné chyby v konzoli
usabilityAC201–AC204účel je jasný z první obrazovky, jedna hlavní akce, pole s popisky, texty odkazů, které říkají, co udělají
a11yAC301–AC314všechny kontroly přístupnosti výše; průchod navíc projde stránku tabulátorem, nic nekliká ani nepíše
perfAC401–AC404LCP do 2,5 s, CLS pod 0,1, TTFB do 800 ms, váha stránky do 3 MB (měřeno v prohlížeči průchodu)
consoleAC501evaluátor si přečte chyby v konzoli a řekne, jestli se týkají toho, co krok přijímá
errorsAC601–AC606skutečný stav 4xx/5xx, odkaz na úvod, navigace nebo hledání, žádný výpis chyby ze serveru, srozumitelná zpráva s cestou dál, žádné chyby v konzoli
appAC701–AC705popisky, dotykové plochy, žádný useknutý text, žádný pád, jasný účel a další krok
designAC801–AC803implementace proti referenci designu: pixely, struktura, tokeny

Pack a11y pokrývá část WCAG 2.2 AA. Audit se čtečkou obrazovky nenahradí.

Kaloko · latest · 2026-10-06