Skip to content

Added Codecov coverage gates, type-aware linting, and optional mutation testing - #57

Merged
CodyCBakerPhD merged 12 commits into
mainfrom
claude/codecov-coverage-quality-gates-9014mf
Jul 28, 2026
Merged

Added Codecov coverage gates, type-aware linting, and optional mutation testing#57
CodyCBakerPhD merged 12 commits into
mainfrom
claude/codecov-coverage-quality-gates-9014mf

Conversation

@CodyCBakerPhD

@CodyCBakerPhD CodyCBakerPhD commented Jul 28, 2026

Copy link
Copy Markdown
Member

Strengthened the deterministic quality gates around the existing Vitest/Playwright setup, keeping the app fully static and backend-free.

Coverage / Codecov

  • Coverage now spans all of src/ (was src/lib/ only) with text/lcov/json reporters and ratchet thresholds (statements 30, branches 25, functions 34, lines 30) set just below current levels, so regressions fail locally before any upload.
  • .github/.codecov.yml is unchanged from main. The upload step now passes files: ./coverage/lcov.info explicitly; kept the already-in-use codecov-action@v5.
  • The quality gates moved into their own fail-fast Quality workflow (typecheck, lint, coverage, Codecov upload, all via npm ci); the Test workflow keeps just the Playwright integration job, so browser runs never block the upload. Chromatic workflows unchanged.

Quality gates

  • ESLint is now type-aware (recommended-type-checked over src/ and configs/ via projectService) plus no-floating-promises, no-misused-promises, no-explicit-any, no-unnecessary-condition, await-thenable, complexity (15), and max-depth (4). All 19 surfaced violations were fixed for real (no rules downgraded to warn); the only inline disable is one justified webkitGetAsEntry browser-compat guard in dropzone.ts. ESLint/typescript-eslint were added as pinned devDependencies with a new npm run lint script.
  • The pre-commit eslint hook is now a repo: local hook running the repo's own eslint from node_modules, so pre-commit and npm run lint share one environment. An isolated hook environment cannot see the app's dependency types (TypeScript ignores NODE_PATH), which is how pre-commit.ci's run produced a wrong auto-fix (reverted here); pre-commit.ci skips the hook and the npm run lint CI step enforces linting.
  • Optional Stryker mutation testing: npm run test:mutation with config at configs/stryker.config.json. Not a CI gate (slow); mutation score, not raw coverage, is the real signal of test quality.
  • Version bumped to 1.0.6 with CHANGELOG entries.

Manual maintainer step required: re-link Codecov after the repo rename
Uploads currently land on the old ember-uploader identity; the CI log says "results will be available at app.codecov.io/github/brain-bbqs/ember-uploader/commit/...". That is why Codecov has posted no PR comments or statuses since the rename to bbqs-uploader (last seen on #30). To fix:

  1. Log in at app.codecov.io and re-sync the brain-bbqs org so Codecov picks up the rename.
  2. Open the bbqs-uploader repo page in Codecov, copy its upload token from Settings.
  3. Update the CODECOV_TOKEN secret in this repo's GitHub settings with that token.
  4. Re-run the Quality workflow; the upload log should then point at .../bbqs-uploader/commit/... and PR comments/statuses will resume.

🤖 Generated with Claude Code

https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9

claude and others added 2 commits July 28, 2026 01:50
@chromatic-com

chromatic-com Bot commented Jul 28, 2026

Copy link
Copy Markdown

Tip

All tests passed and all changes approved!

🟢 UI Tests: bbqs-uploader-storybook: 28 tests unchanged
🟢 UI Review: bbqs-uploader-storybook: 30 stories published -- no changes
Storybook icon Storybook Publish: bbqs-uploader-storybook: 30 stories published

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-28 03:04 UTC

@CodyCBakerPhD CodyCBakerPhD self-assigned this Jul 28, 2026
@chromatic-com

chromatic-com Bot commented Jul 28, 2026

Copy link
Copy Markdown

Tip

All tests passed and all changes approved!

🟢 UI Tests: bbqs-uploader-playwright: 2 tests unchanged
🟢 UI Review: bbqs-uploader-playwright: 2 tests published -- no changes
Storybook icon Test suite publish: bbqs-uploader-playwright: 2 tests published

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
Comment thread README.md Outdated
… pre-commit.ci, dropped npm ci README note per review

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
@CodyCBakerPhD CodyCBakerPhD changed the title Added Codecov coverage gates, type-aware linting, CodeQL, and optional mutation testing Added Codecov coverage gates, type-aware linting, and optional mutation testing Jul 28, 2026
CodyCBakerPhD and others added 7 commits July 27, 2026 22:06
Signed-off-by: Cody Baker <51133164+CodyCBakerPhD@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 7.69231% with 48 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/lib/etag-worker.ts 0.00% 25 Missing ⚠️
src/ui/processFile.ts 0.00% 9 Missing ⚠️
src/main.ts 0.00% 8 Missing ⚠️
src/workers/etag.worker.ts 0.00% 3 Missing ⚠️
src/ui/dropzone.ts 0.00% 2 Missing ⚠️
src/lib/upload-pipeline.ts 0.00% 1 Missing ⚠️

Impacted file tree graph

@@             Coverage Diff             @@
##             main      #57       +/-   ##
===========================================
- Coverage   56.32%   32.50%   -23.83%     
===========================================
  Files          16       26       +10     
  Lines         632     1529      +897     
  Branches      130      289      +159     
===========================================
+ Hits          356      497      +141     
- Misses        264     1032      +768     
+ Partials       12        0       -12     
Files with missing lines Coverage Δ
src/lib/checksum-cache.ts 100.00% <100.00%> (+2.47%) ⬆️
src/lib/etag.ts 94.11% <100.00%> (+5.02%) ⬆️
src/lib/upload-pipeline.ts 1.85% <0.00%> (+1.85%) ⬆️
src/ui/dropzone.ts 0.00% <0.00%> (ø)
src/workers/etag.worker.ts 0.00% <0.00%> (ø)
src/main.ts 0.00% <0.00%> (ø)
src/ui/processFile.ts 0.00% <0.00%> (ø)
src/lib/etag-worker.ts 0.00% <0.00%> (ø)

... and 15 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012RDb6yErzs3dYMFrEJhfH9
@CodyCBakerPhD
CodyCBakerPhD merged commit 8dfc056 into main Jul 28, 2026
16 checks passed
@CodyCBakerPhD
CodyCBakerPhD deleted the claude/codecov-coverage-quality-gates-9014mf branch July 28, 2026 03:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants