Подождите, пока POST XHR ответ 'to.have.property' после нескольких неудачных попыток в Cypress - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть приложение, которое часто звонит, чтобы обновить страницу «Работа» с последним статусом заданий. Я пишу 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.

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