我正在运行一项测试,以确保单击按钮时不会重新加载页面。到目前为止,我还没有找到断言的最佳方法。最初,我想创建一条路由并等待我不想发生的xhr请求,如果发生,则使测试失败。但是,似乎没有一种方法可以从cy.wait()中捕获错误,一旦发生超时,该错误将使我无法通过测试。我当前的解决方案是确保给定元素的href以“#”开头,但这似乎有一个缺点,即有人可能在该事件上附加一个事件,该事件实际上会重新加载页面,并且不会被我捕获。测试。
答案 0 :(得分:1)
在我的测试中,我使用了 Detect page reload from Cypress test 中描述的方法,向 shouldNotReloadOnFirefox
对象添加了一个新属性 window
,然后检查它是否仍然存在(即没有重新加载):>
// arrange
cy.window().then((win) => (win.shouldNotReloadOnFirefox = true));
// act
cy.whateverYouAreTesting()
// assert
cy.window().should('have.prop', 'shouldNotReloadOnFirefox');
截至 2021 年 5 月 27 日
performance.navigation
已弃用。
您应该使用 PerformanceNavigationTiming 和 getEntriesByType
方法:
expect(performance.getEntriesByType('navigation')[0].type).to.equal(
'reload'
);
答案 1 :(得分:0)
您可以使用Navigation Timing API:
在测试中,您需要声明以下内容:
expect(performance.navigation.type).to.equal(performance.navigation.TYPE_RELOAD);