07 - Pruebas E2E: Playwright
Una prueba E2E (*end-to-end*) ejecuta el sistema completo — interfaz, servidor y datos — como lo haría un usuario real: abre la aplicación en un navegador, interactúa con ella y comprueba el resultado visible. Playwright automatiza el navegador.
1. Qué se prueba
- Flujos críticos: login, registro, compra, alta de datos. Pocos y bien elegidos.
- La integración de todo: que la interfaz, la API y la base de datos funcionan juntas.
- Lo que el usuario ve: el resultado visible de la operación, no los detalles internos.
No se prueba cada regla de negocio con E2E: eso corresponde a las pruebas unitarias. Cada prueba E2E cubre un camino completo.
2. Playwright
Playwright controla un navegador real (Chromium, Firefox, WebKit) desde código Java:
public class LoginE2eTest {
@Test
void logsInAndShowsWelcome() {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
page.navigate("http://localhost:8080/login");
page.fill("#email", "ana@example.com");
page.fill("#password", "secret-password");
page.click("button[type=submit]");
assertThat(page.locator(".welcome"))
.hasText("Welcome, Ana");
}
}
}
| Elemento | Función |
|---|---|
Playwright.create() | Inicia el motor de navegadores |
Page | Representa la pestaña abierta |
fill, click | Interactúan con los elementos |
Locator | Localiza un elemento por selector |
assertThat | Comprueba el estado visible |
3. Espera automática
Playwright espera automáticamente a que los elementos estén listos antes de interactuar: no hace falta dormir entre acciones. Las comprobaciones reintentan hasta que la condición se cumple o se agota el tiempo de espera.
4. Buenas prácticas
- Datos controlados: cada prueba crea o usa datos conocidos; si toca la base de datos, se prepara y se limpia.
- Selectores estables: preferir atributos semánticos (
id, atributosdata-testid, roles accesibles) a clases de estilo, que cambian con el diseño. - Independientes: cada prueba puede ejecutarse sola y en cualquier orden.
- Pocas: la pirámide se apoya en las unitarias; E2E cubre los flujos que, si fallan, rompen el producto.
Las pruebas E2E son las más lentas y frágiles de la pirámide. Si cada cambio rompe diez pruebas de interfaz por un selector cambiado, el coste supera el beneficio: prioriza flujos críticos y selectores estables.