Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Standard UI je audit nad objevenou sadou stránek a jeho selhání se opravují u sdíleného zdroje

Standard UI je audit nad objevenou sadou stránek a jeho selhání se opravují u sdíleného zdroje

majordomus://adr/adr-0022přijato uipřístupnostwebprojections

odkazuje na

  • put_in_force apps/majordomus-cli/src/web/report/ui.rs (soubor)
  • put_in_force apps/majordomus-cli/src/web/validate.rs (soubor)
  • put_in_force scripts/lib/ui-audit.mjs (soubor)
  • put_in_force scripts/lib/ui-contrast.mjs (soubor)
  • put_in_force scripts/lib/ui-discover.mjs (soubor)
  • put_in_force scripts/lib/ui-routes.mjs (soubor)
  • put_in_force scripts/lib/ui-static.mjs (soubor)
  • put_in_force scripts/ui (soubor)
  • put_in_force project.ui-conformance@1
  • put_in_force project.web-surface-topology@1
  • put_in_force test/cases/85_ui_conformance.sh (test)

odkazuje na něj

22. Standard UI je audit nad objevenou sadou stránek a jeho selhání se opravují na sdíleném zdroji

Kontext

Repozitář měl standard UI v tom smyslu, že na něj měl člověk názory. Existoval mobile-first případ, který v headless prohlížeči měřil horizontální přetečení na každé trase, a nad to posouzení. Web vyrostl na 483 stránek napříč devíti webovými povrchy, generovanými ze šablon sestavením, které nikdo nečte stránku po stránce.

První strojový audit všech z nich, při každé šířce, kterou zkompilované téma deklaruje, našel 1455 selhání. Celý argument je v rozdělení:

  • 491 rolovatelných oblastí, ke kterým se klávesnicí nedalo dostat, na 197 stránkách — jedno typografické pravidlo, které způsobuje rolování pre a table, a zvýrazňovač, který vydává pre.
  • 411 selhání kontrastu na 134 stránkách — jedna generovaná paleta zvýrazňování, jejíž 18 z 19 barev leželo pod 4,5:1 na pozadí, které deklaroval tentýž stylesheet.
  • 312 odkazů odlišených od okolního textu pouze barvou, na 92 stránkách — jediný idiom odkazu, text-fg-brand hover:underline, zkopírovaný 140krát.
  • 165 stránek odpovídajících 404 pod běžícím spustitelným souborem — jedna nativní trasa připojená přes sekci aplikace. (Ta trasa se mezitím přesunula pod project.web-surface-declared-once; toto rozhodnutí si ponechává validátor, který najde další.)
  • 36 přeskočených úrovní nadpisů na 3 stránkách, 27 příliš malých cílů na 14, 12 nepojmenovaných ovládacích prvků formuláře na 1 a 1 stránka přetékající při 320px.

Žádná z velkých tříd není chybou stránky. Každá je rozhodnutí učiněné jednou, aplikované všude a nikdy neměřené. Recenzent je nenajde, protože jejich nalezení znamená navštívit 1683 kombinací stránky a šířky a počítat kontrastní poměry.

Rozhodnutí

Standard UI je spustitelný audit nad množinou stránek a množinou šířek, které se objevují, a jeho zjištění se opravují u zdroje, který sdílejí.

Nic nevypisuje stránku ani šířku. Stránky pocházejí ze sestaveného webu — jeho souborového systému a jeho sitemapy, sjednocených, takže i osiřelá stránka se navštíví. Šířky pocházejí z media queries, které sestavení CSS vyprodukovalo, takže breakpoint přidaný do tématu se auditují, aniž by se měnil test. scripts/ui pages a scripts/ui viewports odpovídají, co se navštíví a odkud každá hodnota pochází, a ani jedno nečte seznam.

Audit je prohlížeč. scripts/ui audit řídí vlastní majordomus serve repozitáře a skutečný Chrome nad touto sadou a kontroluje to, na co umí odpovědět jen prohlížeč — rozložení při dané šířce, strom přístupnosti, zda spouštěč komponenty jmenuje existující cíl, zda stránka zalogovala chybu — a nemá druhý názor na to, jak se web servíruje.

