Testing with Selenium
Cette documentation décrit le processus de test des applications webforJ utilisant Selenium, se concentrant spécifiquement sur le HelloWorldView du webforj-archetype-hello-world.
Pour en savoir plus sur le webforj-archetype-hello-world, consultez la section Introduction aux bases de l'application.
Prérequis
Avant d'exécuter les tests Selenium, assurez-vous des éléments suivants :
- L'application webforJ est correctement configurée et en cours d'exécution sur votre serveur local.
- Vous avez installé :
- Les liaisons Java de Selenium.
- Un WebDriver compatible pour votre navigateur.
- Maven pour les dépendances du projet.
Configuration Maven
Ajoutez les dépendances nécessaires dans votre pom.xml pour Selenium et d'autres bibliothèques de test :
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.27.0</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.9.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Exemple de test : HelloWorldView
Le code suivant illustre un test basé sur Selenium pour le composant HelloWorldView.
package com.example.views;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import static java.time.Duration.ofSeconds;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
import io.github.bonigarcia.wdm.WebDriverManager;
class HelloWorldViewTest {
private WebDriver driver;
private static final String PORT = System.getProperty("server.port", "8080");
@BeforeAll
static void setupAll() {
WebDriverManager.chromedriver().setup();
}
@BeforeEach
void setup() {
driver = new ChromeDriver();
driver.get("http://localhost:" + PORT + "/");
new WebDriverWait(driver, ofSeconds(30))
.until(titleIs("webforJ Hello World"));
}
@AfterEach
void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
void shouldClickButton() {
WebElement button = driver.findElement(By.tagName("dwc-button"));
assertEquals("Say Hello", button.getText(), "Mismatch de texte du bouton !");
}
}
Étapes clés
-
Initialiser WebDriver :
- Utilisez
WebDriverManagerpour gérer automatiquement l'exécutable du driver pour le navigateur.
- Utilisez
-
Configurer l'environnement de test :
- Démarrez le serveur de test sur
http://localhost:<port>/. - Attendez que le titre de la page corresponde au
webforJ Hello Worldattendu.
- Démarrez le serveur de test sur
-
Interagir avec les éléments :
- Localisez les éléments en utilisant
By.tagName,By.id, ou d'autres localisateurs Selenium. - Vérifiez les comportements attendus tels que les clics sur les boutons ou les changements de texte.
- Localisez les éléments en utilisant
Étant donné que webforJ produit une application web à page unique, Selenium n’est pas conscient de la manipulation du DOM après le chargement initial de la page. Vous pouvez utiliser l'API WebDriverWait de Selenium pour attendre jusqu'à ce que le DOM soit compilé.
- Nettoyage :
- Quittez la session WebDriver pour libérer les ressources.
Exécution des tests
-
Démarrez le serveur webforJ :
mvn jetty:run -
Exécutez les cas de test :
mvn test
Comportement attendu
- En visitant
http://localhost:<port>/, la pageHelloWorldViewse charge. - L'élément
dwc-buttonavec le texteSay Hellodoit être présent.