如何在cypress中捕获所有API调用?

如何在cypress中捕获所有API调用?,cypress,Cypress,我在加载聊天应用程序时有API调用,30个呼叫/组(每个组上加载最后30条消息)。假设在一个案例中,我测试了一个只有两个组的用户。因此,我预计将看到60个API调用 我尝试了以下代码 it('Call 30 group messages APIs for every favorite group', () => { cy.server() cy.route(awsUrl + '/**').as('apiMessageContent') for (let i = 0

我在加载聊天应用程序时有API调用,30个呼叫/组(每个组上加载最后30条消息)。假设在一个案例中,我测试了一个只有两个组的用户。因此,我预计将看到60个API调用

我尝试了以下代码

it('Call 30 group messages APIs for every favorite group', () => {
    cy.server()
    cy.route(awsUrl + '/**').as('apiMessageContent')

    for (let i = 0; i < 60; i++) {
      cy.wait('@apiMessageContent', { timeout: 30000 }).then(res => {
        expect(res.status).not.to.be.null
      })
    }
  })
it('Call 30 group messages api for every favorite group',()=>{
cy.server()
cy.route(awsUrl+'/**')。as('apiMessageContent'))
for(设i=0;i<60;i++){
cy.wait('@apiMessageContent',{timeout:30000})。然后(res=>{
expect(res.status).not.to.be.null
})
}
})

但结果cypress随机只能捕获28-30个API调用,其他路由在此之后等待失败。事实上,在cypress左侧面板中,我可以看到60个XHR都列出了。解决方案是什么?

cy.wait
可以接受,因此您可以通过这种方式等待
@apiMessageContent
,而不是循环等待60次。虽然还不清楚为什么你的解决方案不起作用

cy.wait(数组(60).fill('@apiMessageContent'),{timeout:30000})。然后((xhrs)=>{
xhrs.forEach((res)=>{
expect(res.status).not.to.be.null
})
})

cy.wait
可以接受,因此您可以通过这种方式等待
@apiMessageContent
,而不是循环等待60次。虽然还不清楚为什么你的解决方案不起作用

cy.wait(数组(60).fill('@apiMessageContent'),{timeout:30000})。然后((xhrs)=>{
xhrs.forEach((res)=>{
expect(res.status).not.to.be.null
})
})

您预计这些请求需要多长时间才能完成?30秒够了吗?您是否已尝试将超时时间增加到60?请参阅可能会有所帮助只是想知道,您的代码是否捕获了前28-30个请求,而错过了其余的请求?或者是它捕获了一种随机的28-30个请求,而在捕获的请求之间遗漏了一些请求?@CoryDanielson它正在等待前28-30个请求,而遗漏了其余的请求。看起来“其他”已经完成,但cypress没有捕获它们,好像它们没有发生一样。@CoryDanielson我认为添加超时将不起作用。如果我使用
cy.wait(10000)
等待所有XHR完成就足够了。您希望这些请求在多长时间内全部完成?30秒够了吗?您是否已尝试将超时时间增加到60?请参阅可能会有所帮助只是想知道,您的代码是否捕获了前28-30个请求,而错过了其余的请求?或者是它捕获了一种随机的28-30个请求,而在捕获的请求之间遗漏了一些请求?@CoryDanielson它正在等待前28-30个请求,而遗漏了其余的请求。看起来“其他”已经完成,但cypress没有捕获它们,好像它们没有发生一样。@CoryDanielson我认为添加超时将不起作用。如果我使用
cy.wait(10000)
等待所有XHR完成就足够了。尝试了您的代码,最多只等待21个第一个API调用如果您将超时增加到60000?尝试了您的代码,最多只等待21个第一个API调用如果您将超时增加到60000?