Selenium-RC est un outil qui permet de piloter un navigateur Web à partir d'un programme. Il est possible de programmer des tests Junit qui vérifieront le bon fonctionnement de l'interface d'un site Web. Selenium permet d'effectuer ce que l'on appelle du cross scripting. Cela veut dire que l'on peut injecter du Javascript dans les pages qui sont chargées par le navigateur que l'on pilote.

Si le site testé est codé en XHTML et qu'il utilise le content type application/xhtml+xml, il sera alors possible d'effectuer une validation du flux XHTML avec un parser XML en récupérant le DOM par cross scripting. Avec Firefox, XMLSerializer est très facile à utiliser et permet de transformer le DOM chargé par le navigateur en String, et de récupérer ce String dans le code Java du test Junit. Toutes les pages peuvent ainsi être testées avec une granularité très fine.

Cette validation apporte un niveau de qualité supplémentaire aux sites Web, et cette validation n'est pas envisageable si l'on utilise le vieux langage HTML.

Le content type est important car en spécifiant un content type text/html, même si la page est codée en XHTML le navigateur utilisera le moteur HTML pour créer le DOM, et la validation XHTML deviendra impossible.

Pour aller plus loin, je vous conseille la lecture des ces deux billets et la recommandation du W3C sur les "Media types" des pages XHTML: