# Acid2

Le test Acid2 vise à valider la mise en œuvre d'un choix de fonctionnalités liées à différents standards du web dans un navigateur, jugées prioritaires par ses promoteurs. Lancé par Håkon Wium Lie et supporté par le Web Standards Project (WASP), il a été nommé ainsi en référence à un premier acid test historique, créé par Tod Fahrner, qui concernait le modèle de boîte CSS1, et qui avait été par la suite intégré dans les « Test suite for Cascading Style Sheets (CSS) Level 1 » du W3C. Le test Acid3 lui a succédé.

## Contexte historique

En mars 2005, Håkon Wium Lie, directeur technique d'Opera Software et créateur des feuilles de style en cascade, annonce la publication prochaine d'un test de compatibilité portant sur des fonctionnalités dont le support serait particulièrement réclamé par les développeurs de sites web. Cette annonce fait suite à la décision de Microsoft de relancer le développement de son navigateur web Internet Explorer, interrompu, sauf mise à jour de sécurité, depuis sa version 6.0 en 2001. Acid2 est alors ouvertement présenté comme un défi lancé à Microsoft, accusé de ne pas avoir tenu jusque-là ses promesses en matière d'interopérabilité et d'implémentation des standards du web.
Cet aspect polémique du test suscite des réserves de la part d'autres experts participant au développement et à la promotion des standards du web, tels qu'Eric Meyer. Le test Acid2 est finalement présenté par le WASP comme s'adressant à l'ensemble des navigateurs web.
Le passage du test Acid2 n'a pas été retenu par Microsoft comme une priorité pertinente lors du développement d'Internet Explorer 7 : Chris Wilson, responsable du développement d'IE, déclare en effet dès juillet 2005 :
   « En tant que liste de souhaits, acid2 est vraiment important et utile pour mon équipe. Mais il n'est pas destiné à être, selon moi, prioritaire pour IE7. Nous admettons parfaitement qu'IE est hors jeu aujourd'hui à cause de son support CSS. Nous avons parcouru le test Acid2, et nous avons analysé en détail les problèmes rencontrés par IE. Nous avons inscrit ces bugs et ces fonctionnalités sur notre liste. Cependant, il s'agit de fonctionnalités complexes et difficiles à implémenter, et elles ne seront pas en tête de liste pour IE7. Je pense que nous rendrons un bien meilleur service aux développeurs web en résolvant d'abord nos bugs les plus casse-tête pour eux, nos problèmes d'utilisabilité et en donnant la priorité aux fonctionnalités les plus souvent demandées, à partir des retours que nous avons eu. »
De fait, la version finale d'Internet Explorer 7 en 2006 corrige un nombre important de bugs CSS n'entrant pas dans le champ du test Acid2. Ces bugs avaient été mis en évidence par des développeurs web indépendants réunis en particulier autour des sites Position is Everything, QuirksMode et satzansatz. Le WASP avait d'ailleurs lui-même joué un rôle important dans les échanges entre ces initiatives privées et Microsoft.

## Description sommaire du test

À la différence des tests de conformité habituellement utilisés pour les implémentations HTML ou CSS, Acid2 n'est pas une suite de tests unitaires : il se présente sous la forme d'une page web unique qui concentre plusieurs dizaines de tests, sous la forme d'un dessin composé de lignes horizontales colorées représentant une figure souriante. Malgré la documentation fournie, il en résulte une certaine complexité, nécessitant des précisions ultérieures sur les tests spécifiques.
Le seul texte présent est « Hello World! ». Le balisage HTML4.01 est une série de blocs génériques (éléments div) ou spécifiques (éléments h2, p, object, table, blockquote, address et liste ul) pour la plupart vides.
La feuille de style interne combine différentes séries de propriétés, de manière à tester le support :
* des positionnements relatif, absolu et fixe ;
* du modèle de boîte ;
* du modèle de formatage en tableau ;
* de l'algorithme de calcul des marges ;
* du contenu généré ;
* du calcul des hauteurs de ligne dans les boîtes de ligne ;
* du comportement au survol ;
* de l'ordre du dessin dans les empilements ;
* du comportement de l'analyseur syntaxique (parser) CSS en cas d'erreur de syntaxe.
Le test ne se limite pas à essayer des fonctionnalités de CSS 2. Il concerne également le support d'éléments object imbriqués, permettant de produire différents contenus alternatifs selon les capacités du client, ainsi que les règles d'analyse HTML sur la fermeture des balises et les blocs de commentaires SGML. Il vérifie enfin le support des images PNG translucides et la gestion correcte du protocole data: pour l'insertion d'objets intégrés.
Les fonctionnalités vérifiées par le test Acid2 sont destinées à être implémentées par les navigateurs web en mode de rendu « strict » : la technique du doctype switching leur permet de maintenir si nécessaire leurs implémentations antérieures, non conformes, dans leur mode de rendu compatible (mode « quirks »).
Si le résultat de l'affichage de cette page web n'est pas identique au dessin attendu, la mise en œuvre de CSS 2 dans le navigateur n'est théoriquement pas conforme à la spécification CSS 2. Par contre, le fait qu'un navigateur réussisse le test ne signifie pas qu'il supporte entièrement CSS 2.