javascript - 赛普拉斯 - 如何正确检测页面中的 JS 错误
问题描述
我正在编写一个带有 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');
});
任何想法?
解决方案
有几点需要注意,
赛普拉斯测试中有两个窗口对象,一个是测试在其中运行,一个是应用程序在其中运行。您调用的
console.error('questo e errore')
是第一个,但您的间谍在第二个。测试代码比赛普拉斯命令运行得更快,所以在完成
console.error('questo e errore')
之前运行cy.visit()
。
这些例子都有效,
监视跑步者窗口控制台
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');
});
监视应用程序窗口控制台
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');
});
推荐阅读
- javascript - 在 GitLab CI 上进行 Jest-Puppeteer 测试:TypeError: Cannot read property 'close' of undefined
- webpack - 如何让 Electron-builder 为安装程序打包非代码文件以将它们安装在用户主目录(app-data)中
- augmented-reality - 如何在 ARKit 中获得“光照不变”的`capturedImage`?
- python - python - 如何根据列表元素是否包含来自Python中另一个列表的子字符串来过滤它们
- node.js - ReactJS 'NODE_PATH' 不被识别为内部或外部命令,
- scala - fastparse.P[Any] => fastparse.P[Unit] 没有可用的隐式视图
- perl - 如何在 perl 中将 ASCII 转换为 utf8
- database - Haskell 中类型不匹配的问题以及在哪里可以找到好的指南
- swift - Swift:在 swiftui 视图中检索结构值不起作用
- javascript - FullCalendar 定期事件