Acid3: bitva prohlížečů vrcholí právě dnes

27. 3. 2008
Doba čtení: 10 minut

Sdílet

Aktualizováno: Aktualizováno (27. 3. 2008 7:40)
Není tomu dlouho, co se webové prohlížeče potýkaly s testem Acid2 a snažily se vyloudit úsměv na žluté tvářičce. Další z testů přišel na řadu a s ním nová výzva. Projít stobodovým testem, bezchybně zobrazit stránku a vyhnout se přitom všem nástrahám včetně koček. Který z prohlížečů jej absolvuje jako první?

Nedávno byl zveřejněn test Acid3 určený pro výrobce webových prohlížečů. Test, jehož příprava trvala téměř rok, za pomoci dobrovolníků vytvořil Ian Hickson (autor i předchozího Acid2 testu) pod záštitou The Web Standards Project a historicky se jedná o třetí z Acid testů. Všechny je můžete nalézt na adrese www.acidtests­.org.

Výsledná stránka Acid3 vypadá o něco komplikovaněji než u jeho staršího bratříčka, který obsahoval jen text Hello World! a žlutý smajlík. Acid3 zobrazuje na šířku položený list papíru s malým stínem, na kterém je nápis Acid3 (také se stínem), šest barevných obdélníků tvořících schodiště, počitadlo prošlých JavaScriptových testů (ideálně 100 ze 100) a komentář k testu. Acid3 tak již nevypadá vůbec úsměvně jako Acid2, ale velmi technicky.

Acid3 full

Projít úspěšně tímto testem není pro webové prohlížeče zdaleka jednoduché. Cílem není jen dosáhnout plných 100 bodů, ale i správně zobrazit výslednou stránku. Na každém kroku čekají na prohlížeče pro ně speciálně připravené nástrahy, kterým není vždy snadné uniknout.

Jak si s Acid3 poradí dnešní zobrazovací jádra prohlížečů najdete u hesla Acid3 na Wikipedii, kde jsou navíc uchovávány i průběžné výsledky vývojových verzí. Ukažme si stav v době psaní tohoto článku.

Acid3 table

Acid3 v zobrazovacích jádrech prohlížečů. Větší výpovědní hodnotu má porovnání výsledků různých verzí téhož prohlížeče než srovnávání prohlížečů mezi sebou. Pozn.: Je možné, že obrázek neodpovídá aktuálnímu stavu v době vydání článku. Vývojáři prohlížečů pilně pracují a jen během přípravy článku se stav několikrát změnil. Pro aktuální stav se podívejte přímo na Wikipedii, z níž tento screenshot pochází.

Pozor na kočičí hlavy

Z tabulky si nelze nevšimnout, že se autorovi, známému milovníkovi koček, podařilo do testu zakomponovat i dvě kočičí hlavy (možná jako pojítko s Acid2, který také hlavu obsahoval, byť ne kočičí). Jedná se o dva identické obrázky (první kočka, druhá kočka), které jsou součástí testu, ale ve výsledném zobrazení by neměly být viditelné. Poslední, třetí, kočka se skrývá ve favikoně celého webu.

Známé mýty o Acid3

O Acid3 se začalo hodně psát a hovořit, ne vždy ovšem přesně (což souvisí s prozatímní absencí dokumentace Acid3). Ukažme si některé známé omyly.

Acid3 je určený k tomu, abychom poznali, který prohlížeč je lepší.

Není, Acid3 ověřuje, zda prohlížeče dodržují vybrané body webových standardů. Jednotlivé body byly úmyslně vybrány tak, aby je minimálně jeden z prohlížečů plně nepodporoval. Proto testem v době vzniku žádný prohlížeč neprošel.

Pomocí Acid3 lze např. poznat, že prohlížeč A podporuje vlastnost XY, zatímco prohlížeč B nikoliv nebo přinejmenším chybně. Ovšem Acid3 nijak nevypovídá o tom, jak jsou na tom jednotlivé prohlížeče s podporou webových standardů obecně. Na to je Acid3 příliš jednoduchý a testuje málo věcí na to, aby mohl sloužit jako testovací sada celých specifikací. Proto ačkoliv to může být lákavé, na základě Acid3 nelze vytvořit směrodatný žebříček webových prohlížečů.

