Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đã đóng
#459 6 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Một pull request liên quan đã được merge.

  • #488 của @mrbobbytables — đã merge

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
github-actions, node.js, typescript
Lĩnh vực
ci-cd, testing

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
TypeScript
Star
132
Fork
23
Merge trung bình
1 ngày 18 giờ
Pull request đã merge (30 ngày)
183

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của cncf/prow-github-actions

Tất cả issue của cncf/prow-github-actions

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.