Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[quality] test.yml never runs test:coverage:e2e — add a parallel e2e-coverage job so bundle-suite coverage has a CI run and artifact

未关闭
#459 6 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
35/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
活跃
技术栈
github-actions, node.js, typescript
领域
ci-cd, testing

调研方向

Read .github/workflows/test.yml, especially the build-test job's summary and artifact steps, then review docs/contributing.md:48 and the test:coverage:e2e script in package.json. Add a parallel reporting job that runs the script, writes the coverage summary, and uploads its artifact; done means the workflow records E2E coverage separately from unit coverage without making it a required gate.

由索引模型根据 Issue 内容生成。

描述

agent/quality blocked hive/covered-by-pr hive/hosted-available-lke648397-260827-5q9t needs-human needs-kind quality testing

Finding

build-test in .github/workflows/test.yml runs npm run test:coverage (unit), writes its summary to the job summary and uploads coverage-<sha> — but it never runs npm run test:coverage:e2e. That script (added by #274, documented in docs/contributing.md:48) is the only measurement of what the bundle acceptance suite actually exercises in src/ through the compiled bundle, and today it exists only on whoever's laptop last ran it. Consequences:

  • there is no CI run or artifact to cite as end-to-end coverage provenance, so every e2e coverage claim in this repository's issues (#241…#362 series, #424, and this lane's findings) rests on a local run that nobody else can inspect;
  • a bundle test deleted or skipped by accident drops e2e coverage silently — vitest.e2e-coverage.config.mjs sets all thresholds to 0, so nothing should fail, but nothing is even recorded either.

Verified on main@7a5872e: npm run test:coverage:e2e -- --coverage.reportsDirectory=coverage-e2e passes (452 tests) and writes coverage-e2e/{lcov.info,coverage-summary.json} (99.33% lines) without touching the unit run's coverage/. It needs neither npm run build nor the committed dist/ (pack:coverage builds .coverage-bundle/ from source). Wall time was 4m on a 32-core box, so it should not be appended to build-test serially — it belongs in its own job that runs alongside.

Recommendation

Add one job to .github/workflows/test.yml, after build-test and before the repack-dist comment block. It is reporting only — no threshold, not a required check — mirroring the existing unit summary/artifact steps and action pins:

  # End-to-end coverage: the bundle acceptance suite run against a
  # source-mapped bundle (npm run test:coverage:e2e). Reported separately from
  # the unit figure on purpose (see docs/contributing.md); it is a record, not
  # a gate, so it is not a required check.
  e2e-coverage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
        with:
          node-version-file: package.json
          cache: npm
      - run: npm ci
      - run: npm run test:coverage:e2e -- --coverage.reportsDirectory=coverage-e2e
      - name: E2E coverage summary
        if: always()
        run: |
          [ -f coverage-e2e/coverage-summary.json ] || exit 0
          # shellcheck disable=SC2016
          node -e '
            const t = require("./coverage-e2e/coverage-summary.json").total;
            const row = k => `| ${k} | ${t[k].pct}% | ${t[k].covered}/${t[k].total} |`;
            console.log("### E2E coverage (`npm run test:coverage:e2e`)\n\n| Metric | % | Covered |\n|---|---|---|");
            for (const k of ["statements","branches","functions","lines"]) console.log(row(k));
          ' >> "$GITHUB_STEP_SUMMARY"
      - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
        if: always()
        with:
          name: coverage-e2e-${{ github.sha }}
          path: coverage-e2e/
          retention-days: 14
          if-no-files-found: ignore

Optionally add coverage-e2e/ to .gitignore next to coverage/ so a local run does not show up in git status (not needed for CI).

Why this is an issue and not a PR

The only file that changes is .github/workflows/test.yml. This agent's token is minted without the workflows permission, so GitHub rejects any push that touches .github/workflows/** server-side; nothing it can push would contain the change. A human maintainer (or an agent running with the workflows permission) needs to apply the block above. The text is complete and drop-in — the same pins and summary shape build-test already uses — so applying it is mechanical.

Priority

  • Impact: medium (coverage evidence for the e2e suite becomes reproducible and attached to a run; no gate, no behaviour change)
  • Effort: low (one job, no new scripts)

Filed by quality agent (hold-gated mode)


🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: 7a5872e

— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88

主要语言
TypeScript
星标
132
派生
23
平均合并
1 天 19 小时
30 天内合并 PR
166

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

cncf/prow-github-actions 的其他 Issue

查看 cncf/prow-github-actions 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。