Home > Article > Web Front-end > Visual Regression Testing with Cypress and Percy: A Comprehensive Guide
Visual regression testing is an essential part of ensuring that your web application maintains its visual integrity over time. As applications evolve, unintended visual changes can occur, potentially impacting user experience. Combining Cypress with Percy, a powerful visual testing tool, allows you to automate visual regression testing seamlessly. In this post, we’ll explore how to set up and use Cypress and Percy to catch visual discrepancies in your web applications.
To get started with visual regression testing using Cypress and Percy, follow these steps:
Step 1: Install Cypress and Percy
First, ensure you have Cypress installed in your project. If not, you can install it using the following command:
npm install cypress --save-dev
Next, install the Percy CLI and the @percy/cypress package:
npm install --save-dev @percy/cli @percy/cypress
Step 2: Configure Percy
Create a Percy project on the Percy dashboard. Once created, you’ll get a Percy project token. Set this token as an environment variable:
export PERCY_TOKEN=<your_percy_project_token>
Step 3: Integrate Percy with Cypress
In your cypress/support/index.js file, add the following line to import Percy:
import '@percy/cypress';
This will add Percy commands to Cypress, allowing you to take visual snapshots during your tests.
Let’s write some visual regression tests using Cypress and Percy. We’ll start with a simple test to capture a visual snapshot of a web page.
Example: Capturing a Visual Snapshot
Create a new test file in the cypress/e2e directory, for example, visual-regression.spec.js, and add the following code:
describe('Visual Regression Testing with Cypress and Percy', () => { beforeEach(() => { cy.visit('/'); }); it('should capture a visual snapshot of the homepage', () => { cy.percySnapshot('Homepage'); }); });
In this test:
Example: Testing a Specific Component
You can also capture visual snapshots of specific components or sections of a page. For instance, let’s capture a snapshot of a login form.
describe('Visual Regression Testing with Cypress and Percy', () => { beforeEach(() => { cy.visit('/login'); }); it('should capture a visual snapshot of the login form', () => { cy.get('.login-form').percySnapshot('Login Form'); }); });
In this test:
Capturing Snapshots in Different States
You can capture snapshots of your application in different states, such as after user interactions.
describe('Visual Regression Testing with Cypress and Percy', () => { beforeEach(() => { cy.visit('/login'); }); it('should capture visual snapshots in different states', () => { cy.get('input[name="username"]').type('testuser'); cy.get('input[name="password"]').type('password123'); cy.percySnapshot('Login Form - Filled'); cy.get('button[type="submit"]').click(); cy.percySnapshot('Dashboard'); }); });
In this test:
To run your visual regression tests, use the following command:
npx percy exec -- cypress run
This command runs Cypress tests with Percy, capturing and comparing visual snapshots.
After running the tests, Percy uploads the snapshots to the Percy dashboard, where you can review the visual changes. The dashboard highlights any differences between the new snapshots and the baseline images, allowing you to approve or reject changes.
Visual regression testing with Cypress and Percy is a powerful way to ensure your web application maintains its visual integrity over time. By integrating visual tests into your workflow, you can detect and address unintended visual changes early, providing a consistent and polished user experience. Follow the steps and best practices outlined in this guide to set up and leverage visual regression testing in your projects.
Happy testing!
The above is the detailed content of Visual Regression Testing with Cypress and Percy: A Comprehensive Guide. For more information, please follow other related articles on the PHP Chinese website!