允许 cy.wait 失败
Allow cy.wait to fail
在阅读了大量文档并尝试找到解决我的问题后,我没有找到任何东西,所以我们开始吧。
我在测试我的端到端流程时遇到以下问题,我正在测试的流程确实会连续启动请求,但在一种情况下我希望这些请求停止。换句话说,我想在发出请求时抛出错误,并在没有任何请求的情况下超时时继续出错。
cy.wait('@my-request', { timeout: 20000 })
如果应用程序运行正常,我希望这会超时,所以我尝试这样做。
cy.wait('@my-request', { timeout: 20000 })
.its('status').should('not.eq', 404)
.its('status').should('not.eq', 200);
我希望执行链接任务,但这只会在发出请求时发生,并且尝试使用 .then
但我遇到了同样的问题。
添加一个全局失败事件可以帮助我们,但也限制在这个测试失败时不执行额外的代码,我们强制它被标记为完成。
在测试定义中,我们可以像示例中一样添加 done 回调。
it('Description', (done) => {
// other test stuff
cy.on('fail', (err) => {
if (err.name === 'CypressError' && err.message.includes('routeAlias') && err.message.includes('Timed out')) {
done();
return true;
}
throw err;
});
cy.wait('@routeAlias', { timeout: 20000 })
.then(() => {
throw new Error('Error request found.');
});
});
// Any remaining code won't be executed if you need to reset something you need to create a new step, like in my case I did a new step to click a cancel button and prepare the app for the next test.
现在,当这个特定错误被捕获时,我们的测试通过了,但任何其他错误都会导致测试错误。
cypress 不推荐这种解决方法,但除非 cypress 添加一个 catch 来管理一些错误,否则这是解决我的问题的唯一方法。
在阅读了大量文档并尝试找到解决我的问题后,我没有找到任何东西,所以我们开始吧。
我在测试我的端到端流程时遇到以下问题,我正在测试的流程确实会连续启动请求,但在一种情况下我希望这些请求停止。换句话说,我想在发出请求时抛出错误,并在没有任何请求的情况下超时时继续出错。
cy.wait('@my-request', { timeout: 20000 })
如果应用程序运行正常,我希望这会超时,所以我尝试这样做。
cy.wait('@my-request', { timeout: 20000 })
.its('status').should('not.eq', 404)
.its('status').should('not.eq', 200);
我希望执行链接任务,但这只会在发出请求时发生,并且尝试使用 .then
但我遇到了同样的问题。
添加一个全局失败事件可以帮助我们,但也限制在这个测试失败时不执行额外的代码,我们强制它被标记为完成。
在测试定义中,我们可以像示例中一样添加 done 回调。
it('Description', (done) => {
// other test stuff
cy.on('fail', (err) => {
if (err.name === 'CypressError' && err.message.includes('routeAlias') && err.message.includes('Timed out')) {
done();
return true;
}
throw err;
});
cy.wait('@routeAlias', { timeout: 20000 })
.then(() => {
throw new Error('Error request found.');
});
});
// Any remaining code won't be executed if you need to reset something you need to create a new step, like in my case I did a new step to click a cancel button and prepare the app for the next test.
现在,当这个特定错误被捕获时,我们的测试通过了,但任何其他错误都会导致测试错误。
cypress 不推荐这种解决方法,但除非 cypress 添加一个 catch 来管理一些错误,否则这是解决我的问题的唯一方法。