赛普拉斯管道console.log和命令日志输出

时间:2018-08-29 05:48:22

标签: e2e-testing cypress

是否可以重定向或捕获赛普拉斯浏览器日志和命令日志以输出?

我阅读了有关此主题的赛普拉斯github issues。但是我不知道如何使它起作用。

基本上,我想以无头非GUI模式捕获所有Cypress GUI命令日志。如果我可以包括浏览器控制台日志,那就更好了。目的是了解测试失败时发生的情况。

我将teamcity用作ci。这是我的构建日志的示例。我也想在这里查看所有命令日志。实际上,在服务器端使用cy.task运行的任何console.log都会显示在构建日志中。运行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]   └─────────────────────────────────────┘

4 个答案:

答案 0 :(得分:11)

从赛普拉斯3.0.0开始,您可以使用cy.task()直接访问节点并输出到节点控制台。从文档中:

// in test
cy.task('log', 'This will be output to the terminal')
// in plugins file
on('task', {
  log (message) {
    console.log(message)
    return null
  }
})

有关更多信息,请参见here

我不知道将Cypress日志直接镜像到控制台的方法,但这至少是一个可行的选择。

答案 1 :(得分:2)

仅供参考:

Cypress社区将提供本机支持,因此我们无需执行任何解决方法即可在非GUI(无头)CLI上打印日志。

正在进行的问题:https://github.com/cypress-io/cypress/issues/448

答案 2 :(得分:1)

扩展@ Joshua-wade的答案,您可以覆盖cy.log以将对其的所有调用重定向到日志任务。如下所示:

Cypress.Commands.overwrite('log', (subject, message) => cy.task('log', message));

注意:这有一个小缺点:当您使用Test Runner运行测试时,您将看到LOG my message,而不是在命令日志中看到TASK log, my message。但是恕我直言,这可以忽略不计。

答案 3 :(得分:0)

ELECTRON_ENABLE_LOGGING 环境变量设置为 1 将导致所有 Chrome 内部日志记录打印到控制台。

ELECTRON_ENABLE_LOGGING=1 npx cypress run
<块引用>

ELECTRON_ENABLE_LOGGING

将 Chrome 的内部日志打印到控制台。

启用此功能后,除了捕获任何现有日志记录外,您还可以使用 console.log 在测试中手动登录:

console.log('Response JSON: ' + json)