Passer au contenu principal

Testing with Selenium

Ouvrir dans ChatGPT

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.

Bases de l'application

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 :

pom.xml
<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.

HelloWorldViewTest.java
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

  1. Initialiser WebDriver :

    • Utilisez WebDriverManager pour gérer automatiquement l'exécutable du driver pour le navigateur.
  2. 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.
  3. 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.
info

É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é.

  1. Nettoyage :
    • Quittez la session WebDriver pour libérer les ressources.

Exécution des tests

  1. Démarrez le serveur webforJ :

    mvn jetty:run
  2. Exécutez les cas de test :

    mvn test

Comportement attendu

  • En visitant http://localhost:<port>/, la page HelloWorldView se charge.
  • L'élément dwc-button avec le texte Say Hello doit être présent.