Тестирование адаптивного дизайна направлено на проверку корректного отображения и функциональности веб-приложения на различных устройствах и разрешениях экрана. Cypress предоставляет инструменты для эмуляции разных размеров окна и поведения устройств, что делает его мощным инструментом для автоматизации таких проверок.
Cypress позволяет управлять размерами окна браузера через команду
cy.viewport(). Этот метод принимает предустановленные
значения устройств или конкретные размеры в пикселях:
cy.viewport(width, height)
cy.viewport('iphone-6')
cy.viewport('ipad-2', 'landscape')
width,
height) позволяют проверять точные размеры интерфейса.'iphone-6', 'ipad-2',
'macbook-15') эмулируют реальные устройства с учетом
соотношения сторон и разрешения экрана.'portrait' или
'landscape') позволяет проверять поведение интерфейса при
портретной и альбомной ориентации.Использование cy.viewport() рекомендуется в хуках
beforeEach для применения одинакового размера к каждому
тесту:
beforeEach(() => {
cy.viewport('ipad-2')
cy.visit('/dashboard')
})
После изменения размера окна важно проверить:
.hidden, .flex-col) в зависимости от
разрешения.Пример проверки видимости элементов при разных разрешениях:
it('Проверка видимости кнопок на мобильном', () => {
cy.viewport('iphone-6')
cy.get('.sidebar').should('not.be.visible')
cy.get('.mobile-menu-button').should('be.visible')
})
Эмуляция изменения размеров окна в рамках одного теста позволяет проверить корректность адаптивного поведения при динамическом изменении:
it('Меню корректно отображается при изменении размеров', () => {
cy.viewport(1200, 800)
cy.get('.sidebar').should('be.visible')
cy.viewport(768, 1024)
cy.get('.sidebar').should('not.be.visible')
cy.get('.mobile-menu-button').click()
cy.get('.sidebar').should('be.visible')
})
Cypress не предоставляет прямого API для медиа-запросов, но их работу можно проверить через проверку CSS-свойств элементов:
cy.viewport('iphone-6')
cy.get('.header').should('have.css', 'flex-direction', 'column')
Такой подход позволяет убедиться, что элементы реагируют на изменения ширины экрана в соответствии с заданными стилями.
Для упрощения тестирования разных разрешений удобно создавать пользовательские команды:
Cypress.Commands.add('testViewport', (device, callback) => {
cy.viewport(device)
callback()
})
it('Проверка адаптивности карточек', () => {
cy.testViewport('ipad-2', () => {
cy.get('.card').should('have.length', 3)
})
cy.testViewport('iphone-6', () => {
cy.get('.card').should('have.length', 1)
})
})
Это позволяет переиспользовать код и проверять интерфейс на множестве устройств без дублирования тестов.
Для проверки адаптивного дизайна в автоматических сборках используют разные размеры экрана в конфигурации Cypress:
{
"env": {
"viewports": ["iphone-6", "ipad-2", "macbook-15"]
}
}
Циклическая проверка всех размеров обеспечивает стабильность интерфейса при изменении кода.
cy.screenshot() и
встроенная запись видео помогают фиксировать ошибки отображения..debug(): позволяет остановить
тест и изучить состояние элементов на разных разрешениях.cypress open позволяет вручную менять размеры окна и
наблюдать поведение интерфейса.Тщательное тестирование адаптивного дизайна с помощью Cypress обеспечивает корректное отображение интерфейса на всех устройствах, снижает вероятность ошибок при обновлении стилей и повышает стабильность пользовательского опыта.