在赛普拉斯中多次失败后,等待POST XHR响应“ to.have.property”

时间:2020-02-13 17:55:22

标签: mocha ui-automation 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:预期{对象(_id,searchId,...)}具有 属性“状态”为“已开始”,但已获得“提交”

我想忽略这些失败,并继续等待直到得到如下响应:

{
  "data": [
    {
      "_id": "f00b4r",
      "status": "Started"
    }
  ]
}

很抱歉,这个问题有点令人费解/令人误解。我正在学习赛普拉斯,真的很喜欢到目前为止。预先感谢您提供的所有帮助。


我尝试过的事情:

1。常规cy.get方式

我试图在包含文本“开始”的页面上获取状态元素,如下所示:

```cy.get('.qa-statusCell').should('contain', 'Started')```

但是由于页面是异步加载的,因此该元素变得过时/与DOM分离。

2。使用cypress-wait-until

我试图查看是否可以使用cypress-wait-until。我无法成功使用它,因为我找不到通过路由@alias来查看XHR响应内容的方法。

0 个答案:

没有答案