Jak*_* He 8 e2e-testing cypress
是否可以将赛普拉斯浏览器日志和命令日志重定向或捕获到输出?
我在这个主题上读了一些赛普拉斯的github 问题.但我不知道如何使它发挥作用.
基本上,我想在无头非GUI模式下捕获所有赛普拉斯GUI命令日志.如果我可以包含浏览器控制台日志会更好.目的是了解测试失败时发生的情况.
我使用teamcity作为ci.这是我的构建日志的示例.我想在这里看到所有命令日志.实际上,在服务器端运行的任何console.log cy.task都显示在构建日志中.跑步cy.task('log',message)太手动了.有更聪明的方法吗?
[09:49:08][Step 1/1] 2 of 4: new actions (52s)
[09:50:00][Step 1/1] 3 of 4: new actions (52s)
[09:50:53][Step 1/1] 4 of 4: new actions (53s)
[09:51:47][Step 1/1] (Results)
[09:51:47][Step 1/1]
[09:51:47][Step 1/1] ???????????????????????????????????????
[09:51:47][Step 1/1] ? Tests: 8 ?
[09:51:47][Step 1/1] ? Passing: 8 ?
[09:51:47][Step 1/1] ? Failing: 0 ?
[09:51:47][Step 1/1] ? Pending: 0 ?
[09:51:47][Step 1/1] ? Skipped: 0 ?
[09:51:47][Step 1/1] ? Screenshots: 0 ?
[09:51:47][Step 1/1] ? Video: true ?
[09:51:47][Step 1/1] ? Duration: 3 minutes, 38 seconds ?
[09:51:47][Step 1/1] ? Estimated: 1 minute, 8 seconds ?
[09:51:47][Step 1/1] ? Spec Ran: action/action_spec.js ?
[09:51:47][Step 1/1] ???????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
M. *_*tin 30
将环境变量设置ELECTRON_ENABLE_LOGGING为1将导致所有 Chrome 内部日志记录打印到控制台。
ELECTRON_ENABLE_LOGGING=1 npx cypress run
Run Code Online (Sandbox Code Playgroud)
ELECTRON_ENABLE_LOGGING将 Chrome 的内部日志记录打印到控制台。
启用此功能后,除了捕获任何现有日志记录之外,还允许您使用以下命令在测试中手动登录console.log:
console.log('Response JSON: ' + json)
Run Code Online (Sandbox Code Playgroud)
Jos*_*ica 20
从赛普拉斯3.0.0开始,您可以cy.task()直接访问节点并输出到节点控制台.来自文档:
// in test
cy.task('log', 'This will be output to the terminal')
Run Code Online (Sandbox Code Playgroud)
// in plugins file
on('task', {
log (message) {
console.log(message)
return null
}
})
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参见此处
我不知道如何直接将赛普拉斯日志镜像到控制台,但这至少是一种可行的替代方案.
Pra*_*tel 10
供参考:
Cypress 社区将提供本机支持,这样我们就不必采取任何解决方法来在非 GUI(无头)CLI 上打印日志。
持续存在的问题: https: //github.com/cypress-io/cypress/issues/448包括对 3 个现有解决方法的参考https://github.com/cypress-io/cypress/issues/448#issuecomment-613236352
扩展@Joshua-wade的答案,您可以覆盖cy.log将对它的所有调用重定向到日志任务。就像下面这样:
Cypress.Commands.overwrite('log', (subject, message) => cy.task('log', message));
注意:这样做有一个小缺点:当您使用测试运行器运行测试时,LOG my message您将看到TASK log, my message. 但恕我直言,它可以忽略不计。