Jednotlivé body stobodové stupnice Acid3 jsou si rovny.

Nejsou. Jednotlivé testy nemají ekvivalentní váhu a stobodová stupnice tak není lineární. Pokud mají např. prohlížeč A i prohlížeč B oba 80 bodů, neznamená to, že mají ke splnění testu stejně daleko. Záleží, kterých 80 bodů má každý z nich splněno. A navíc některé testy se do bodové stupnice vůbec nepromítají.

Platí nerovnost  (X + 1) > X. Tedy prohlížeč, který má více bodů, je blíže k splnění Acid3.

V Acid3 tato nerovnost obecně platit nemusí, viz mýtus o lineárnosti bodové stupnice. Pokud má jeden prohlížeč 80 bodů a druhý prohlížeč pouhých 79 bodů, bez hlubší analýzy jednotlivých bodů nejsme schopni ověřit, který z prohlížečů má ke splnění Acid3 blíže.

Porovnat, které testy ke splnění prohlížečům ještě chybí, nám pomůže konzole, již lze vyvolat po doběhnutí Acid3 klepnutím na písmeno „A“ ve slově Acid (pro detailnější zkoumání přidržte při kliknutí klávesu SHIFT).

Prohlížeč, který dosáhl 100 bodů, automaticky zvládl celý test.

To není pravda. Součástí Acid3 jsou i testy, které se v bodové stupnici neprojeví. Ke splnění Acid3 nestačí pouze mít plných 100 bodů. Pro úspěšné splnění musí jednotlivé skripty probíhat plynule (s tím souvisí plynulá animace čísla s počtem prošlých testů od 0 do 100) a podoba výsledné stránky musí být navíc shodná se srovnávacím zobrazením.

Pozn.: Na rozdíl od Acid2 není srovnávací zobrazení obrázek, ale běžná validní HTML stránka. Není nutné, aby se zobrazila ve všech prohlížečích na pixel stejně (rozdíly můžou nastat např. v použitém fontu písma nebo způsobu jeho vyhlazování). Důležité je, aby výsledek Acid3 a srovnávací zobrazení bylo na pixel stejné v témže prohlížeči.

Acid3 nemůže být již za žádných okolností měněn.

Ani toto není pravda. Pokud by vývojáři webových prohlížečů nalezli v Acid3 problém, může být Acid3 na jejich podnět upraven. Takto byl nedávno po upozornění od vývojářů WebKitu upraven test 73, jehož autorem je Jonas Sicking. Úprava testu ve výsledku pomohla k lepšímu zvládnutí Acid3 nejen WebKitu, ale i některým dalším zobrazovacím jádrům.

Acid3 zbytečně odvádí pozornost vývojářů prohlížečů a uživatelům webu to nic nepřinese.

K překonání Acid3 musí vývojáři prohlížečů implementovat řadu webových standardů, jejichž implementaci by z různých důvodů odkládali. Některé testy v Acid3 jsou zaměřeny na již implementované webové standardy, které se nechovají stejně (nejsou interoperabilní) ve všech prohlížečích (např. model událostí), což zbytečně komplikuje a prodražuje vývoj webových aplikací. Jiné testy v Acid3 jsou zaměřeny na standardy, které přináší zajímavou funkčnost, ale dosud nejsou široce podporovány, přestože jejich specifikace byly již dávno dokončeny (např. stažitelné fonty nebo SVG). Oba typy testů jsou tak přínosné pro webové vývojáře i – obzvláště ten druhý – pro koncové uživatele.

Acid3 testuje řadu technologií, které se týkají každodenního webového vývoje. Zatímco některé testy jsou zaměřené na výstřední krajní podmínky, jiné jsou chlebem a solí pro problémy s interoperabi­litou, se kterými dnes weboví vývojáři zápasí.“ (Maciej Stachowiak, vývojář WebKitu)

Když podle Acid3 nelze jednoduše posuzovat prohlížeče, tak Acid3 nemá žádný smysl.

