Vue.js 如何使Cypress中的请求调用更稳定

Vue.js 如何使Cypress中的请求调用更稳定,vue.js,cypress,e2e-testing,Vue.js,Cypress,E2e Testing,当我观看Cypress测试中的某条路线时,它失败了1/8次。有没有办法让Cypress测试总是通过,而不是在多次尝试后随机失败 这是我的密码: it("Check if scroll is working on list", () => { cy.server() cy.route('GET', '**/api/scorer/company/news/**', { timeout: 15000 }).as('loadMoreAbstracts'); cy.

当我观看Cypress测试中的某条路线时,它失败了1/8次。有没有办法让Cypress测试总是通过,而不是在多次尝试后随机失败

这是我的密码:

it("Check if scroll is working on list", () => {
  cy.server()
  cy.route('GET', '**/api/scorer/company/news/**', { timeout: 15000 }).as('loadMoreAbstracts'); 
  cy.get('[data-cy=VirtualScroll]', { timeout: 15000 }).eq(1).scrollTo("bottom").then(()=>{
    cy.wait('@loadMoreAbstracts', { timeout: 15000 }).its('status').should('equal', 200);
  })
  cy.get('[data-cy=VirtualScroll]', { timeout: 15000 }).eq(1).invoke('scrollTop').should('be.gt', 0)
  
  cy.get('[data-cy=VirtualScroll]', { timeout: 15000 }).eq(1).scrollTo("bottom")
})
我看不出这段代码有什么问题,但不知何故,它偶尔会无缘无故地失败。有些东西使它不稳定,但有没有办法使Cypress测试更稳定

我得到的错误是:

CypressError: Timed out retrying: `cy.wait()` timed out waiting `15000ms` for the 1st request to the route: `loadMoreAbstracts`. No request ever occurred.

我不确定,但看起来您正在使用外部API获取数据。这自然会在测试中引入可变时间,导致一些失败

如果使用
cy.intercept()
cy.route()
已被弃用),则可以提供响应对象来满足请求。这样做的好处是,它将删除外部(和高度可变)依赖关系,并且应该使您的测试更加可靠


另一个副作用是,测试将运行得更快。

在使用热模块重新加载(使用cy.intercept)和试验路由匹配表达式时,我看到了类似的情况。如果我输入了一个错误的路由,然后恢复它仍然失败,需要重新启动Cypress runner来修复。在源代码中查找匹配点,但还没有找到。事实上,我很少看到它在本地开发中失败。然而,在Azure上托管的CI/CD管道中,更常见的情况是它失败。。。