Značkování, které tento repozitář nepíše, se normalizuje při sestavení; značkování, které píše, se drží u zdroje. pre zvýrazňovače syntaxe, table typografického pluginu a zaškrtávátko úkolu v markdownu přicházejí bez atributu, který bychom mohli nastavit upstream, takže sestavení normalizuje vykreslený výstup: které prvky se posouvají, se čte ze stylopisu, který sestavení právě zkompilovalo, a paleta se zvedne na práh kontrastu vůči pozadí, které tento stylopis deklaruje, přičemž odstín a sytost zůstanou nedotčeny. Vše, co tento repozitář píše sám, odmítá scripts/ui check, což stojí milisekundy a nepotřebuje prohlížeč.

Zpráva je sekcí testovacího povrchu. Běh shody je testovací běh, /tests/ui je místo, kde ho čtenář hledá, a topologie webu už odmítá povrch připojený uvnitř podstromu jiného. Proto majordomus web report ui zapisuje do povrchu, který vlastní testovací zpráva, nic vlastního nedeklaruje a nikdy nepřepíše deklaraci nadřazeného producenta.

Nativní routa připojená nad vlastní stránky aplikace je zjištění. Topologie správně vyjímá kořenovou aplikaci z pravidla vnořování — odpovídat na to, co si nenárokuje nic jiného, je její práce. Tato výjimka byla slepá k tomu, že aplikace má soubory na určitých cestách, a žádná úvaha o připojeních to nevidí: odpověď je na disku. web validate se nyní ptá výstupu aplikace samotné, zda má stránky pod připojením nativní routy, a varuje s počtem. Varuje, místo aby odmítlo, protože která z obou věcí se má přesunout, je záměr a rozhoduje o tom člověk. To, co toto našlo, už je rozhodnuto — /swagger, pod project.web-surface-declared-once — a validátor je to, co najde další dřív, než bude muset audit.

Důsledky

Stránka přidaná na web se audituje v den, kdy se vykreslí, a breakpoint přidaný do motivu se navštíví v den, kdy se zkompiluje. Ani jedno nestojí úpravu nikde.

Build nyní dvakrát přepisuje vlastní výstup — paletu a značkování posouvání. To je normalizace odvozeného stavu, ne úprava zdroje, a oba průchody jsou idempotentní: vyhovující paleta se přepíše sama na sebe a druhý průchod nic nezmění. Audit to dokazuje zvenčí, což je jediný důvod, proč tomu věřit.

Vygenerovaná paleta zvýrazňování už neodpovídá upstream tématu, ze kterého byla vygenerována. Odpovídá jeho odstínu a sytosti; neodpovídá jeho světlosti tam, kde byla světlost pod prahem. Volba jiného tématu by posunula číslo, ne opravila třídu vad, protože další téma se volí stejně — podle toho, jak se čte, někým, kdo neměří kontrast.

Zastínění nyní hlásí web validate s počtem stránek, místo aby ho o hodinu později objevil audit vykresleného webu. Co s ním udělat — přejmenovat route nebo přesunout sekci — zůstává rozhodnutím člověka a varování je to, na co se to rozhodnutí musí dívat.

Zamítnuté alternativy

Seznam stránek k auditu s pravidlem, že se udržuje aktuální. Táž vada jako registrace po jednotlivých površích, kterou tento repozitář už odmítá: seznam je správný v den, kdy se napíše. Audit by pokryl stránky, které si někdo pamatoval.

Zvolit jiné téma zvýraznění. Přesunulo by 411 nálezů na nějaké jiné číslo a repozitář by nevěděl, které to je. Paleta je generovaná; práh patří do generovaného výstupu.

Opravovat kontrast, posouvací boxy a odkazy stránku po stránce. 483 stránek, tři rozhodnutí. Náprava třídy zjištění mění jediné místo, odkud pochází, jinak repozitář získá 483 kopií rozhodnutí, které učinil jednou.

Udělat z auditu blokující kontrolu u každého commitu. Potřebuje sestavený web, prohlížeč a několik minut. Polovina, která se může postavit před commit — značky, které tento repozitář píše — je scripts/ui check a dělá to; audit v prohlížeči je kontrola, což pravidlo o levných blokujících kontrolách už vyžadovalo.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0022-the-ui-standard-is-an-audit-over-a-discovered-page-set.md
identity
adr-0022
dostupné také jako
Zdroj MCP majordomus://adr/adr-0022 · majordomus entity show adr/adr-0022 · GET /api/v1/entity?uri=majordomus://adr/adr-0022
v Cockpitu
/cockpit/objects/adr/adr-0022

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

Prohledává názvy a popisy všech stránek, které tento web publikuje.