В современном веб-разработке помимо функционального тестирования важное место занимает визуальное тестирование интерфейсов. Даже если приложение работает корректно с точки зрения логики, изменения в CSS или структуре DOM могут нарушить пользовательский опыт. Инструмент Percy интегрируется с Cypress и позволяет автоматически фиксировать визуальные изменения на страницах приложения.
Percy — это сервис для визуального тестирования, который фиксирует скриншоты страниц и сравнивает их с эталонными версиями. В связке с Cypress он работает как расширение, позволяя создавать визуальные тесты в рамках привычной Cypress-среды.
npm install --save-dev @percy/cypress
cypress/support/commands.js добавляется:import '@percy/cypress';
export PERCY_TOKEN=<your_percy_token>
После этого команда cypress run совместно с Percy сможет
фиксировать визуальные изменения.
Визуальный тест в Cypress с Percy строится вокруг привычной схемы
describe и it. Основное отличие —
использование команды cy.percySnapshot() для снятия
скриншотов:
describe('Визуальное тестирование страницы', () => {
it('Главная страница без изменений', () => {
cy.visit('https://example.com');
cy.percySnapshot('Главная страница');
});
});
Ключевые моменты:
cy.visit() загружает страницу приложения.cy.percySnapshot() делает снимок страницы и отправляет
его на сервер Percy.'Главная страница') используется как
идентификатор снимка в интерфейсе Percy.Percy автоматически сравнивает новые скриншоты с предыдущими и отмечает различия. Это позволяет быстро выявлять непреднамеренные визуальные регрессии.
Percy позволяет детально управлять тем, что именно фиксируется:
cy.percySnapshot('Страница с игнорированием динамических блоков', {
widths: [375, 1280], // разные размеры экрана
percyCSS: '.dynamic-banner { visibility: hidden; }'
});
cy.percySnapshot('Адаптивная страница', { widths: [320, 768, 1024] });
cy.get('.header').percySnapshot('Хедер сайта');
Интеграция с CI/CD: Percy хорошо сочетается с Jenkins, GitHub Actions, GitLab CI. Каждый pull request может автоматически проверять визуальные изменения.
Сравнение версий: интерфейс Percy позволяет просматривать все изменения между ветками, отмечая новые различия зеленым или красным.
Оптимизация скорости тестов: можно снимать скриншоты только для критичных страниц или компонентов, чтобы не увеличивать время CI.
Использование Percy совместно с Cypress позволяет поднять качество веб-приложения, гарантируя, что любые изменения в интерфейсе будут выявлены на ранней стадии. Визуальные тесты становятся полноценной частью процесса контроля качества наряду с функциональными и интеграционными проверками.