我有Excellent.js设置自动测试与jest和puppeteer,成功运行所有测试,can be seen on Travis CI。
但经过大量的配置调整后,我一直无法报告正确的覆盖范围。无论执行什么测试,覆盖范围都不会反映出来。
该库只包含一个JavaScript文件excellent.js
,我的jest.config.js按照coverage的指示设置:
module.exports = {
collectCoverage: true,
collectCoverageFrom: [
'src/excellent.js'
],
testURL: 'http://localhost/',
setupFiles: [
'./src/excellent.js'
]
};
这是all the tests,如果你先做npm install
,然后npm test
就会通过。
那我错过了什么?为什么我无法正确报告报道?
问题
大多数测试都使用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覆盖率报告合并。