Testing with Selenium
Cette documentation décrit le processus de test des applications webforJ à l'aide de Selenium, en se concentrant spécifiquement sur le HelloWorldView
de
l'webforj-archetype-hello-world
.
Pour en savoir plus sur l'webforj-archetype-hello-world
, consultez la section Introduction aux concepts de base.
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 bindings 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 montre 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 du texte du bouton !");
}
}
Étapes clés
-
Initialiser WebDriver :
- Utilisez
WebDriverManager
pour 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 World
attendu.
- 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 à une seule page, 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 que le DOM soit compilé.
- Teardown :
- 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 pageHelloWorldView
se charge. - L'élément
dwc-button
avec le texteSay Hello
doit être présent.