我使用以下方法手动检测了我的代码:
istanbul instrument src --o temp --es-modules --config=.istanbul.yml
。
这是我的.istanbul.yml:
instrumentation:
excludes: ['*.spec.js']
extensions: ['.js','.jsx']
一旦检测到,我将使用“运行于覆盖率”按钮在IntelliJ中使用Selenium运行e2e测试。
测试通过了,但最后只提供了* .e2e.js文件的覆盖率信息,而不是e2e测试正在运行的实际* .jsx文件的覆盖率信息。
有什么想法吗?
答案 0 :(得分:0)
JavaScript是在浏览器中执行的,而不是由测试运行器执行的。因此,覆盖范围仅包括测试运行者使用的代码。您需要检测前端代码,然后将其发送到浏览器并从浏览器收集覆盖范围。
这是如何与伊斯坦布尔和硒一起工作的:
- 在伊斯坦布尔使用您的前端代码 仪器命令。 (据我所知,伊斯坦布尔乐器写道 插入代码到磁盘,而istanbul Cover则执行所有操作 内存。)
而不是将原始JS代码发送到浏览器,而是发送 检测的JS代码。这里真的很棒,伊斯坦布尔 您完全不必手动修改源代码即可做到这一点 所有工作。伊斯坦布尔在浏览器中为我们完成了几乎所有工作, 自动。
运行基于Selenium的测试,并针对每个人 测试中的驱动程序,运行一个钩子,它将发送覆盖率结果 从浏览器到后端测试过程。
获得 测试过程中的覆盖数据,您可以随心所欲 它。在这种情况下,我们会将数据通过HTTP POST到服务器上 解释并显示覆盖率结果。
就是这样!
阅读全文:https://medium.com/@the1mills/front-end-javascript-test-coverage-with-istanbul-selenium-4b2be44e3e98
本文详细介绍了如何进行设置。