Skip to main content

check-coverage

Run test coverage for all packages changed on this branch and identify uncovered code. Always invoke before writing a PR description, after adding new code, or when a PR receives coverage-related review feedback. Prevents CI coverage failures and catches untested code before reviewers do.

Datos de origen

Repositorio
eclipse-che/che-dashboard
Última actividad en el origen
24 de junio de 2026 a las 18:09
Idioma detectado de SKILL.md
inglés
Estrellas
19
Forks
67

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
check-coverage
description
Run test coverage for all packages changed on this branch and identify uncovered code. Always invoke before writing a PR description, after adding new code, or when a PR receives coverage-related review feedback. Prevents CI coverage failures and catches untested code before reviewers do.
# Check Test Coverage ## Coverage thresholds (enforced by CI) | Package | Statements | Branches | Functions | Lines | |---|---|---|---|---| | `common` | 99% | 99% | **100%** | 99% | | `dashboard-frontend` | 92% | 88% | 85% | 92% | | `dashboard-backend` | 86% | 80% | 86% | 86% | ## Workflow ### 1. Identify changed packages ```bash git diff origin/main..HEAD --name-only | grep "^packages/" | cut -d/ -f2 | sort -u ``` Only run coverage for packages with changed files. ### 2. Run coverage ```bash yarn workspace @eclipse-che/common test --coverage --no-cache yarn workspace @eclipse-che/dashboard-frontend test --coverage --no-cache yarn workspace @eclipse-che/dashboard-backend test --coverage --no-cache ``` Look for the `Coverage summary` block at the end: ``` Statements : 91.5% ( 1001/1094 ) ← must be ≥ threshold Branches : 87.2% ( 106/122 ) Functions : 84.6% ( 22/26 ) Lines : 91.5% ( 1001/1094 ) Jest: "global" coverage threshold for statements (92%) not met: 91.5% ``` All thresholds met → go to step 5. ### 3. Find uncovered code ```bash yarn workspace @eclipse-che/<package> test --coverage --no-cache \ --coverageReporters=text 2>&1 | grep "| " | \ awk -F'|' '{if ($3+0 < 90 || $4+0 < 85 || $5+0 < 85) print}' | head -20 ``` Also check whether changed source files have corresponding test files: ```bash # Changed source files (not tests) git diff origin/main..HEAD --name-only | grep "^packages/<pkg>/src" | grep -v "__tests__\|spec\|mock" # Expected test location: src/<path>/__tests__/<name>.spec.ts ``` ### 4. Write missing tests For each uncovered file or function: 1. Read the source file 2. Create or update `__tests__/<name>.spec.ts` 3. Cover happy path, error path, edge cases, and both sides of every branch Iterate quickly with `--testPathPatterns`: ```bash yarn workspace @eclipse-che/<package> test \ --testPathPatterns "<FileName>" --coverage --no-cache ``` ### 5. Verify thresholds ```bash yarn workspace @eclipse-che/<package> test --coverage --no-cache 2>&1 | tail -10 ``` Must show no `"coverage threshold … not met"` lines. Do not proceed to PR description until every changed package passes. ## Common patterns for untested code ### New utility function ```typescript it('returns X for valid input', () => { ... }); it('throws for invalid input', () => { ... }); it('handles empty array', () => { ... }); ``` ### New React component ```typescript it('renders without crashing', () => { renderComponent(); }); it('shows error state when prop is true', () => { ... }); it('calls callback on button click', () => { ... }); ``` ### New async action / Redux thunk ```typescript it('dispatches success on 200', async () => { ... }); it('dispatches error on network failure', async () => { ... }); ``` ### New API route (backend) ```typescript it('returns 200 with correct body', async () => { ... }); it('returns 403 when not authorized', async () => { ... }); ``` ## What NOT to test (excluded from coverage) - `src/**/__tests__/**` — test files themselves - `src/**/*.d.ts` — type declarations - `src/**/*.config.ts` — config files - `src/index.tsx`, `src/App.tsx`, `src/Routes.tsx` — frontend entry points - `src/localRun/**`, `src/utils/**`, `src/server.ts` — backend exclusions ## Note on snapshots Updating snapshots (`--updateSnapshot`) does not improve branch/function coverage. Add behavioral tests alongside snapshot updates when coverage is at risk.
Ver en GitHub