Acid3 smysl má, ovšem nikoliv pro porovnání prohlížečů, nýbrž právě pro interoperabilní implementaci webových standardů. Acid3 motivuje vývojáře webových prohlížečů implementovat standardy, k nimž by se dostali až za delší dobu nebo možná vůbec nikdy.

Acid testy nám demonstrují jedinečnost webu jako svobodného prostředí. Najde se „kdosi“, kdo odprezentuje seznam nedostatků, kterými trpí výrobky (prohlížeče) hlavních hráčů na trhu. A hlavní hráči místo, aby tento seznam bagatelizovali a smetli ze stolu, se snaží jeho požadavkům vyhovět a dokonce se předhání, kdo toho docílí rychleji, aniž by k tomu byli nuceni nebo z toho sami měli okamžitý užitek. Neexistuje mnoho oblastí (a nejspíš nejen v IT), kde bychom se s něčím podobným setkali.

A jelikož význam Acid testů dnes respektují všichni výrobci populárních prohlížečů bez výjimky, můžeme nedávno dokončený Acid3 tak de facto považovat za předpověď, které webové standardy budou prohlížeče v nejbližších dnech, měsících až letech implementovat. Někteří dříve, jiní později, ale ve výsledku všichni. A právě v tom tkví podstata testu.

Co Acid3 testuje

Když předpověď, tak předpověď – podívejme se, na co se můžeme ve webových prohlížečích v nejbližších letech těšit, resp. co Acid3 skutečně testuje. Nejedná se o žádné horké novinky nebo věci dosud zcela nespecifikované (např. novinky HTML5 byste v Acid3 jen těžko hledali). Do Acid3 se dostaly pouze starší body webových specifikací, údajně takové, které byly dostatečně specifikovány již v roce 2004 nebo dříve. Vybírám jen ty hlavní.

Testy, které se projeví na vzhledu

Pseudotřída :root slouží pro označení kořenové značky dokumentu (v HTML ji použijeme jen zřídka, ale hodí se pro XML), v Acid3 nastavuje stříbrné pozadí celé stránky. Pokud nevidíte pozadí stříbrné (barva silver), ale tmavě šedivé, tak váš prohlížeč tuto pseudotřídu nepodporuje.

CSS vlastnost text-shadow umožňuje přidat stín k textu a je použitá na stín slova „Acid3“. Pokud u slova Acid3 nevidíte jemný stín, tak váš prohlížeč tuto vlastnost nepodporuje.

Stažitelné fonty (@font-face) umožňují webovým stránkám používat vlastní fonty (např. méně obvyklé fonty, které uživatelé nemají nainstalovány). Acid3 používá font acid3.acidtes­ts.org/font.ttf k zobrazení jednoho znaku. Tento znak je tvořen bílým obdélníkem a překryje podkladový červený obdélník v pravém horním rohu. Pokud vidíte v pravém horním rohu červený obdélník, pak váš prohlížeč stažitelné fonty nepodporuje.

Barevné profily rgba a hsla slouží k nastavení barev včetně průhlednosti. Pomocí rgba je nastavena barva stínu slova Acid3 a pomocí hsla je černě obarveno lomítko v počitadle bodů. Pokud toto lomítko vidíte červené, tak váš prohlížeč hsla nepodporuje.

Testy a počitadlo 0..100

Většina testů Acid3 ovšem nemá přímo viditelný výsledek, ale promítne se na zobrazeném počitadle a na šesti obdélnících uprostřed stránky (v originále to jsou buckets, takže „kbelíky“). Každý kbelík má přidělenou svou sadu testů. Všech 100 testů je rozděleno do 6 kbelíků po 16 testech, zbylé 4 testy nepatří do žádného kbelíku.

Při puštění Acid3 jsou kbelíky neviditelné a podle počtu úspěšných testů mění svou barvu. Při prvním úspěšném testu ze své sady je kbelík zobrazen jako černý, posléze šedý, pak stříbrný a teprve po úspěšném proběhnutí všech testů dostane svou finální barvu (v některých prohlížečích je proces během testu pěkně vidět jako barevná animace).

