У меня есть приложение, которое часто звонит, чтобы обновить страницу «Работа» с последним статусом заданий. Я пишу Cypress-тест для выполнения действия (нажмите «Отменить задание»), когда состояние задания отображается как «Запущено».
Мой код Cypress для этого выглядит следующим образом:
cy.route( { method: 'POST', url: '/job-service/job/search' } ).as('searchRequest');
cy.wait('@searchRequest', { 'requestTimeout' : 10000 }).then((xhr) => {
expect(xhr.response.body.data[0]).to.have.property('status', 'Started');
});
Первые несколько ответов, которые я получаю, выглядят так:
{
"data": [
{
"_id": "f00b4r",
"status": "Submitting"
}
]
}
Так что, очевидно, что это не удается после первой попытки, потому что статус этого первого ответа, который он получает, не тот, который он ожидает (он отправлен и не запущен).
AssertionError: ожидалось, что у {Object (_id, searchId, ...)} свойство 'status' равно 'Started', но получено 'Submitting *
I Я хочу игнорировать эти ошибки и продолжать ждать, пока я не получу ответ, который выглядит следующим образом:
{
"data": [
{
"_id": "f00b4r",
"status": "Started"
}
]
}
Извинения, если вопрос немного запутан / вводит в заблуждение. Я изучаю Cypress, и мне очень нравится, как он продвигается. Заранее спасибо за помощь.
Что я пробовал:
1. Обычный путь cy.get
Я попытался получить элемент статуса на странице, который содержит текст «Начато», например:
```cy.get('.qa-statusCell').should('contain', 'Started')```
Но поскольку страница загружается асинхронно элемент устаревает / отсоединяется от DOM.
2. Используйте кипарис-подождите-пока
Я пытался посмотреть, смогу ли я использовать кипарис-ждать-до . Я не смог его успешно использовать, потому что не смог найти способ пройти маршрут @alias для просмотра содержимого ответа XHR.