Les proves visuals són una part essencial de l'automatització de proves, ja que permeten verificar que la interfície d'usuari d'una aplicació es mostra correctament en diferents dispositius i navegadors. En aquest tema, aprendrem com utilitzar Playwright per realitzar proves visuals efectives.

Què són les Proves Visuals?

Les proves visuals consisteixen en comparar la representació visual d'una pàgina web o aplicació amb una imatge de referència per detectar canvis inesperats. Aquestes proves són útils per assegurar-se que els canvis en el codi no afectin negativament l'aparença de l'aplicació.

Avantatges de les Proves Visuals

  • Detecció de regressions visuals: Identifica canvis no desitjats en la interfície d'usuari.
  • Compatibilitat entre navegadors: Assegura que l'aplicació es veu correctament en diferents navegadors.
  • Millora de la qualitat del producte: Ajuda a mantenir una experiència d'usuari consistent.

Configuració de Proves Visuals amb Playwright

Instal·lació de Playwright i Llibreries Necessàries

Abans de començar, assegura't que Playwright està instal·lat en el teu projecte. Si no ho està, pots instal·lar-lo amb el següent comandament:

npm install @playwright/test

També necessitaràs una llibreria per a la comparació d'imatges, com pixelmatch o resemblejs. Instal·lem pixelmatch:

npm install pixelmatch

Creant una Prova Visual Bàsica

A continuació, crearem una prova visual bàsica que captura una captura de pantalla d'una pàgina i la compara amb una imatge de referència.

import { test, expect } from '@playwright/test';
import fs from 'fs';
import pixelmatch from 'pixelmatch';
import { PNG } from 'pngjs';

test('Prova visual de la pàgina d\'inici', async ({ page }) => {
  // Navega a la pàgina
  await page.goto('https://example.com');

  // Captura una captura de pantalla
  const screenshot = await page.screenshot();

  // Llegeix la imatge de referència
  const referenceImage = fs.readFileSync('path/to/reference-image.png');
  const referencePNG = PNG.sync.read(referenceImage);

  // Compara les imatges
  const { width, height } = referencePNG;
  const diff = new PNG({ width, height });
  const numDiffPixels = pixelmatch(
    referencePNG.data,
    screenshot,
    diff.data,
    width,
    height,
    { threshold: 0.1 }
  );

  // Guarda la imatge de diferències si hi ha canvis
  if (numDiffPixels > 0) {
    fs.writeFileSync('path/to/diff-image.png', PNG.sync.write(diff));
  }

  // Assert que no hi ha diferències
  expect(numDiffPixels).toBe(0);
});

Explicació del Codi

  • Captura de pantalla: Utilitzem page.screenshot() per capturar l'estat actual de la pàgina.
  • Comparació d'imatges: pixelmatch s'utilitza per comparar la captura de pantalla amb la imatge de referència.
  • Gestió de diferències: Si es detecten diferències, es genera una imatge de diferències per a la revisió manual.

Exercici Pràctic

Objectiu: Implementar una prova visual per a una pàgina web de la teva elecció.

  1. Selecciona una pàgina web que vulguis provar.
  2. Captura una imatge de referència manualment i desa-la en el teu projecte.
  3. Escriu una prova visual utilitzant el codi d'exemple anterior.
  4. Executa la prova i revisa els resultats.

Solució de l'Exercici

La solució dependrà de la pàgina web seleccionada. Assegura't que la imatge de referència estigui actualitzada i que les diferències detectades siguin revisades per assegurar que són canvis desitjats.

Errors Comuns i Consells

  • Diferències de píxels menors: Ajusta el llindar de pixelmatch si detectes diferències menors no significatives.
  • Resolució de pantalla: Assegura't que les captures de pantalla es realitzen amb la mateixa resolució que la imatge de referència.
  • Canvis dinàmics: Evita capturar elements dinàmics que poden canviar amb cada càrrega de pàgina.

Conclusió

Les proves visuals amb Playwright són una eina poderosa per assegurar la qualitat visual de les aplicacions web. Amb la configuració adequada i l'ús de llibreries de comparació d'imatges, pots detectar i corregir regressions visuals de manera eficient. En el següent tema, explorarem les proves de rendiment amb Playwright.

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