En este módulo, exploraremos cómo los fixtures y hooks pueden mejorar la organización y eficiencia de tus pruebas automatizadas con Playwright. Estos conceptos son fundamentales para crear pruebas más robustas y mantenibles.

¿Qué son los Fixtures?

Los fixtures son configuraciones previas que se ejecutan antes de tus pruebas. Permiten preparar el entorno de prueba, como inicializar bases de datos, configurar navegadores o establecer datos de prueba. Los fixtures ayudan a garantizar que cada prueba comience con un estado conocido y controlado.

Ventajas de Usar Fixtures

  • Reutilización de Código: Los fixtures permiten definir configuraciones comunes que pueden ser reutilizadas en múltiples pruebas.
  • Consistencia: Aseguran que cada prueba comience con el mismo estado inicial.
  • Mantenimiento: Facilitan el mantenimiento del código de prueba al centralizar la configuración.

¿Qué son los Hooks?

Los hooks son funciones que se ejecutan en momentos específicos del ciclo de vida de las pruebas. Playwright proporciona varios hooks que puedes utilizar para ejecutar código antes o después de tus pruebas.

Tipos de Hooks en Playwright

  1. beforeAll: Se ejecuta una vez antes de todas las pruebas en un archivo de prueba.
  2. afterAll: Se ejecuta una vez después de todas las pruebas en un archivo de prueba.
  3. beforeEach: Se ejecuta antes de cada prueba individual.
  4. afterEach: Se ejecuta después de cada prueba individual.

Implementación de Fixtures y Hooks

Veamos cómo implementar fixtures y hooks en un script de Playwright.

Ejemplo de Código

import { test, expect } from '@playwright/test';

// Fixture para inicializar el navegador
test.beforeAll(async ({ browser }) => {
  console.log('Configurando el navegador para todas las pruebas');
  // Configuración global del navegador
});

// Hook beforeEach para preparar el estado antes de cada prueba
test.beforeEach(async ({ page }) => {
  console.log('Navegando a la página de inicio antes de cada prueba');
  await page.goto('https://ejemplo.com');
});

// Hook afterEach para limpiar después de cada prueba
test.afterEach(async ({ page }) => {
  console.log('Limpiando cookies después de cada prueba');
  await page.context().clearCookies();
});

// Hook afterAll para cerrar recursos
test.afterAll(async () => {
  console.log('Cerrando recursos después de todas las pruebas');
  // Cerrar conexiones, liberar recursos, etc.
});

// Ejemplo de prueba
test('Ejemplo de prueba', async ({ page }) => {
  const title = await page.title();
  expect(title).toBe('Página de Ejemplo');
});

Explicación del Código

  • beforeAll: Configura el navegador antes de que se ejecuten todas las pruebas.
  • beforeEach: Navega a la página de inicio antes de cada prueba para asegurar un estado inicial consistente.
  • afterEach: Limpia las cookies después de cada prueba para evitar interferencias entre pruebas.
  • afterAll: Cierra recursos y conexiones al finalizar todas las pruebas.

Ejercicio Práctico

Objetivo: Implementar un fixture que inicialice una base de datos de prueba y un hook que limpie los datos después de cada prueba.

Instrucciones

  1. Crea un fixture que conecte a una base de datos de prueba antes de todas las pruebas.
  2. Usa un hook afterEach para limpiar los datos de la base de datos después de cada prueba.

Solución

import { test } from '@playwright/test';

// Simulación de conexión a base de datos
let database: any;

test.beforeAll(async () => {
  console.log('Conectando a la base de datos de prueba');
  database = {}; // Simulación de conexión
});

test.afterEach(async () => {
  console.log('Limpiando datos de la base de datos');
  database = {}; // Simulación de limpieza
});

test('Prueba de base de datos', async () => {
  // Simulación de operación en la base de datos
  database['user'] = { name: 'John Doe' };
  console.log('Datos de usuario:', database['user']);
});

Conclusión

El uso de fixtures y hooks en Playwright es esencial para mantener tus pruebas organizadas y eficientes. Al implementar estas herramientas, puedes asegurar que tus pruebas se ejecuten en un entorno controlado y predecible, lo que facilita la detección de errores y el mantenimiento del código de prueba. En el siguiente módulo, exploraremos cómo ejecutar pruebas en paralelo para mejorar la eficiencia de tus suites de pruebas.

Playwright con TypeScript: De Principiante a Avanzado

Módulo 1: Introducción a Playwright y TypeScript

Módulo 2: Comenzando con Playwright

Módulo 3: Fundamentos de Playwright y TypeScript

Módulo 4: Funciones Avanzadas de Playwright

Módulo 5: Estrategias de Automatización de Pruebas

Módulo 6: Técnicas Avanzadas de TypeScript

Módulo 7: Aplicaciones Reales de Playwright

Módulo 8: Conclusión del Curso y Próximos Pasos

© Copyright 2024. Todos los derechos reservados