如何将赛普拉斯的测试运行程序的“控制台日志”(左侧)保存到文件中

Posted

技术标签:

【中文标题】如何将赛普拉斯的测试运行程序的“控制台日志”(左侧)保存到文件中【英文标题】:How do I save Cypress's testrunner's "console log" (left hand side) to a file 【发布时间】:2021-12-08 17:05:11 【问题描述】:

我想将 TestRunner 左侧的数据保存到文本文件(json、纯文本或任何类型的文本)。

我觉得这应该很容易,我只是错过了一些东西。但是,我找不到任何东西来解释这一点。我已经检查了另一个 S.O.问题:Cypress pipe console.log and command log to output,它引用了这个currently open issue——但这似乎集中在收集浏览器控制台日志。

我什至尝试了在讨论该未决问题时建议的解决方法之一,cypress-log-to-output - 但是在我启动测试的终端中放置了 ton 的输出。我确实尝试将额外的输出与 TestRunner 左侧相对较少的条目相关联,但没有看到任何可以匹配它们的内容。

我只是希望得到一个看起来像这样的文本文件(每个条目可能有一些细节):

1 visit /
(xhr) GET 200 /todos
2 wait @todos
(req) GET /todos Received todos
...

或者也许是 JSON。

我的动机来自必须为我们的 CI 编写 Cypress 测试,该测试将测试一个非常古老的基于 AjaxSwing 的应用程序,该应用程序大量使用 XHR 请求,并且每次测试运行的 XHR 请求数量可能不同(有时 8 ,有时 12 只是为了加载第一页)。

AjaxSwing 应用程序没有改变,所以我必须尽可能地解决这个问题。所以我想查看一个完整的文本文件,其中包含来自 TestRunner 左侧的所有信息。也许甚至可以比较单独的运行,看看我是否可以发现一些“标题”或“正文”值,我可以使用这些值来区分要等待的正确 XHR 请求。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

使用log:added 事件的一种方法

// top of spec
const logs = []
Cypress.on('log:added', (log) => 
  const message = `$log.consoleProps.Command: $log.message`
  logs.push(message)
)

it('writes to logs', () => 

  ...  // some commands that log

  cy.writeFile('logs.txt', logs)
);

【讨论】:

以上是关于如何将赛普拉斯的测试运行程序的“控制台日志”(左侧)保存到文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过将赛普拉斯指定为项目来运行特定的测试文件夹?

如何将环境变量添加到服务器,由赛普拉斯测试运行?

赛普拉斯 - 如何按顺序运行测试文件

赛普拉斯与SystemJS

赛普拉斯可以运行在赛普拉斯文件夹之外导入的测试文件吗?

访问新网址赛普拉斯