Podle výsledné barvy kbelíku tak lze na první pohled odhadnout, ve kterých testech prohlížeč nejvíce selhává, např. noční verze WebKitu ještě nedávno selhávala jen na testech v prvním a pátém kbelíku (jsou zobrazeny jako stříbrné). V době vydání tohoto článku je na tom o něco lépe.

Acid3 WebKit

Testy jsou do kbelíků rozděleny tématicky a pokrývají řadu specifikací. Testují zpravidla vždy několik detailních bodů z různých částí každé zahrnuté specifikace, každopádně pro úspěšné splnění Acid3 budou muset prohlížeče zmíněné specifikace implementovat buď celé nebo alespoň z většiny.

Rozdělení testu do kbelíků

  1. DOM Traversal, DOM Range, MIME, HTTP
  2. DOM2 Core a DOM2 Events
  3. DOM2 Views, DOM2 Style, CSS3 selektory, CSS Media Queries
  4. HTML a DOM
  5. Směs testů od přispěvatelů (SVG, SMIL…)
  6. ECMAScript

Pokud se na tento seznam podíváte detailněji, jistě v něm naleznete i body, které vás dnes trápí, a jejichž vyřešení se s Acid3 snad dočkáte. Konečně tu bude model událostí jednotný mezi prohlížeči, konečně bude možné na webu používat SVG atd. Není toho málo! Teď už jen zbývá čekat, kdy všechny prohlížeče implementaci zvládnou.

Není důležité být první, ale zúčastnit se

Při porovnání prohlížečů již dnes můžeme vidět první favority. Nejblíže k cíli byl dlouhou dobu WebKit, který tak zřejmě chce potvrdit své dřívější prvenství v Acid2. Klobouk dolů, všechna čest. Pro příznivce WebKitu je to jistě potěšující zpráva, ale pro webové vývojáře to není příliš zajímavé. Pro ty se pravý význam Acid3 ukáže teprve, až testem projdou úplně všichni, což s určitostí nenastane ani v tomto roce a bohužel pravděpodobně ani v roce příštím.

Jen několik málo hodin před vydáním tohoto článku Anne van Kesteren, zaměstnanec Opera Software, oznámil, že interní buildy Opery právě v Acid3 dosáhly 98/100 bodů, tedy více, než v tu dobu měl poslední noční build WebKitu. O několik málo hodin později oznámil WebKit dosažení téhož skóre. Netrvalo dlouho a Opera Software zveřejnila screenshot, na kterém má celých 100 bodů (jak sami přiznávají do splnění testu jim ale ještě chybí několik maličkostí)! V brzké době se zřejmě dočkáme mimořádného veřejného buildu Opery, který tento fakt má potvrdit. A tak těsně před vyvrcholením boje přišlo nečekané napětí. Ale tak to u správných závodů má být. Vítězství není do poslední chvíle jisté.

Sám autor testu Ian Hickson je rychlostí vývojářů prohlížečů překvapen: „Neočekával jsem, že by prohlížeče splnily Acid3 do letošního srpna, natož během měsíce. Jsem opravdu ohromen velkou oddaností ke standardům, kterou týmy Opery a WebKitu (a zejména Apple) předvedly.

Shrnutí

Tento článek si nekladl za cíl popsat test Acid3 do všech detailů, pouze měl naznačit šíři jeho dopadu a ukázat, že Acid3 nekončí jen u zobrazeného čísla prošlých testů. Acid3 je složitější než jeho předchůdce Acid2 a na detailní popis celého testu (podobný, jaký existuje pro Acid2) si počkáme, až bude vydána jeho oficiální dokumentace, což může trvat několik týdnů, možná i měsíců.

Přehled zdrojů, ze kterých článek vycházel

Aktualizace

Aktualizováno v 7:40:

bitcoin_skoleni

Vývojářům WebKitu se poradilo dosáhnout všech 100 bodu ze 100, ale testem také stále ještě neprošli.

Po internetu se šíří chybná zpráva, že Opera prošla Acid3 testem. Ian Hickson ji vyvrací.

Který prohlížeč projde Acid3 jako první?

Autor článku

Martin Hassman vymyslel a založil projekt Zdroják. Absolvoval Vysokou školu chemicko-technologickou v Praze. Pracoval jako webový vývojář a specialista na technologie Mozilla.org.