Reactjs 《与木偶演员一起反应》的代码覆盖率+;伊斯坦布尔

Reactjs 《与木偶演员一起反应》的代码覆盖率+;伊斯坦布尔,reactjs,jestjs,create-react-app,puppeteer,istanbul,Reactjs,Jestjs,Create React App,Puppeteer,Istanbul,我有一个用createreact-app创建的应用程序,还有一些用Jest+伊斯坦布尔编写的UI测试 我想获得这些UI测试的代码覆盖率。我喜欢继续使用jest,因为我已经在单元测试中使用它了 如果可能的话,我不想弹出create-react-app。但如果没有其他选择,我愿意接受 到目前为止我所尝试的: 在package.json中 "scripts": { "uitest": "react-scripts test --env=jsdom --verbose --testMatch='**

我有一个用
createreact-app
创建的应用程序,还有一些用Jest+伊斯坦布尔编写的UI测试

我想获得这些UI测试的代码覆盖率。我喜欢继续使用jest,因为我已经在单元测试中使用它了

如果可能的话,我不想弹出
create-react-app
。但如果没有其他选择,我愿意接受

到目前为止我所尝试的:

package.json中

"scripts": {
  "uitest": "react-scripts test --env=jsdom --verbose --testMatch='**/*.ui-test.{js}'",
}
如果我运行
npm运行uitest--coverage

^我认为在上面的场景中,它只捕获测试,而不是实际的应用程序

如何解决此问题?


其他失败的尝试:

1) -当我使用
create react应用程序时,不要应用

2) -显然,该功能是建议的,但被拒绝

3) -伊斯坦布尔有一个名为Puppeter to istanbul的图书馆,但不支持源地图。(有关问题,请参见链接)

4) 我还查看了Node.js Web Development一书——safaribooks上的第四版——我找到了一本关于木偶演员的有用指南,但它似乎没有涵盖代码

5) 这本书在safaribooks上提供了关于持续集成和交付的实践——其中有一节是关于Puppeter+Jest测试的,没有提到任何关于代码覆盖率的内容

6) 我尝试了
puppeter to伊斯坦布尔
->我们可以通过这种方式计算捆绑包的代码覆盖率,它不支持源地图

7) 尝试了Enselic的建议,但没有成功。当尝试推送巴贝尔插件时,它似乎在自定义预设中的推送方法上崩溃

您的
包.json
文件中似乎缺少选项

尝试在
包.json中插入如下内容:

  "jest": {
    ...
    "collectCoverageFrom": [
      "src/**/*.{js,jsx}",
      "!**/setupTests.js",
      "!**/**/*.test.js"
    ],

另外,跳过测试文件的覆盖范围也是一个好主意,因为这样会破坏整个覆盖范围。对于这种情况,请使用
collectCoverage from
数组中的code>)

嗨,我就是那个申请的人。仅供参考,我最后执行了“部分弹出”,即仅弹出build.js和依赖项(请参见),然后您可以添加自己的预设,以增加代码覆盖率(请参见),同时仍保留其他react脚本部分的优点,而不会增加您的存储空间。@Enselic好的,谢谢,我将尝试这种方法。只是古玩你做了什么来部分弹出、复制新东西,并使用git还原、复制必要的东西回来?。顺便说一句,这也是一个很好的软件(星号)。没错:为了部分弹出,我做了一个完整的、正常的弹出,然后手动解开我不想弹出的东西。很高兴听到你喜欢我的项目,谢谢你的支持:)最后我决定专注于编写更多的单元测试。我也尝试了@Enselic的建议,但没能奏效。:)我会保留这个问题,看看有没有人有更多的想法。一旦赏金被允许,我也会试试。
collectioncoverage from
不是这里的问题。我已经定义了它,它可以很好地用于单元测试。这不是针对单元测试,而是针对UI测试,所以我需要从浏览器中运行的内容获取覆盖率。好的,我明白了,您是否尝试使用官方文档方法?这不起作用,因为createreact应用程序使用webpack传输(js2js编译)js文件。我已经试过了。它为js包创建了覆盖率,但这并不有用。在github上进行了讨论,这可能有助于您从浏览器传输puppeter覆盖率的示例实现