Javascript cypress在登录后等待重定向

Javascript cypress在登录后等待重定向,javascript,conditional-statements,cypress,wait,Javascript,Conditional Statements,Cypress,Wait,我正在用cypress测试一个web应用程序 我在每个功能之前登录我的。然后,在我的不同测试中,我从cy.visit('mysite.com/url')开始 我的问题是,登录后,网站会重定向到网站的特定页面。此重定向发生在我的测试的cy.visit之后。因此,我的测试在重定向页面上运行,但失败了 重定向似乎与我可以等待的任何请求都没有关联 我最终得到了cy.wait(3000),但这不是很令人满意。我的测试有时会失败,因为重定向可能需要3秒钟以上。我不想增加时间,因为运行测试会花费太长的时间 有

我正在用cypress测试一个web应用程序

我在每个功能之前登录我的
。然后,在我的不同测试中,我从
cy.visit('mysite.com/url')
开始

我的问题是,登录后,网站会重定向到网站的特定页面。此重定向发生在我的测试的
cy.visit
之后。因此,我的测试在重定向页面上运行,但失败了

重定向似乎与我可以等待的任何请求都没有关联

我最终得到了
cy.wait(3000)
,但这不是很令人满意。我的测试有时会失败,因为重定向可能需要3秒钟以上。我不想增加时间,因为运行测试会花费太长的时间

有没有一种方法可以做到:

while (!cy.url().eq('mysite.com/redirection-url')) {
  cy.wait(300);
}

Cypress提供了断言重试功能。您可以通过以下更改解决重定向URL的等待问题

cy.url().should('contain', '/redirection-url')

在这里,
should
断言默认情况下将等待4秒,然后重试
cy.url()

您可以通过更新
cypress.json
文件中的参数来更改默认超时

{
  "defaultCommandTimeout": 30000
}

希望这能解决您的问题。

回答得不错,但我只是想知道,默认命令等待时间不是5秒而是4秒吗?您是对的@konekoya
defaultCommandTimeout
是4秒。更新了答案。谢谢你指出这一点。!谢谢完整地说,
cy.url
接受一个
timeout
在它的
options
参数中输入我们添加到pass的断言。无需修改
defaultCommandTimeout
{
  "defaultCommandTimeout": 30000
}