En aquest tema, aprendrem com organitzar les proves de manera eficient utilitzant Playwright i TypeScript. Una bona organització de les proves és essencial per mantenir un projecte escalable i fàcil de mantenir. Explorarem com estructurar les proves, crear suites de proves i utilitzar bones pràctiques per assegurar-nos que el nostre conjunt de proves sigui robust i fàcil de gestionar.

Conceptes Clau

  1. Estructura de Proves:

    • Organitzar les proves en fitxers i directoris lògics.
    • Utilitzar convencions de nomenclatura clares per als fitxers de prova.
  2. Suites de Proves:

    • Agrupar proves relacionades en suites per facilitar la seva execució i manteniment.
    • Utilitzar funcions de configuració i desconfiguració per preparar l'entorn de prova.
  3. Bones Pràctiques:

    • Escriure proves independents i idempotents.
    • Evitar dependències entre proves per assegurar la seva fiabilitat.

Estructura de Proves

Organització de Fitxers i Directoris

És important mantenir una estructura clara i coherent per als fitxers de prova. Una estructura recomanada podria ser:

/tests
  /unit
    example.test.ts
  /integration
    user-flow.test.ts
  /e2e
    login.test.ts
  • Unit Tests: Proves que verifiquen la funcionalitat de components individuals.
  • Integration Tests: Proves que verifiquen la interacció entre múltiples components.
  • End-to-End (E2E) Tests: Proves que simulen el comportament de l'usuari en l'aplicació completa.

Convencions de Nomenclatura

Utilitza noms descriptius per als fitxers de prova que reflecteixin el que estan provant. Per exemple, login.test.ts per a proves relacionades amb el procés d'inici de sessió.

Creació de Suites de Proves

Playwright permet agrupar proves en suites utilitzant la funció describe. Això ajuda a organitzar proves relacionades i aplicar configuracions comunes.

Exemple de Suite de Proves

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

test.describe('Suite de Proves de Login', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto('https://example.com/login');
  });

  test('Prova d\'inici de sessió amb credencials vàlides', async ({ page }) => {
    await page.fill('#username', 'usuari');
    await page.fill('#password', 'contrasenya');
    await page.click('button[type="submit"]');
    await expect(page).toHaveURL('https://example.com/dashboard');
  });

  test('Prova d\'inici de sessió amb credencials invàlides', async ({ page }) => {
    await page.fill('#username', 'usuari');
    await page.fill('#password', 'incorrecte');
    await page.click('button[type="submit"]');
    await expect(page.locator('.error-message')).toHaveText('Credencials incorrectes');
  });
});

Explicació del Codi

  • describe: Agrupa les proves en una suite. En aquest cas, totes les proves relacionades amb el procés de login.
  • beforeEach: Executa una funció abans de cada prova dins de la suite. Aquí, s'utilitza per navegar a la pàgina de login abans de cada prova.
  • Proves individuals: Cada prova verifica un cas específic del procés de login.

Bones Pràctiques

  • Proves Independents: Cada prova ha de poder executar-se de manera independent sense dependre de l'estat deixat per altres proves.
  • Idempotència: Les proves han de produir el mateix resultat cada vegada que s'executen amb les mateixes dades d'entrada.
  • Configuració i Desconfiguració: Utilitza beforeEach i afterEach per preparar i netejar l'entorn de prova.

Exercici Pràctic

Exercici: Crea una suite de proves per verificar el procés de registre d'un usuari en una aplicació web. Assegura't d'incloure proves per a casos d'èxit i error.

Solució

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

test.describe('Suite de Proves de Registre', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto('https://example.com/register');
  });

  test('Prova de registre amb dades vàlides', async ({ page }) => {
    await page.fill('#email', '[email protected]');
    await page.fill('#password', 'contrasenyaSegura');
    await page.click('button[type="submit"]');
    await expect(page).toHaveURL('https://example.com/welcome');
  });

  test('Prova de registre amb email ja registrat', async ({ page }) => {
    await page.fill('#email', '[email protected]');
    await page.fill('#password', 'contrasenyaSegura');
    await page.click('button[type="submit"]');
    await expect(page.locator('.error-message')).toHaveText('Email ja registrat');
  });
});

Conclusió

En aquesta secció, hem après com organitzar les proves i suites de proves utilitzant Playwright i TypeScript. Hem vist com estructurar els fitxers de prova, crear suites de proves i aplicar bones pràctiques per assegurar la qualitat i mantenibilitat del nostre conjunt de proves. Aquestes habilitats són fonamentals per a qualsevol projecte d'automatització de proves. En el següent tema, explorarem com utilitzar fixtures i hooks per millorar encara més la nostra estratègia de proves.

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