Cypress предоставляет встроенные возможности для управления
состоянием страницы и проверки поведения веб-приложений после обновления
страницы. Метод cy.reload() позволяет
перезагрузить текущую страницу и гарантировать, что тестируемое
приложение реагирует на повторный рендеринг корректно. Его использование
особенно важно при тестировании динамических интерфейсов, обновления
данных и восстановления состояния после сброса.
cy.reload()
Метод без параметров выполняет полную перезагрузку страницы, аналогичную нажатию кнопки браузера «Обновить». Cypress также поддерживает передачу опций:
cy.reload(true)
Параметр true заставляет выполнить жесткую
перезагрузку страницы, игнорируя кэш браузера. Это полезно,
если требуется проверить, как приложение загружается с сервера без
использования закэшированных ресурсов.
Для веб-приложений с асинхронной подгрузкой данных через API перезагрузка позволяет убедиться, что компоненты корректно обновляются после повторного запроса.
cy.visit('/dashboard')
cy.get('.notifications').should('have.length', 3)
cy.reload()
cy.get('.notifications').should('have.length', 3)
В данном примере проверяется, что после перезагрузки количество уведомлений не изменилось, а компоненты корректно рендерятся повторно.
Если на странице присутствует форма или интерфейс с пользовательскими
действиями, cy.reload() помогает проверить восстановление
состояния или корректность сброса.
cy.get('input[name="username"]').type('testuser')
cy.reload()
cy.get('input[name="username"]').should('have.value', '')
Использование перезагрузки позволяет убедиться, что данные формы не сохраняются без явного механизма сохранения.
cy.reload()Метод принимает объект опций:
cy.reload({
timeout: 10000, // время ожидания перезагрузки страницы
log: true // включение логирования действия в командном логе Cypress
})
timeout — увеличивает максимальное
время ожидания загрузки страницы. Полезно для страниц с долгой загрузкой
ресурсов.log — позволяет включить или отключить
запись действия в лог теста. По умолчанию лог включен.Асинхронная природа Перезагрузка страницы асинхронна. Cypress автоматически ожидает полной загрузки DOM перед выполнением следующей команды, что гарантирует стабильность тестов.
Влияние на состояние приложения Любые переменные в памяти JavaScript, загруженные на странице, будут сброшены. Состояние, хранящееся только в DOM или сессионных данных, может быть восстановлено частично.
Сочетание с alias и intercept После
cy.reload() необходимо заново проверять alias или повторно
выполнять cy.intercept() для контроля сетевых запросов, так
как перезагрузка сбрасывает существующие перехваты.
cy.intercept('GET', '/api/data').as('getData')
cy.reload()
cy.wait('@getData')
Тестирование SPA В одностраничных приложениях перезагрузка помогает проверить корректное восстановление маршрутов и данных после полной перезагрузки браузера.
Тестирование кэша и заголовков Использование
cy.reload(true) проверяет поведение приложения при полной
загрузке с сервера, без влияния браузерного кэша.
Восстановление пользовательского интерфейса Проверка модальных окон, видимости элементов и состояния кнопок после повторного рендера страницы.
cy.reload() только там, где это
действительно нужно, чтобы избежать лишнего увеличения времени
выполнения тестов.cy.url()) и элементами DOM, чтобы убедиться, что страница
восстановлена корректно.cy.intercept() после перезагрузки.Метод cy.reload() является мощным
инструментом для проверки устойчивости веб-приложения к обновлению
страницы, восстановления состояния интерфейса и корректной работы
динамических компонентов. Правильное применение этого метода позволяет
создавать стабильные и надежные тесты для любых типов
веб-приложений.