En aquest tema, explorarem com utilitzar fixtures i hooks en Playwright per millorar l'organització i l'eficiència de les teves proves automatitzades. Els fixtures i hooks són eines poderoses que permeten preparar l'entorn de prova, gestionar l'estat compartit i executar accions abans o després de les proves.

Què són els Fixtures?

Els fixtures són objectes o dades que es configuren abans de l'execució de les proves i es destrueixen després. Són útils per preparar l'entorn de prova amb dades inicials o per establir configuracions necessàries.

Avantatges dels Fixtures:

  • Reutilització de Codi: Permeten definir configuracions comunes que es poden reutilitzar en múltiples proves.
  • Mantenibilitat: Faciliten la gestió de l'estat compartit entre proves.
  • Eficiència: Redueixen la duplicació de codi i milloren la claredat de les proves.

Què són els Hooks?

Els hooks són funcions que s'executen en moments específics del cicle de vida de les proves. Els més comuns són beforeAll, beforeEach, afterAll i afterEach.

Tipus de Hooks:

  • beforeAll: S'executa una vegada abans de totes les proves d'un bloc.
  • beforeEach: S'executa abans de cada prova individual.
  • afterEach: S'executa després de cada prova individual.
  • afterAll: S'executa una vegada després de totes les proves d'un bloc.

Exemple Pràctic

A continuació, veurem un exemple pràctic de com utilitzar fixtures i hooks en Playwright amb TypeScript.

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

// Definim un fixture per a una pàgina de navegador
test.beforeAll(async ({ browser }) => {
  console.log('Abans de totes les proves');
});

test.beforeEach(async ({ page }) => {
  console.log('Abans de cada prova');
  await page.goto('https://example.com');
});

test('Prova de títol de pàgina', async ({ page }) => {
  const title = await page.title();
  expect(title).toBe('Example Domain');
});

test.afterEach(async ({ page }) => {
  console.log('Després de cada prova');
  // Aquí podríem netejar dades o restablir l'estat
});

test.afterAll(async () => {
  console.log('Després de totes les proves');
});

Explicació del Codi:

  • beforeAll: S'executa abans de començar qualsevol prova, ideal per a configuracions globals.
  • beforeEach: Navega a una URL específica abans de cada prova, assegurant que cada prova comenci des d'un estat conegut.
  • afterEach: Pot utilitzar-se per netejar o restablir l'estat després de cada prova.
  • afterAll: S'executa després de totes les proves, útil per tancar connexions o alliberar recursos.

Exercici Pràctic

Exercici: Crea un script de Playwright que utilitzi fixtures i hooks per provar una pàgina web de registre d'usuari. Assegura't de:

  • Utilitzar beforeEach per navegar a la pàgina de registre.
  • Utilitzar afterEach per restablir el formulari de registre.
  • Verificar que el registre es realitza correctament.

Solució:

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

test.beforeEach(async ({ page }) => {
  await page.goto('https://example.com/register');
});

test('Prova de registre d\'usuari', async ({ page }) => {
  await page.fill('#username', 'nou_usuari');
  await page.fill('#password', 'contrasenya123');
  await page.click('#register-button');
  const successMessage = await page.textContent('.success');
  expect(successMessage).toBe('Registre complet!');
});

test.afterEach(async ({ page }) => {
  await page.evaluate(() => {
    document.querySelector('#register-form').reset();
  });
});

Conclusió

Els fixtures i hooks són eines essencials per a l'automatització de proves amb Playwright. Faciliten la configuració i neteja de l'entorn de prova, millorant l'eficiència i mantenibilitat del codi de prova. Practicar amb aquests conceptes t'ajudarà a escriure proves més robustes i organitzades. En el següent tema, explorarem l'execució paral·lela de proves per optimitzar el temps de prova.

Dramaturg amb TypeScript: De Principiant a Avançat

Mòdul 1: Introducció a Playwright i TypeScript

Mòdul 2: Començant amb Playwright

Mòdul 3: Fonaments de Playwright i TypeScript

Mòdul 4: Funcions Avançades de Playwright

Mòdul 5: Estratègies d'Automatització de Proves

Mòdul 6: Tècniques Avançades de TypeScript

Mòdul 7: Aplicacions Reals de Playwright

Mòdul 8: Conclusió del Curs i Propers Passos

© Copyright 2024. Tots els drets reservats