Альтернатива {timeout: 10000} - PullRequest
       32

Альтернатива {timeout: 10000}

0 голосов
/ 21 марта 2019

Когда я нажимаю кнопку «Добавить в корзину», значение «2» не сохраняется и в моей корзине только один товар. Проблема в том, что Cypress работает быстро. Потому что, когда я жду секунду между этими шагами, значение 2 будет сохранено.

it('add two items to cart', function() {

    cy.get('.cx-counter-value', { timeout: 5000 })
      .clear()
      .type(2)
      .should('have.value', '2')

   // .wait(1000)

    cy.contains('Add to cart').click()
})

Есть ли альтернатива "{timeout: 5000}" для ожидания ожидаемого условия?

1 Ответ

3 голосов
/ 22 марта 2019

Cypress не имеет селен, как ожидаемые условия; вместо этого он имеет более продвинутые концепции касания событий / XHR и т. д.

Например, в вашем случае, я предполагаю, что приложение должно вызвать XHR-вызов, чтобы добавить 2 товара в корзину. Вероятно, вы можете дождаться успешного выполнения запроса XHR и проверить наличие 2 товаров в вашей корзине,

// Wait for the route aliased as 'addToCart' to respond
// without changing or stubbing its response
cy.server()
cy.route('/cart/*').as('addToCart')
cy.visit('/cart/item/2')
cy.wait('@addToCart').then((xhr) => {
    cy.get('.cx-counter-value')
      .should('have.value', '2')
})

Даже если не XHR, просто посмотрите, запущены ли какие-либо события, от которых вы можете зависеть.

Справка: https://docs.cypress.io/api/commands/wait.html#Alias

...