无法使用 jest + puppeteer 获得测试覆盖率

2024-03-19

我有项目优秀.js https://github.com/vitaly-t/excellent自动测试设置jest https://github.com/facebook/jest and 木偶师 https://github.com/GoogleChrome/puppeteer,它成功运行了所有测试,其中可以在 Travis CI 上看到 https://travis-ci.org/vitaly-t/excellent/builds.

但经过大量配置调整后,我无法使其报告正确的覆盖范围。无论执行什么测试,覆盖率都根本无法反映这一点。

该库仅包含一个 JavaScript 文件excellent.js, 和我的笑话配置.js https://github.com/vitaly-t/excellent/blob/master/jest.config.js已按照覆盖范围指示进行设置:

module.exports = {
    collectCoverage: true,
    collectCoverageFrom: [
        'src/excellent.js'
    ],
    testURL: 'http://localhost/',
    setupFiles: [
        './src/excellent.js'
    ]
};

Here're 所有的测试 https://github.com/vitaly-t/excellent/tree/master/test,如果你先这样做,一切都会通过npm install, 进而npm test.

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


ISSUE

大多数测试都使用 Puppeteer,当代码在 Puppeteer 提供的浏览器中执行时,代码执行情况不会反映在 Jest 代码覆盖率报告中。

SOLUTION

所有测试都不需要 Puppeteer,因此我将它们重构为 Jest 测试。代码覆盖率现在是准确的,目前如下:

excellent.js | 63.47 | 48.7 | 57.78 | 62.96

我创建了一个进行这些更改的拉取请求 https://github.com/vitaly-t/excellent/pull/8.

附加信息

现在可以为 Puppeteer 页面生成代码覆盖率报告 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-coverage还有一个图书馆可以提供帮助在伊斯坦布尔查看它们 https://github.com/istanbuljs/puppeteer-to-istanbul但这些代码覆盖率报告是独立于 Jest 生成的。

要在 Puppeteer 页面中进行测试并将这些测试的覆盖率反映在 Jest 生成的报告中,需要将 Puppeteer 页面覆盖率报告与 Jest 覆盖率报告合并。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 jest + puppeteer 获得测试覆盖率 的相关文章

