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
- Què és Playwright?
- Configuració del Teu Entorn de Desenvolupament
- Introducció a TypeScript
- Sintaxi Bàsica de TypeScript
Mòdul 2: Començant amb Playwright
- Instal·lant Playwright
- Creant el Teu Primer Script de Playwright
- Comprenent els Conceptes Bàsics de Playwright
- Executant Proves de Playwright
Mòdul 3: Fonaments de Playwright i TypeScript
- Escrivint Proves en TypeScript
- Utilitzant Interfícies i Tipus de TypeScript
- Depurant Proves de Playwright
- Gestionant Codi Asíncron
Mòdul 4: Funcions Avançades de Playwright
- Treballant amb Selectors
- Gestionant Múltiples Pàgines i Frames
- Intercepció de Xarxa i Simulació
- Emulant Dispositius i Geolocalització
Mòdul 5: Estratègies d'Automatització de Proves
- Organitzant Proves i Suites de Proves
- Utilitzant Fixtures i Hooks
- Execució Paral·lela de Proves
- Integració Contínua amb Playwright
Mòdul 6: Tècniques Avançades de TypeScript
- Generics en TypeScript
- Tipus Avançats de TypeScript
- Decoradors de TypeScript
- Millors Pràctiques de TypeScript i Playwright
Mòdul 7: Aplicacions Reals de Playwright
- Proves de Cap a Cap amb Playwright
- Proves Visuals amb Playwright
- Proves de Rendiment amb Playwright
- Estudi de Cas: Implementant Playwright en un Projecte