有没有办法以 junit.xml 格式生成 Jest / Istanbul 覆盖率报告

Is there a way to generate Jest / Istanbul coverage report in junit.xml format

我想使用 Gitlab CI 在合并请求中跟踪/嵌入覆盖率分析。 gitlab-ci.yml artifacts:reports:junit 配置选项似乎适合这个任务。但是,这需要覆盖率 输出为 junit.xml 格式。

我找不到合适的设置来输出这种格式的 coverage。我也找不到将 lcov/json/clover 转换为 junit.xml 的工具。

可以用jest-junit reporter插件来完成。 https://github.com/jest-community/jest-junit

yarn add --dev jest-junit

然后在本地执行这个看看是否有效

yarn test --colors --coverage --reporters=default --reporters=jest-junit

你会在根目录中看到一个 junit.xml 文件。

像这样配置您的 .gitlab-ci.yml 然后在 Gitlab 中查看输出:

test:
  stage: test
  coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
  artifacts:
    reports:
      junit: junit.xml
  script:
    - yarn test --colors --coverage --reporters=default --reporters=jest-junit

哦,将 coverage/ 文件夹和 junit.xml 添加到 .gitignore 这样它们就不会添加到 git 存储库中。

这一切似乎在 Create React App 项目中也能正常工作