Applitools предоставляет мощные инструменты для автоматизации визуального тестирования веб-приложений, позволяя выявлять изменения интерфейса, которые невозможно отследить с помощью обычных функциональных тестов. Cypress, будучи популярным инструментом для энд-то-энд тестирования на JavaScript, может быть интегрирован с Applitools через специальный SDK, обеспечивая синхронизацию функциональных и визуальных тестов в единой цепочке.
Для начала необходимо установить пакет
@applitools/eyes-cypress:
npm install @applitools/eyes-cypress --save-dev
После установки выполняется конфигурация через файл
cypress/plugins/index.js:
module.exports = (on, config) => {
require('@applitools/eyes-cypress')(module);
};
Далее создается файл конфигурации applitools.config.js,
где задаются ключевые параметры: API-ключ, базовый URL, размеры окон для
тестирования и режим работы:
module.exports = {
apiKey: process.env.APPLITOOLS_API_KEY,
appName: 'My Web App',
batchName: 'Cypress Visual Tests',
browser: [
{ width: 1024, height: 768, name: 'chrome' },
{ width: 800, height: 600, name: 'firefox' }
]
};
Использование переменной окружения для API-ключа повышает безопасность и позволяет запускать тесты на CI/CD без раскрытия секретов.
Applitools расширяет Cypress собственными командами для работы с визуальными проверками:
cy.eyesOpen() — инициализация визуального теста.
Параметры включают имя приложения, имя теста и опционально размеры
окна.cy.eyesCheckWindow() — фиксирует текущее состояние окна
для сравнения с эталонным изображением.cy.eyesClose() — завершает визуальный тест и сохраняет
результаты на сервере Applitools.Пример использования:
describe('Визуальное тестирование главной страницы', () => {
it('Проверка корректности UI', () => {
cy.eyesOpen({ appName: 'My Web App', testName: 'Главная страница' });
cy.visit('/');
cy.eyesCheckWindow('Главная страница - начальное состояние');
cy.get('button#login').click();
cy.eyesCheckWindow('После клика на кнопку Вход');
cy.eyesClose();
});
});
cy.eyesCheckWindow({
tag: 'Форма логина',
target: 'region',
selector: '#login-form'
});
ignoreRegions:cy.eyesCheckWindow({
ignoreRegions: ['.ad-banner', '.timestamp']
});
Strict, Layout,
Content и Exact. Выбор зависит от требований к
точности и допустимости изменений интерфейса.cy.eyesCheckWindow({
tag: 'Главная страница',
matchLevel: 'Layout'
});
applitools.config.js позволяет
запускать визуальные тесты параллельно в разных условиях, обеспечивая
кросс-браузерное покрытие.Applitools отлично интегрируется с Jenkins, GitHub Actions, GitLab CI
и другими системами. Для этого достаточно экспортировать переменную
APPLITOOLS_API_KEY в окружении CI и запускать Cypress с
командой:
npx cypress run
Все визуальные результаты будут автоматически загружены в Applitools Dashboard, где можно просмотреть изменения и утвердить или отклонить их.
ignoreRegions и
floatingRegions для элементов с динамическим
содержимым.Applitools и Cypress вместе создают мощную платформу для комплексного тестирования: Cypress обеспечивает надежное покрытие функциональности, а Applitools — точное визуальное сравнение, что минимизирует риск регрессий в пользовательском интерфейсе.