Cypress предоставляет встроенные возможности для управления размером окна браузера, что критически важно при тестировании адаптивного дизайна и проверки поведения веб-приложений на разных устройствах. Управление размерами экрана позволяет имитировать мобильные, планшетные и десктопные устройства без необходимости использования реальных физических девайсов.
cy.viewport()Метод cy.viewport(width, height) изменяет размер окна
браузера на указанные ширину и высоту. Он принимает два параметра:
ширину и высоту в пикселях.
cy.viewport(1280, 720); // Настройка окна на 1280x720
cy.visit('/'); // Загрузка страницы после установки размеров
Особенности:
cy.viewport() перед cy.visit().Cypress содержит набор предустановленных устройств с их стандартными
размерами экрана и ориентациями. Метод cy.viewport()
поддерживает использование названий устройств вместо числовых
значений:
cy.viewport('iphone-6'); // 375x667
cy.viewport('ipad-2', 'landscape'); // 1024x768 в альбомной ориентации
cy.viewport('macbook-15'); // 1440x900
Основные предустановленные устройства:
| Устройство | Размер экрана (px) | Ориентация |
|---|---|---|
| iphone-3 | 320x480 | portrait |
| iphone-4 | 320x480 | portrait |
| iphone-5 | 320x568 | portrait |
| iphone-6/7/8 | 375x667 | portrait |
| iphone-6/7/8 Plus | 414x736 | portrait |
| ipad-2 | 768x1024 | portrait |
| ipad-mini | 768x1024 | portrait |
| ipad-2/mini | 1024x768 | landscape |
| macbook-11 | 1366x768 | landscape |
| macbook-13 | 1280x800 | landscape |
| macbook-15 | 1440x900 | landscape |
| macbook-16 | 1536x960 | landscape |
Ориентации:
portrait – вертикальная ориентация.landscape – горизонтальная ориентация.portrait.Предустановленные размеры экранов позволяют проверять корректность отображения элементов интерфейса при различных разрешениях. Обычно проверяются:
flex,
grid).Пример последовательного теста для разных устройств:
const devices = ['iphone-6', 'ipad-2', 'macbook-15'];
devices.forEach((device) => {
it(`Проверка адаптивности на ${device}`, () => {
cy.viewport(device);
cy.visit('/');
cy.get('.navbar').should('be.visible');
cy.get('.mobile-menu').should(device.includes('iphone') ? 'be.visible' : 'not.exist');
});
});
Иногда предустановленных размеров недостаточно, и требуется тестирование конкретных нестандартных разрешений. Для этого используется обычный вызов с пикселями:
cy.viewport(1024, 500); // Проверка нестандартной ширины окна
cy.visit('/');
cy.get('.hero-banner').should('be.visible');
Можно комбинировать с параметром devicePixelRatio в
конфигурации браузера, если требуется точная симуляция
ретина-дисплеев.
Cypress позволяет динамически изменять размеры экрана в рамках одного
теста. Это удобно для проверки адаптивного поведения без повторного
запуска cy.visit():
cy.viewport(1280, 720);
cy.get('.sidebar').should('be.visible');
cy.viewport('iphone-6');
cy.get('.sidebar').should('not.exist');
cy.get('.mobile-menu').should('be.visible');
Такой подход экономит время и позволяет проводить последовательные проверки на разных разрешениях в одном тесте.
Использование предустановленных размеров экранов в Cypress обеспечивает эффективное и стабильное тестирование адаптивного интерфейса. Такой подход позволяет выявлять ошибки верстки и функциональности, которые проявляются только на конкретных устройствах или при определенных разрешениях экрана.