随机推荐

  • 在Android中,如何获取滚动窗格

    我想知道是否有一个小部件的作用类似于 Swing 中的 ScrollPane 实际上 我正在尝试制作一个布局 其中顶部的标题栏始终可见 在其下方有一个可变高度组件 我可以垂直滚动 同时保持标题栏可见 我确信这很容易 但我没有看到它 谢谢 维
  • Google 新闻 XML API:使用国家/地区/语言参数

    我想订阅来自 Google 新闻的 RSS XML 提要 该提要捕获以下查询 来自任何国家 用德语撰写的提及 studie 德语 学习 的文章 我在用着https news google com rss search https news
  • 无法使用角度从登录页面隐藏页眉和页脚

    这是我的问题 我无法从登录页面隐藏页眉和页脚 在这里 我在 app html 以及登录页面和主页中有一个通用的页眉和页脚 如果没有登录 它不必显示导航 但我仍然在身份验证之前获取导航 下面是我的代码
  • 如何编写库而不强迫用户使用库的 IOC 容器

    简短的问题是 给定一个图书馆warrants当应用程序使用该库时 在给定应用程序的情况下 将特定的 IOC 容器用于其内部warrants使用 IOC 容器来连接其依赖项 如果两个容器不同 它们如何才能很好地协同工作 场景是 应用程序定义了
  • 以编程方式安装证书吊销列表 (CRL)

    我需要每周下载并安装大约 50 个 CRL 并将它们安装在多台 Windows 服务器上 下载是最简单的部分 有没有办法编写 CRL 导入过程的脚本 这是我的最终来源 为公众稍微删除 但应该有效 我不会更改已接受的答案 但我确实希望这会有所
  • 为什么在适用时不隐含 constexpr? [复制]

    这个问题在这里已经有答案了 这些可能应该在不同的问题中 但它们是相关的 所以 为什么我们需要写constexpr根本吗 给定一组限制 编译器无法评估代码以查看它是否满足constexpr要求 并将其视为constexpr如果有的话 作为一个
  • Django REST Serializer 对多个嵌套关系进行 N+1 数据库调用,3 层

    我的模型有外键关系的情况 models py class Child models Model parent models ForeignKey Parent class Parent models Model pass 和我的序列化器 c
  • 使用 openXML 与 c# 和 ASP.net 在 powerpoint 中创建动态表

    我已经使用了这些链接并获得了一个工作代码 我可以在其中使用模板报告 包含占位符 并使用从数据库获取的数据生成新的 PPTX 报告 我还有 4 个占位符 需要在其中填充 4 个不同的数据表 目前 我正在使用该模板创建新幻灯片并替换文本的占位符
  • 启用DNS预解析和TCP预连接

    如何在 Chrome 浏览器 Mac OS X 中启用 DNS 预解析和 TCP 预连接 当chrome dns页面显示 DNS 预解析和 TCP 预连接已禁用 它位于高级设置中 称为 预测网络操作以提高页面加载性能
  • PostBackUrl 与 Response.Redirect

    PostBackUrl Response Redirect 和 Server Transfer 之间有什么区别 在什么情况下我们需要遵循什么方法 PostbackUrl 更改表单的action属性 因此初始页面不会更改 但是当用户发布表单时
  • 计算浮点数中“.”后面的位数?

    这是一个面试问题 后面的位数怎么计算 以浮点数表示 例如如果给定 3 554 输出 3 43 000 输出 0 我的代码片段在这里 double no 3 44 int count 0 while no int no count no no
  • Postgresql 适配器 (pg):无法连接到服务器

    我每次运行 Rails 应用程序时都会收到此错误 它无法连接到我的本地 Postgresql Users leonardo rvm gems ruby 1 9 3 p362 gems activerecord 3 2 11 lib acti
  • 我应该如何将返回非通用任务的函数转换为 ValueTask?

    我正在编写一些代码 它在内存中构建一个缓冲区 然后将其清空到TextWriter当缓冲区填满时 大多数时候 角色会直接进入缓冲区 同步 但偶尔 每 4kb 一次 我需要调用TextWriter WriteAsync In the Syste
  • 如何使用 matlab 中的电子表格制作 3D 平面图

    pointA 9 62579 15 7309 3 3291 pointB 13 546 25 6869 3 3291 pointC 23 502 21 7667 3 3291 pointD 19 5818 11 8107 3 3291 po
  • mintty (Git Bash for Windows) 中的 /usr 文件夹在哪里?

    Windows 上的 git 新手 安装最新版本的 git 后 来自适用于 Windows 的 git https gitforwindows org 网站 您可以输入cd usr bin在标准 Linux 用法中 但它到底在我的 Wind
  • ListView 内的RelativeLayout 边距不显示

    我目前正在使用一个 ListView 我用带有relativelayout的自定义适配器填充它 问题是相对布局不显示边距 这是我的相对布局声明
  • 具有自定义格式的 XML 编写器

    我需要创建一个人类可读的 XML 文件 XmlWriter 似乎对此几乎是完美的 但我想在我想要的地方插入换行符或一般情况下的自定义空白 两者都不WriteRaw http msdn microsoft com library 0755yt
  • Android Studio布局大小文件夹

    我正在尝试为 1080dp 和其他使用创建不同的布局 layout sw1080dp 文件夹 但似乎 android studio 完全忽略它并从默认布局文件夹加载 我尝试了另一种方法 使用values sw1080dp 设置不同的尺寸 但
  • 提供程序:命名管道提供程序,错误:40 – 无法打开与 SQL Server 的连接。

    我开发了一个依赖于 SQL Server 数据库的 net 应用程序 该数据库位于用于开发应用程序的本地计算机上 当我将数据库移动到远程计算机并更改连接字符串时 出现以下错误 连接 SQL Server 2005 时建立与服务器的连接时发生
  • 无法使用 jest + puppeteer 获得测试覆盖率

    我有项目优秀 js https github com vitaly t excellent自动测试设置jest https github com facebook jest and 木偶师 https github com GoogleCh