如何将赛普拉斯的测试运行程序的“控制台日志”(左侧)保存到文件中
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)
);
【讨论】:
以上是关于如何将赛普拉斯的测试运行程序的“控制台日志”(左侧)保存到文件中的主要内容,如果未能解决你的问题,请参考以下文章