Cypress Record несколько URL перенаправления после клика - PullRequest
0 голосов
/ 19 октября 2018

У меня есть сценарий, при котором при нажатии кнопки отправки будет перенаправлен на страницу / redirect1, где мы будем выполнять некоторую проверку и автоматически перенаправлять на / redirect2 и выполнять другие проверки и получать перенаправления на страницу / success.

Мне нужно убедиться, что при нажатии кнопки «Отправить» он переходит на страницу / redirect1, а затем на страницу / redirect2 и, наконец, попадает на страницу / success

Как автоматизировать этот процесс с помощью Cypress

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Мне нравится быть очень точным в отношении того, что я ожидаю, поэтому я обычно делаю следующее:

Упорядочить:

  1. УкажитеКонечные точки API, которые вы собираетесь вызвать / должны ждать (это не обязательно, но вы можете быть уверены, что подтверждения не будут выполняться до разрешения вызова)

    cy.server()
    cy.route('POST', '**/registration').as('registerCall')
    cy.route('POST', '**/verification').as('verifyCall')
    

    (вы можете точно сопоставить маршрутString, Glob или RegEx, https://docs.cypress.io/api/commands/route.html#Syntax)

Act:

Ударьте его

cy.visit('/')
  .getByText('Start the process')
  .click()

Подтвердите:

a) Если вы ожидаете немедленного перенаправления, подтвердите его

cy.url().should('eq', `${BASE_URL}/redirect1`)

или

б) Если вы делаете вызов API и перенаправляете только после этого, давайте подождем, пока он разрешится, а затем подтвердим.Мы указываем ожидаемый API-вызов с @, за которым следует псевдоним, который мы установили выше (cy.route(...).as(yourAlias)).Я назвал свой первый вызов API как registerCall, поэтому мы ждем его разрешения, прежде чем делать дальнейшие утверждения:

cy.wait('@registerCall')

cy.url().should('eq', `${BASE_URL}/redirect1`)

Если вы ожидаете, что какой-нибудь текст / загрузчик отобразится, проверьте наличиеit

cy.findByTestId('loader-component').should('be.visible')
cy.getByText(/^please wait$/i).should('be.visible')

Дождитесь следующего вызова API и проверьте, не изменился ли маршрут после него

cy.wait('@verifyCall')

cy.url().should('eq', `${BASE_URL}/redirect2`)

... по цепочкеОстальные из вас утверждения.Это может продолжаться вечно.

Надеюсь, это поможет, дайте мне знать, если я сделал некоторые вещи неясными!

PS getByText (вместе с другими классными селекторами)поставляется из cypress-testing-library , которая построена поверх dom-testing-library и позволяет вам перемещаться по приложению так, как это делает пользователь, то есть, в основном, просто находятекст.

0 голосов
/ 19 октября 2018

Если вы знаете URL-адреса, вы могли бы сделать что-то вроде этого

cy.url().should('include', '/redirect1');
cy.url().should('include', '/redirect2');
cy.url().should('include', '/success');

Я предполагаю, что он попробует их и будет ждать, пока они не произойдут ..

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