我在GitLab CI中运行代码覆盖率的jest测试,GitLab从gitlab中的运行者的stdout中获取百分比。jest --coverage
在stdout中生成覆盖率,gitlab使用/All files[^|]*\|[^|]*\s+([\d\.]+)/
regexp捕获它,但是当我运行jest --coverage --json --outputFile=xyz.json
时,jest没有将代码覆盖率打印到stdout。
当给jest提供--json
参数时,我可以做些什么来从jest获得stdout中的代码覆盖率?jest version : v22.4.3
与jest-cli相同
3条答案
按热度按时间3bygqnnd1#
下面的配置可以让GitLab解释Jest生成的覆盖率报告:
GitLab中存在一个未决问题,其中包含使用Jest(Create React App使用的)生成的覆盖率报告的正确正则表达式。
np8igboo2#
我使用下面的正则表达式来解析来自Jest for Gitlab的
text-summary
覆盖率报告:/^(?:Statements|Branches|Functions|Lines)\s*:\s*([^%]+)/
注意Gitlab只会考虑最后一个匹配,所以上面的例子可以写成
/^Lines\s*:\s*([^%]+)/
,我提供了完整的例子,这样你就可以选择对你的项目最有意义的一个。从Gitlab 15开始,您需要在
.gitlab-ci.yml
文件中为coverage
键提供这个正则表达式,而不再在Gitlab项目设置中提供。“文本摘要”报告在StdOut中如下所示:
确保您已将
text-summary
作为coverage reporter包含在jest.config.js
中:iq0todco3#
我不熟悉Jest,但是如果您要创建JSON,最简单的方法是对JSON进行
cat
,然后相应地更改正则表达式