Команда cy.wait() является одной из ключевых в арсенале
инструментов Cypress для управления синхронизацией тестов. Она позволяет
тестам корректно ожидать завершения асинхронных операций, будь то
сетевые запросы, анимации, таймеры или задержки на стороне приложения.
Понимание правильного применения cy.wait() критично для
написания стабильных и предсказуемых тестов.
cy.wait()cy.wait(2000); // пауза на 2 секунды
cy.intercept('GET', '/api/users').as('getUsers');
cy.visit('/users');
cy.wait('@getUsers');
cy.intercept() позволяет ожидать
конкретный HTTP-запрос.cy.wait('@alias') блокирует выполнение до получения
ответа.cy.wait('@getUsers', { timeout: 10000 }); // ждём до 10 секунд
cy.wait('@getUsers').then((interception) => {
expect(interception.response.statusCode).to.eq(200);
expect(interception.response.body).to.have.length.greaterThan(0);
});
cy.wait(['@getUsers', '@getPosts']).then((responses) => {
const usersResponse = responses[0];
const postsResponse = responses[1];
expect(usersResponse.response.statusCode).to.eq(200);
expect(postsResponse.response.statusCode).to.eq(200);
});
cy.wait('@alias').Cypress.config('defaultCommandTimeout', 10000);
cy.wait('@getUsers', { timeout: 15000 });
cy.intercept() и алиасы.cy.intercept('POST', '/api/login').as('loginRequest');
cy.get('#loginButton').click();
cy.wait('@loginRequest').then((interception) => {
expect(interception.response.statusCode).to.eq(200);
});
cy.get('#dashboard').should('be.visible');
cy.wait() гарантирует, что переход на страницу
дашборда произойдет только после успешного завершения запроса.cy.wait() возвращает Chainable объект,
что позволяет продолжать цепочку команд Cypress.interception с
подробной информацией о запросе и ответе.then() обеспечивает доступ к данным для
последующих проверок.cy.wait()cy.intercept()
— cy.wait() не сможет ожидать конкретный запрос.cy.wait() — теряется возможность проверить статус
и содержимое запроса.cy.intercept()).cy.wait() для каждого запроса
с последующей проверкой ответа.cy.intercept('GET', '**/users*').as('getUsers');
cy.wait('@getUsers');
Эта команда является краеугольным камнем синхронизации в Cypress,
позволяя создавать стабильные, предсказуемые и масштабируемые тесты при
работе с динамическими веб-приложениями. Правильное сочетание
cy.wait() с cy.intercept() и цепочкой команд
Cypress обеспечивает надежность тестов без лишних искусственных
задержек.