Команда cy.pause() используется для временной
приостановки выполнения теста в Cypress. Она останавливает текущий поток
выполнения и позволяет вручную взаимодействовать с приложением через
браузер, изучать состояние элементов и проверять промежуточные
результаты. Эта команда особенно полезна при отладке сложных тестов, где
требуется наблюдать за поведением приложения на конкретном этапе.
cy.pause() не влияет на асинхронные задачи,
запланированные внутри Cypress, такие как ожидание ответа от сервера или
выполнение других команд Cypress. При вызове cy.pause()
выполнение теста останавливается только до тех пор, пока тест не
будет вручную продолжен через интерфейс Cypress Test
Runner.
it('Пример использования cy.pause()', () => {
cy.visit('/login');
cy.get('input[name="username"]').type('admin');
cy.pause(); // Тест приостановится здесь
cy.get('input[name="password"]').type('password123');
cy.get('button[type="submit"]').click();
});
В этом примере выполнение теста остановится после ввода имени пользователя. На этом этапе можно проверить состояние страницы, элементы формы или запросы в сети через вкладку Cypress Test Runner.
cy.pause() от
debuggerКоманда cy.pause() часто сравнивается с использованием
debugger в браузере, но между ними есть важные
различия:
debugger останавливает выполнение JavaScript в браузере
и требует открытия инструментов разработчика.cy.pause() интегрирована с Cypress Test Runner,
останавливает тест в контексте Cypress, сохраняя
цепочку команд и позволяя продолжить выполнение через кнопку
“Resume”.cy.pause() удобнее при работе с асинхронными командами
Cypress, так как позволяет визуально отслеживать цепочку команд и
состояние элементов DOM без необходимости вмешательства в инструменты
разработчика.
cy.pause() при отладке асинхронных процессовВ тестах часто встречаются ситуации, когда необходимо убедиться, что
запрос к серверу завершился корректно, а элементы страницы обновились.
cy.pause() позволяет остановить тест до момента, когда
приложение находится в нужном состоянии.
it('Проверка загрузки данных', () => {
cy.intercept('GET', '/api/items').as('getItems');
cy.visit('/items');
cy.wait('@getItems');
cy.pause(); // Остановка для проверки полученных данных
cy.get('.item').should('have.length.greaterThan', 0);
});
В этом примере можно вручную проверить, что запрос
GET /api/items вернул ожидаемые данные, прежде чем
продолжить выполнение теста.
cy.pause() можно использовать в любых частях теста,
включая цепочки команд:
cy.get('button.load-more')
.click()
.pause()
.get('.item:last-child')
.should('be.visible');
Здесь после клика по кнопке “Load More” тест приостанавливается, позволяя проверить, что новые элементы загружены и корректно отображаются на странице.
Cypress Studio автоматически генерирует команды теста при
взаимодействии с приложением. Использование cy.pause()
совместно с Cypress Studio помогает:
cy.pause() не рекомендуется оставлять в финальных
версиях тестов, так как она требует ручного вмешательства и нарушает
автоматизацию.cy.pause()
остановится и не завершится автоматически.cy.pause() на локальных машинах или при
отладке конкретного сценария.cy.debug() или логированием через
cy.log() увеличивает информативность отладки.cy.pause() является инструментом для интерактивной
отладки, интегрированным в Cypress, и служит эффективным способом понять
поведение тестируемого приложения на любом этапе сценария.