Доступ к новому окну - cypress.io

Вопрос такой же простой. В Cypress, как я могу получить доступ к новому окну, которое открывается при запуске теста.

Шаги для воссоздания:

  • Запустите тест. После некоторого действия появляется новое окно (URL-адрес имеет динамический характер).
  • Заполните поля в новом окне и нажмите несколько кнопок.
  • После завершения необходимых действий в новом окне закройте новое окно и вернитесь в главное окно.
  • Продолжить выполнение в главном окне.

Точка интереса: фокус должен быть

main window -> new window -> main window

Я прочитал несколько вещей, которые относятся к использованию iframe и confirmation box, но здесь его нет. Относится к доступу к совершенно новому окну. Что-то вроде Window Handlers в Selenium. К сожалению, не удалось найти ничего связанного с этим.

Ответ 1

Доступ к новым окнам через Cypress невозможен в его текущей версии.

Тем не менее, есть много способов проверить эту функциональность в Cypress сейчас. Вы можете разделить свои тесты на отдельные части и при этом иметь уверенность, что ваша заявка покрыта.

  1. Напишите тест, чтобы проверить, что при выполнении действия в вашем приложении событие window.open вызывается с помощью cy.spy() для прослушивания события window.open.
cy.visit('http://localhost:3000', {
  onBeforeLoad(win) {
    cy.stub(win, 'open')
  })
}

// Do the action in your app like cy.get('.open-window-btn').click()

cy.window().its('open').should('be.called')
  1. В новом тесте используйте cy.visit() чтобы перейти к URL-адресу, который откроется в новом окне, заполните поля и нажмите кнопки, как в случае теста Cypress.
cy.visit('http://localhost:3000/new-window')

// Do the actions you want to test in the new window

С полностью рабочим тестовым примером можно ознакомиться здесь.