Automatiser le test d'applications Web avec Selenium RC Configuration et intégration

Choix du navigateur

Une des options incontournables de Selenium est la possibilité de choisir le navigateur utilisé pour lancer les tests. Deux moyens sont possibles :

 Dans le test : rajouter un paramètre lors de l'initialisation :

setUp("http://www.google.fr/", ?*firefox?);

 Dans le pom, configurer le plugin selenium :

 <configuration>
 <forcedBrowserMode>*iexplore</forcedBrowserMode>
</configuration>

Comme le nom du paramètre l'indique, le navigateur défini dans le plugin sera tout le temps utilisé, quelle que soit l'initialisation du test.

Parmi les différentes valeurs possibles :

 *iexplore pour Internet Explorer,
 *firefox pour Mozilla Firefox,
 *custom <chemin> pour utiliser un autre navigateur, en indiquant le chemin vers l'exécutable.


Intégration


Un fait qui est rapidement constaté est la lenteur des tests selenium. De plus, ces tests ont plus vocation à être exécutés dans un environnement d'intégration (sur différentes plates-formes, avec différents navigateurs, différents profils de connexion...) que dans un environnement de développement à la suite de tests unitaires joués en isolation.

Nous allons donc configurer le plugin surefire, utilisé pour l'exécution des tests unitaires, afin de ne lancer les tests selenium que lors de la phase "integration-test".

 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <version>2.5</version>
 <configuration>
  <excludes>
   <exclude>**/selenium/*.java</exclude> <!-- Les tests selenium sont exclus de la phase de test -->
  </excludes>
 </configuration>
 <executions>
  <execution>
   <id>surefire-integration-test</id>
   <phase>integration-test</phase>
   <goals>
    <goal>test</goal> <!-- La phase integration-test va lancer les tests... -->
   </goals>
   <configuration>
    <excludes>
     <exclude>none</exclude>
    </excludes>
    <includes>
     <include>**/selenium/*Test.java</include> <!-- ...en incluant les tests selenium -->
    </includes>
   </configuration>
  </execution>
 </executions>
</plugin>

Nous pouvons vérifier son fonctionnement en exécutant tout d'abord la phase de test, qui ne va pas lancer les tests Selenium : mvn test.

Puis nous exécutons la phase de test d'intégration, qui va lancer les tests Selenium de manière séparée : mvn integration-test