【问题标题】:Can't get test coverage with jest + puppeteer无法使用 jest + puppeteer 获得测试覆盖率
【发布时间】:2018-08-01 03:39:20
【问题描述】:

我有项目Excellent.js 设置用于使用jestpuppeteer 进行自动测试,它成功运行了所有测试,其中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,则全部通过。

那么我错过了什么?为什么我无法正确报告覆盖率?

【问题讨论】:

  • 伟大的图书馆名称,顺便说一句????
  • @brian-lives-outdoors 谢谢! :) 我可能需要到星期一才能测试和评估您的答案。非常感谢!!!!

标签: jestjs puppeteer


【解决方案1】:

问题

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

【讨论】:

  • 这是一个很大的努力,谢谢!将所有这些测试包集成在一起是一项艰巨的任务。它并没有变得更容易。我很高兴我至少可以坚持其中之一 - jest
  • 欢迎您,很高兴它对您有所帮助!是的,测试确实清理得很好,删除一堆代码和依赖项总是感觉很棒?祝项目好运!
  • @BrianAdams 为什么jestjs.io/docs/en/puppeteer#__docusaurus 解释:如果您的测试使用 page.$eval、page.$$eval 或 page.evaluate,则目前无法使用 Puppeteer 为测试文件生成代码覆盖率传递的函数在 Jest 的范围之外执行。
  • @BrianAdams 是否可以使用 Jest 复制拖放功能?
猜你喜欢
  • 2017-01-05
  • 2015-04-01
  • 2019-06-11
  • 2020-06-03
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2019-11-06
相关资源
最近更新 更多