Blog

Testing E2E con Playwright: automatiza workflows sin fragilidad

Cómo escribir tests que navegan por la UI sin ser frágiles a cada cambio visual.

#testing#e2e#playwright#calidad#frontend

E2E testing automatiza lo que hace un usuario: clickea botones, rellena formularios, verifica resultados. Playwright lo hace sin drama.

Selectores robustos: evita tests que se rompen

El error más común es testear contra selectores frágiles: .button-1, div:nth-child(3). Si cambias estructura HTML, se rompe.

La solución es selectores robustos: busca por atributos estables como data-testid, aria-label, o contenido visible.

  • data-testid: atributo específico para tests.
  • aria-label: semánticamente correcto y testeable.
  • text content: si el botón dice "Guardar", busca por eso.

Esperas inteligentes: no uses sleep()

Nunca uses sleep(2000) esperando que algo cargue. Espera explícitamente el elemento: page.waitForSelector(), page.locator().toBeVisible().

Sleep hace tests lentos e impredecibles. Esperas explícitas son rápidas y confiables.

  1. Espera el elemento a aparecer.
  2. Espera que sea visible.
  3. Espera que sea clickeable.
  4. Después interactúa.

Page objects: abstrae UI en lógica de negocio

En lugar de script que hace click en botón 1, luego 2, luego 3, abstrae en Page Objects: login(), fillForm(), verifySuccess().

Eso separa cómo se clickea (selectores) de qué se hace (lógica de test). Si UI cambia, solo cambias Page Object.

  • Page Object por pantalla o flujo.
  • Métodos que representan acciones: login(), submit().
  • Selectores centralizados en Page Object.

Datos de test y base de datos limpia

Cada test debería empezar con datos predecibles. Usa fixtures o beforeEach() para resetear base de datos.

Así cada test es independiente: no depende de estado de test anterior.

Un E2E test bueno es uno que pasa igual corrido solo, corrido primero o corrido último. Eso es independencia.

Ejecución paralela para velocidad

Playwright permite correr múltiples tests en paralelo. Si tienes 100 tests que toman 30 minutos sequencial, con paralelismo toman 3 minutos.

La clave es que tests sean independientes (cada uno usa datos propios, no interfieren).

04 / Contacto

¿Hablamos de tu próximo sistema?

Cuéntame el problema que quieres resolver. Respondo en un día laborable y planteo una ruta de acción en el primer mensaje.

Iniciar conversación →