一、安装必要依赖

Vitest 使用 c8 来生成覆盖率报告。确保项目已经安装以下依赖:

pnpm add -D vitest c8
# or npm / yarn

二、Vitest 配置覆盖率收集

vitest.config.ts 中加入如下配置:

import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    environment: 'happy-dom',
    coverage: {
      provider: 'v8',
      include: ['src/**/*.ts'],
    },
  },
})

三、增加正则匹配

本质上是使用 /All files\s+\|\s*(\d+\.?\d*)\s*\|/ 正则匹配 test 结果中的 覆盖率

stages:
  - test

test:
  stage: test
  image: node:22-alpine
  script:
    - pnpm i
    - pnpm test
  coverage: '/All files\s+\|\s*(\d+\.?\d*)\s*\|/' # 增加这一行,目的是去匹配 test 结果中的
  artifacts:
    paths:
      - coverage                                  # 增加这一行,将 coverage 增加到 artifacts 中

结果

Tips

可以使用 https://gitlab.com/{群组名}/{你的项目名}/badges/main/coverage.svg 作为你的徽标