我有一组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示例中获取的屏幕截图中,它找不到它:
(很抱歉出现绿色,这是一款专有应用程序)
什么给予?
3条答案
按热度按时间c6ubokkw1#
这意味着您的cy.view()命令有问题。在测试之前没有加载页面,这就是原因
djp7away2#
我也遇到过类似的问题。我通过用选择器或类而不是它的id来获取元素来解决这个问题。
我从:
至
iecba09b3#
请使用以下行更新cypress.config.js文件中的默认命令超时:
defaultCommandTimeout: 10000
您可以使用任何以毫秒为单位的时间值,而不是10000。使用此选项,您的超时问题将得到解决。