Testing with Selenium
Esta documentación describe el proceso para probar aplicaciones webforJ utilizando Selenium, centrándose específicamente en el HelloWorldView
del webforj-archetype-hello-world
.
Para obtener más información sobre el webforj-archetype-hello-world
, consulte la sección Introducción a la Información Básica de la App.
Requisitos Previos
Antes de ejecutar las pruebas de Selenium, asegúrese de lo siguiente:
- La aplicación webforJ está correctamente configurada y en funcionamiento en su servidor local.
- Ha instalado:
- Bindings de Java para Selenium.
- Un WebDriver compatible con su navegador.
- Maven para las dependencias del proyecto.
Configuración de Maven
Agregue las dependencias necesarias en su pom.xml
para Selenium y otras bibliotecas de prueba:
<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>
Ejemplo de prueba: HelloWorldView
El siguiente código demuestra una prueba basada en Selenium para el componente 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(), "¡Texto del botón no coincide!");
}
}
Pasos clave
-
Inicializar WebDriver:
- Use
WebDriverManager
para gestionar automáticamente el ejecutable del controlador para el navegador.
- Use
-
Configurar el Entorno de Prueba:
- Inicie el servidor de pruebas en
http://localhost:<port>/
. - Espere hasta que el título de la página coincida con el esperado
webforJ Hello World
.
- Inicie el servidor de pruebas en
-
Interactuar con Elementos:
- Ubique elementos utilizando
By.tagName
,By.id
, u otros localizadores de Selenium. - Verifique los comportamientos esperados, como clics en botones o cambios de texto.
- Ubique elementos utilizando
Debido a que webforJ produce una aplicación web de una sola página, Selenium no es consciente de la manipulación del DOM después de que se ha cargado la página inicial. Puede utilizar la API WebDriverWait de Selenium para esperar hasta que se haya compilado el DOM.
- Teardown:
- Cierre la sesión de WebDriver para liberar recursos.
Ejecución de pruebas
-
Inicie el servidor webforJ:
mvn jetty:run
-
Ejecute los casos de prueba:
mvn test
Comportamiento esperado
- Al visitar
http://localhost:<port>/
, se carga la páginaHelloWorldView
. - El elemento
dwc-button
con el textoSay Hello
debe estar presente.