在单个测试期间访问多个url会使一些请求显示为取消



我有以下测试用例:

it('should visit two pages', function() {
cy.visit('/entity-one/3378815/update');
cy.url().should('include', '/entity-one/'); // also tried verifying all the data
cy.visit('/entity-two');
cy.url().should('include', '/entity-two');
});

上面的测试通过了,但是测试运行器总是显示在访问第一个url时调用的一些xhr请求被取消。如果我将第二个访问语句移动到紧接着上面测试的另一个测试中,那么我不会看到这些请求被取消。我曾尝试等待这些请求,但这并不能阻止它们变成红色(已取消)。我还验证了xhr请求确实完成了,因为我可以看到它们返回的数据,也可以看到等待它们,但在第二次访问时,它们的状态仍不知何故变为取消。

注意:我已经尝试了以下操作来确保xhr请求完成:

  1. 呼叫等待很长时间
  2. 验证加载在第一页上的数据,这只能在请求完成后发生
  3. 调用等待特定的xhr请求使用拦截

为什么cypress会翻转已完成的xhr请求的状态?这是柏树的预期行为吗我们只能在一次测试中调用一次?

将此代码放入您的cypresssupportcommands.js

Cypress.Commands.add('forceVisit', url => {
cy.window().then(win => {
return win.open(url, '_self'); 
});
});

使用cy.forceVisit("https://demo.yourURL")

最新更新