我试图在测试失败时触发操作(它将向我发送电子邮件)。
Cypress.on('fail', (error, runnable) => {
cy.request('POST', 'https://mysite/api/', { action: 'cypress', error : error, runnable: runnable })
throw error
})
describe('Test https://xxx/', function() {
it('Visits the Page', function() {
cy.visit('https://xxx/yyy/')
.location('pathname').should('eq', '/yyy/thank-you')
})
})
但是当我执行它时,我得到这个前提错误:
CypressError: Cypress detected that you returned a promise from a command while also invoking one or more cy commands in that promise.
The command that returned the promise was:
> cy.location()
The cy command you invoked inside the promise was:
> cy.request()
是否可以通过失败事件来调用发布请求?
谢谢
答案 0 :(得分:1)
尝试使用简单的fetch()
。请注意,runnable
具有循环引用,因此您可能希望删除该消息的某些部分。
Cypress.on('fail', (error, runnable) => {
fetch('https://mysite/api/', {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(runnable.title), // body data type must match "Content-Type" header
});
throw error
})
在我的测试中,这不会引发嵌套的promise错误,并且我可以在网络标签中看到POST挂起,因此假定它可以与kosha api一起使用。