No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Cypress Avanzado

Curso de Cypress Avanzado

Javier Fuentes Mora

Javier Fuentes Mora

Visual testing

14/29
Recursos

¿Cómo implementar pruebas visuales con Cypress?

Las pruebas visuales son un componente crucial en el desarrollo de interfaces de usuario. Detectar cambios sutiles, como modificaciones en texto, márgenes o tamaños, puede ser complicado manualmente. Por ello, el automatizar esta tarea con herramientas como Cypress maximiza la eficiencia y la precisión. Aunque Cypress no posee una función nativa para realizar visual testing, el uso de plugins expande sus capacidades. A continuación, te explicaré cómo instalar un plugin para pruebas visuales en Cypress y configurarlo adecuadamente.

¿Cómo instalar y configurar un plugin de pruebas visuales?

Para comenzar con visual testing en Cypress, es esencial instalar un plugin especializado. Te guiaré a través del proceso de instalación y configuración del mismo.

  1. Instalación del plugin:

    • Dirígete a tu terminal e instala la librería necesaria. El comando clave es:
    npm install --save-dev cypress-image-snapshot
    
    • En ocasiones, pueden surgir alertas relacionadas con la versión de Cypress. Esto puede deberse a que Cypress 10 es relativamente nuevo. Puedes solucionarlo usando la opción --legacy-peer-deps.
  2. Configuración en Cypress:

    • Importa el plugin en tu archivo principal de configuración de Cypress. Es fundamental asegurarse de importar addMatchImageSnapshotPlugin desde cypress-image-snapshot/plugin.
    const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin');
    
    module.exports = (on, config) => {
      addMatchImageSnapshotPlugin(on, config);
    };
    
    • Personaliza los comandos para usar características avanzadas de ES6 al importar la librería, y configura las propiedades para el objeto, tales como failureThreshold y failureThresholdType.
    import { addMatchImageSnapshotCommand } from 'cypress-image-snapshot/command';
    
    addMatchImageSnapshotCommand({
      failureThreshold: 0.03, // tolerancia del 0.3%
      failureThresholdType: 'percent', // puede ser 'pixel' o 'percent'
      capture: 'viewport', // 'viewport' o 'fullPage'
    });
    

¿Cómo crear y ejecutar pruebas visuales?

La creación de pruebas visuales implica capturar snapshots y compararlos para identificar diferencias visuales.

  • Escribir una prueba de regresión visual:

    • De forma sencilla, visita tu página y define ciertos comandos para capturar snapshots.
    describe('Prueba de Regresión Visual', () => {
      it('Mi primera prueba visual', () => {
        cy.visit('TU_URL');
        cy.matchImageSnapshot();
      });
    });
    
  • Estrategias para snapshots fallidos:

    • En caso de detectar errores, puedes actualizar manualmente los snapshots o hacerlo automáticamente al configurar un nuevo script en tu package.json.
    "scripts": {
      "updateSnapshot": "cypress open --env updateSnapshots=true"
    }
    

¿Cómo manejar elementos específicos en visual testing?

En ocasiones, quizás necesites realizar pruebas visuales sobre elementos individuales en lugar de capturar toda la página.

  • Capturar un solo elemento:

    • Selecciona un elemento específico dentro del DOM y almacena su snapshot.
    cy.get('selector_de_elemento').matchImageSnapshot('ElementoEspecífico');
    
  • Consejos para optimizar tus pruebas:

    • Utiliza el tiempo de espera justo antes de capturar una imagen para asegurar que todos los elementos hayan cargado correctamente.
    • Mantén actualizado el entorno, tanto en código como en herramientas, para evitar inconsistencias que puedan afectar los resultados.

La implementación de visual testing con Cypress es una herramienta poderosa para asegurar la calidad y la integridad visual de tus aplicaciones. Te invito a seguir explorando y experimentando con estas herramientas para optimizar tu flujo de trabajo y mejorar la confiabilidad de tus desarrollos.

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

npm i -D cypress-image-snapshot --legacy-peer-deps

const {
addMatchImageSnapshotPlugin,
} = require(“cypress-image-snapshot/plugin”);

addMatchImageSnapshotPlugin(on, config);

```js describe("Visual testing", ()=>{ it('Mi prueba de regresion', ()=>{ cy.visit('/'); cy.wait(4000); cy.scrollTo("bottom"); cy.matchImageSnapshot(); }); it("Segunda prueba a un solo elemento", ()=>{ cy.visit('/'); cy.contains("Bulbasaur").should("be.visible").matchImageSnapshot(); }); }); ```describe("Visual testing", ()=>{         it('Mi prueba de regresion', ()=>{            cy.visit('/');             cy.wait(4000);            cy.scrollTo("bottom");            cy.matchImageSnapshot();        });         it("Segunda prueba a un solo elemento", ()=>{            cy.visit('/');            cy.contains("Bulbasaur").should("be.visible").matchImageSnapshot();            });});