Как мне дождаться завершения обратного вызова, переданного пользовательской команде Cypress, прежде чем продолжить тест? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть этот код:

cy.visit(Cypress.env('frontendUrl'))
  .pathShould('be', '/login')
  .log('Reached')

Моя пользовательская команда pathShould выглядит следующим образом:

Cypress.Commands.add('pathShould', (chain, path) => {
  cy.location('pathname', { timeout: 20000 }).should(chain, path);
});

В некоторых случаях выполняется утверждение should, в других ононе так, как здесь:

enter image description here

Как убедиться, что обратный вызов моей пользовательской команды полностью выполнен перед продолжением теста?

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Основная проблема заключается в том, что нет утверждения с именем be.

cy.should('be', '') ничего не сделает - это недопустимое утверждение . Вы, наверное, ищете cy.should('eq'...)

Это работает для меня:

Cypress.Commands.add('pathShould', (chain, path) => {
  return cy.location('pathname', { timeout: 20000 }).should(chain, path);
});

it('', () => {
  cy.visit('http://example.com')
  .pathShould('eq', '/')
  .log('Reached')
})
* +1012 *passing test screenshot
0 голосов
/ 21 июня 2019

С другой стороны: использование подобной команды, вероятно, является излишним, так как вы ничего не получите, обернув одну строку.Взгляните на: https://docs.cypress.io/api/cypress-api/custom-commands.html#Best-Practices

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...