我在GitLab CI中使用代码覆盖进行jest测试,GitLab在gitlab中捕获了跑步者stdout的百分比。
jest --coverage
在stdout中生成覆盖,gitlab使用/All files[^|]*\|[^|]*\s+([\d\.]+)/
regexp捕获它,但是当我运行时
jest --coverage --json --outputFile=xyz.json
遗憾的是,jest不会将代码覆盖率打印到stdout。
当--json
参数被赋予jest时,如何从jest中获取stdout中的代码覆盖率?
jest version : v22.4.3
与jest-cli相同
答案 0 :(得分:4)
以下配置将使GitLab解释Jest生成的覆盖率报告:
stages:
- test
Unit tests:
image: node:10.15.0
stage: test
script:
- jest --coverage
coverage: /All\sfiles.*?\s+(\d+.\d+)/
GitLab上有一个open issue,其中包含使用Jest(Create React App使用)生成的覆盖率报告的正确正则表达式。
答案 1 :(得分:0)
我不熟悉Jest,但是如果要创建JSON,最简单的方法就是简单地cat
JSON然后相应地更改正则表达式
答案 2 :(得分:0)
我正在使用以下正则表达式来解析来自 Jest for Gitlab 的 text-summary
覆盖率报告:^(?:Statements|Branches|Functions|Lines)\s*:\s*([^%]+)
请注意,Gitlab 只会考虑最后一场比赛。所以上面可以写成^Lines\s*:\s*([^%]+)
。我提供了完整的示例,以便您可以选择最适合您的项目的示例。
“文本摘要”报告在 StdOut 中如下所示:
=============================== Coverage summary ===============================
Statements : 80.49% ( 2611/3244 )
Branches : 65.37% ( 923/1412 )
Functions : 76.48% ( 582/761 )
Lines : 80.44% ( 2583/3211 )
================================================================================
确保您已将 text-summary
作为报道记者包含在您的 jest.config.js
中:
coverageReporters: ['text-summary', 'lcov', 'cobertura'],