无法通过jest + puppeteer获得测试覆盖率

问题描述 投票:4回答:1

我有Excellent.js设置自动测试与jestpuppeteer,成功运行所有测试,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就会通过。

那我错过了什么?为什么我无法正确报告报道?

jestjs puppeteer
1个回答
5
投票

问题

大多数测试都使用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覆盖率报告合并。

© www.soinside.com 2019 - 2024. All rights reserved.