我有一个项目Excellent.js设置为使用jest和puppeteer进行自动测试,该项目成功运行了can be seen on Travis CI的所有测试。
但是在进行大量配置调整后,我无法使其报告正确的覆盖范围。无论执行什么测试,覆盖范围都根本无法反映出来。
该库仅包含一个JavaScript文件excellent.js
,而我的jest.config.js则按照说明进行设置:
module.exports = {
collectCoverage: true,
collectCoverageFrom: [
'src/excellent.js'
],
testURL: 'http://localhost/',
setupFiles: [
'./src/excellent.js'
]
};
这里是all the tests,如果您先进行npm install
,然后再进行npm test
,所有这些都将通过。
那我想念什么?为什么我无法正确报告承保范围?
答案 0 :(得分:4)
问题
大多数测试都使用Puppeteer,并且在Puppeteer提供的浏览器中执行代码时,Jest代码覆盖率报告中未反映该代码执行。
解决方案
所有测试都不需要Puppeteer,因此我将它们重构为Jest测试。现在,代码覆盖范围是准确的,并且当前为:
excellent.js | 63.47 | 48.7 | 57.78 | 62.96
我创建了一个pull request with these changes。
其他信息
现在可以generate code coverage reports for Puppeteer pages,并且有一个库可以帮助view them in Instanbul,但是这些代码覆盖率报告是独立于Jest生成的。
要在Puppeteer页面中进行测试并使这些测试的覆盖范围反映在Jest生成的报告中,需要将Puppeteer页面覆盖率报告与Jest覆盖率报告合并。