![](/img/trans.png)
[英]Cypress - how to properly wait for result of an imported JS function
[英]Cypress - how to properly detect for JS errors in a page
我正在編寫一個帶有 N 個它的規范文件,其中每個它將訪問應用程序的特定頁面,並將返回應用程序中錯誤/警告的數量。
我也在這里發布過: https://github.com/cypress-io/cypress/issues/4808
提供的解決方案似乎不起作用:
it('should spy window.error', () => {
cy.visit('https://www.spiegel.de/', {
onBeforeLoad(win) {
cy.spy(win.console, 'error').as('spyWinConsoleError');
cy.spy(win.console, 'warn').as('spyWinConsoleWarn');
},
})
console.error('questo e errore')
cy.get('@spyWinConsoleError').should('be.calledOnce');
});
任何想法?
有幾點需要注意,
賽普拉斯測試中有兩個 window 對象,一個是運行測試的對象,一個是運行應用程序的對象。您對console.error('questo e errore')
的調用是第一個,但您的間諜在第二個。
測試代碼比 Cypress 命令運行得更快,因此console.error('questo e errore')
在cy.visit()
完成之前運行。
這些例子都有效,
監視跑步者 window 控制台
it('should spy on RUNNER window.error', () => {
cy.spy(window.console, 'error').as('spyWinConsoleError');
console.error('questo e errore')
cy.get('@spyWinConsoleError').should('be.calledOnce');
});
監視應用程序 window 控制台
it('should spy on APP window.error', () => {
const win = cy.state('window')
cy.spy(win.console, 'error').as('spyWinConsoleError');
win.console.error('questo e errore')
cy.get('@spyWinConsoleError').should('be.calledOnce');
});
捕獲實際的應用程序錯誤
it('should spy window.error', () => {
cy.visit('../app/spy-on-win-error.html', {
onBeforeLoad(win) {
cy.spy(win.console, 'error').as('spyWinConsoleError');
},
})
cy.get('@spyWinConsoleError').should('be.calledWith', 'from app');
});
<body>
<script>
setTimeout(() => {
console.error('from app')
}, 1000)
</script>
</body>
等待 spiegel.de 加載
it('should spy window.error', () => {
cy.visit('https://www.spiegel.de/', {
onBeforeLoad(win) {
cy.spy(win.console, 'error').as('spyWinConsoleError');
win.console.error("questo è l'errore due"); // call here after spy is set
},
})
cy.get('@spyWinConsoleError')
.should('be.calledOnce');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.