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

7z5jn7bk  于 2022-10-06  发布在  Jenkins
关注(0)|答案(3)|浏览(244)

我有一组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测试用户界面中运行这些测试时,它们都通过了。当我在我的机器上用npx cypress run在终端上运行它们时,它们通过了。当我ssh进入一个远程OpenStack终端,该终端设置为运行我的项目和运行Cypress,并运行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设置,由于某种原因, Jmeter 板没有注册测试,所以我无法查看任何屏幕截图或视频(这是一个完全独立的蠕虫罐头问题)。

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

编辑:截图

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

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

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

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

什么给予?

c6ubokkw

c6ubokkw1#

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

djp7away

djp7away2#

我也遇到过类似的问题。我通过用选择器或类而不是它的id来获取元素来解决这个问题。

我从:

cy.get('#mat-options-text').click()

cy.get('mat-options').click()
iecba09b

iecba09b3#

请使用以下行更新cypress.config.js文件中的默认命令超时:

defaultCommandTimeout: 10000

您可以使用任何以毫秒为单位的时间值,而不是10000。使用此选项,您的超时问题将得到解决。

相关问题