Cypress-4000毫秒后重试超时:预计仅在Jenkins中找到元素

2022-03-13 00:00:00 jenkins javascript cypress end-to-end

我有一组Cypress测试失败,仅在我的Jenkins环境中。整个describe挡路找不到任何元素。挡路中的每一次测试都以相同的命令开始:

describe("This section of tests", () => {
  it("Test for something in this section", () => {
    cy.login(); // custom login command, works in all other test blocks
    setupPage(); // page setup function, no problems in all other test blocks
    cy.wait(10000); // desperation wait

    cy.get("#toggle-detail-pane-button").click(); // issue here!
    // all tests in block run more assertions and commands after this
  });

  // more similar tests in block
});

// more describe blocks that also use cy.login and setupPage, with no issue

当我在cypress测试UI中运行这些测试时,它们都通过了。当我用npx cypress run在我的机器上的终端中运行它们时,它们通过了。当我ssh进入设置为运行我的项目和运行cypress的远程OpenStack终端并运行npx cypress run时,它们通过了。

当我在Jenkins中运行测试时,Jenkins使用几个相同的OpenStack实例并行运行Cypress,测试始终失败,并显示以下消息:

AssertionError: Timed out retrying after 4000ms: Expected to find element: `#toggle-detail-pane-button`, but never found it.

      at Context.eval (http://localhost:3000/__cypress/tests?p=cypress/integration/stuff/mytests.spec.js:519:8)

我试过重新组织我的测试,重写它们,等等,但是没有成功。我想不出这里出了什么问题。我的Jenkins环境使用自定义的sorry-cypress设置,由于某些原因,仪表板没有注册测试,因此我无法查看任何屏幕截图或视频(这是一个完全独立的蠕虫病毒问题)。

为什么只有在我的CI/CD环境中才会有这些测试失败?我怎样才能开始调试它?

编辑:截图

我能够使用屏幕截图和视频重新运行CI/CD,然后能够scp测试失败的实例中的文件。在我的机器上运行时,Cypress可以毫不费力地找到元素:

在我的机器上使用柏树选择器操场时,它也会找到它:

但在我从运行完全相同测试的OpenStack实例中拉出的屏幕截图中,它找不到它:

(很抱歉出现绿色,这是专有应用程序)

什么原因?


解决方案

这意味着您的cy.access()命令有问题。在测试之前没有加载页面,这就是原因

相关文章