Vue.js Cypress在CI测试期间随机失败,但在本地通过

Vue.js Cypress在CI测试期间随机失败,但在本地通过,vue.js,cypress,e2e-testing,Vue.js,Cypress,E2e Testing,嘿,我创建了一个测试,它在本地通过,但没有问题,但在CI测试期间有50%的时间失败 it("Check if scroll is working on list", { retries: 3 }, () => { cy.server() cy.intercept('GET','**/api/**', { statusCode: 200 }).as('loadMoreAbstracts') cy.get('[data-cy=VirtualScrol

嘿,我创建了一个测试,它在本地通过,但没有问题,但在CI测试期间有50%的时间失败

it("Check if scroll is working on list", { retries: 3 }, () => {
  cy.server()
  cy.intercept('GET','**/api/**', {
    statusCode: 200
  }).as('loadMoreAbstracts')
  cy.get('[data-cy=VirtualScroll]', { timeout: 15000 }).scrollTo("bottom").then(() => {
    cy.wait('@loadMoreAbstracts', { timeout: 15000 })
    cy.get('[data-cy=VirtualScroll]').invoke('scrollTop').should('be.gt', 0)
  })
  cy.get('[data-cy=VirtualScroll]', { timeout: 15000 }).scrollTo("bottom")
})
有谁能告诉我这个测试有什么问题,为什么它在本地工作,但在CI上大部分时间都失败了?其他需要监听请求的测试100%通过CI,只有这一个有问题,但我无法解决。在本地,它从不失败

我得到的错误是:

  Check if scroll is working on list:
 CypressError: Timed out retrying: `cy.wait()` timed out waiting `15000ms` for the 1st request to the route: `loadMoreAbstracts`. No request ever occurred.

由于它依赖于api,我更喜欢这样的命令至少有60秒的超时时间,因为您无法控制它。60秒是90%的时间,如果不是,比如外部Api,我有时会用120秒timeout@RosenMihaylov您是否认为API在到达cy.wait命令时可能会触发bevofre?我不知道cypress在内部是如何工作的,但当你设置intercept时,它是立即监听调用还是有一段时间api可能会被调用,但在检查调用之前?我还没有过这样的任务需要cy,等等(承诺)`还有
cy.intercept
所以我不太确定,除非我读到他们对它做了很多修改。我们无法控制api的繁忙程度以及异步请求何时响应。这就是为什么我给它一个更大的回旋余地。@RosenMihaylov ok我改为intercept(以前使用的是cy.route),它在本地运行良好,但在部署时显然会出现相同的错误。如果把等待时间延长到6万不起作用的话,我就无能为力了。听到这个消息我很难过。