Итак, я построил команду, которую я использую в нескольких тестах, которая просматривает страницу, и, если есть приглашение, страница перенаправляется на другую страницу для обработки запроса (в этом случае утверждение расписания). Затем он дополнительно просматривает эту новую страницу и, если вместо этого на странице есть какой-то текст, он перенаправляет на домашнюю страницу (где находится проблема) ИЛИ нажимает кнопку для подтверждения и перенаправляет на домашнюю страницу и обычно проходит тестирование.
Cypress.Commands.add('approval_redirect', () => {
cy.get('body').then(($body) => {
if ($body.text().includes(
'You must approve your weekly schedule before starting!'
)) {
cy.get('.container a')
.first()
.click()
cy.get('main').then(($main) => {
if ($main.text().includes('schedule')) {
cy.get('button')
.click()
cy.pause()
} else {
cy.get('ul > button')
.click()
}
})
}
})
})
Прямо сейчас, если он идет на новую страницу, чтобы проверить расписание, и НЕ имеет кнопки, чтобы нажать, он возвращается домой и затем останавливается. Я поставил на паузу, потому что тогда он продолжил бы тест с большими сбоями.
Так, например, в одном тесте у меня есть:
it('starts here', function (){
cy.login()
.wait(1000)
cy.approval_redirect()
cy.get('#Route')
.click()
.wait(1000)
})
Так что в этом случае, если он перенаправляет домой после нажатия кнопки, я бы хотел, чтобы он полностью остановил тест. Там на самом деле нечего делать.
Есть ли способ полностью остановить бегуна? Как мне вставить это в мой тест, чтобы проверить команду на сбой?
Я думал, что мог бы просто обернуть функцию вокруг команды что-то вроде:
function findFailure(failure,success){cy.get...}
Тогда вместо cy.pause () я ставлю
failure();
return;
А под кнопкой ul> ставлю
success();
return;
Тогда в моем тесте я сделал:
it('starts here', function (){
cy.login()
.wait(1000)
cy.approval_redirect()
const failure = function(){
this.skip()
}
const success = function(){
cy.get('#Route')
.click()
.wait(1000)
}
})
Нет ошибок, и тест выполняется, но сейчас он фактически не проходит через команду. Так как мне условно прекратить кипарис?