-
Notifications
You must be signed in to change notification settings - Fork 254
Expand file tree
/
Copy pathcodecov.yml
More file actions
82 lines (78 loc) · 2.61 KB
/
Copy pathcodecov.yml
File metadata and controls
82 lines (78 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Codecov configuration for cursor-boston.
#
# Two things this file does:
#
# 1. Sets explicit project + patch coverage targets so every PR gets
# a meaningful Codecov status check. Without this file Codecov
# runs with the defaults ("auto" target, 1% threshold), which
# silently allows large regressions.
#
# 2. Tells Codecov where the report lives + what to ignore so the
# PR comment is clean (no test files, no generated artifacts).
#
# Reference numbers (2026-05-23 develop tip):
# - Project coverage: ~83% (Codecov strict hits/lines)
# - Jest internal: ~90% stmts / ~81% branches (counts partials as hits)
coverage:
status:
project:
default:
# Target is "auto" — we ratchet against the parent commit
# rather than a hard number so the floor moves with us.
target: auto
# Allow tiny regressions (0.2%) so noise from rounding /
# smoke-import order doesn't fail every PR.
threshold: 0.2%
# Don't fail before Codecov has processed both the PR and
# base commit; flaky uploads otherwise red-X the check.
if_ci_failed: error
only_pulls: false
patch:
default:
# New / changed lines must be at least 80% covered.
# Matches the spirit of the OpenSSF Gold attestation (90/80
# statements/branches) while staying achievable for small
# config-only PRs.
target: 80%
threshold: 0%
if_ci_failed: error
# PR comment: only attach if coverage changed or a check failed.
# Keeps the noise down on docs-only / .md PRs.
comment:
layout: "header, diff, flags, components, files"
behavior: default
require_changes: true
require_base: false
require_head: true
# Files Codecov shouldn't blame coverage on.
ignore:
- "**/__tests__/**"
- "**/__mocks__/**"
- "**/*.test.ts"
- "**/*.test.tsx"
- "**/*.d.ts"
- "**/node_modules/**"
- "coverage/**"
- ".next/**"
- "scripts/**" # one-off operational scripts; not product code
- "e2e/**" # Playwright tests; not unit-tested code paths
- "fuzz/**" # jazzer.js harnesses; coverage is reported separately
# Component groupings show up in the PR comment so big regressions in
# one area are obvious.
component_management:
default_rules:
statuses:
- type: project
target: auto
threshold: 0.5%
individual_components:
- component_id: app
paths: [app/**]
- component_id: api
paths: [app/api/**]
- component_id: components
paths: [components/**]
- component_id: lib
paths: [lib/**]
- component_id: game
paths: [app/game/**, lib/game/**]