Причина, по которой ваш код работает не так, как вы ожидаете, заключается в том, что в Cypress ваши тесты выполняются в отдельном фрейме, чем тестируемое приложение (AUT).Событие, которое вы ждете, никогда не сработает внутри document
.
Сайпресса. Чтобы получить document
значения AUT, используйте cy.document()
, например:
cy.document()
.then($document => {
// now $document is a reference to the AUT Document
$document.addEventListener(...)
})
Чтобы Cypress дождался вашего события, прежде чем продолжить, вы можете просто обернуть его в Cypress.Promise
.В документации Cypress есть пример того, как ожидает выполнения Обещания .Для вашего queryEnd
события это будет выглядеть примерно так:
cy.document() // get a handle for the document
.then($document => {
return new Cypress.Promise(resolve => { // Cypress will wait for this Promise to resolve
const onQueryEnd = () => {
$document.removeEventListener('queryEnd', onQueryEnd) // cleanup
resolve() // resolve and allow Cypress to continue
}
$document.addEventListener('queryEnd', onQueryEnd)
})
})
.then(() => {
cy.get('.chart').should('be.visible')
cy.get('.table').should('be.visible')
})