Files
freeCodeCamp/.github/instructions/testing.instructions.md

2.6 KiB

applyTo
applyTo
**/*.{ts,tsx,js,jsx}

Test Coverage Review Instructions

Review code changes for adequate test coverage using freeCodeCamp's testing conventions.

Testing Framework Reference

Location Framework File Pattern Notes
api/ Vitest *.test.ts Co-located with source
client/ Vitest *.test.{ts,tsx} Co-located with source
e2e/ Playwright *.spec.ts Dedicated directory

When to Flag Missing Tests

Comment on missing tests if ALL of these are true:

  • PR modifies functional code (bug fix or new feature)
  • No corresponding test additions or modifications exist
  • Changes are not test-only or config-only

Examples Requiring Tests

  • New utility functions in api/src/utils/ or client/src/utils/
  • New API route handlers in api/src/routes/
  • New React components with logic in client/src/components/
  • Bug fixes that change application behavior
  • New validation logic or data transformations

When NOT to Flag

Do not comment on test coverage if:

  • Changes are documentation, configuration, or non-functional
  • PR already includes appropriate test coverage
  • Changes are to test files themselves
  • Changes are trivial:
    • Import reorganization
    • Formatting changes
    • Type-only changes (interfaces, type definitions)
    • Comment updates
  • Changes are in areas without existing test patterns:
    • Curriculum markdown files
    • Configuration files
    • Build scripts

Detecting Outdated Tests

Flag if existing tests may be outdated:

  • Test file exists for modified source but doesn't cover the changed functionality
  • Test assertions reference behavior that is being changed
  • Mock data doesn't reflect new data structures or API responses
  • Test descriptions no longer match actual test behavior

Example Comment for Outdated Tests

Tests in `src/utils/validate.test.ts` need updates for new validation rules.

Comment Format

Missing Tests

Brief, actionable feedback only:

Missing tests for `src/utils/validate.ts`:
- Valid input case
- Invalid input error
- Empty string edge case

Sufficient Coverage

DO NOT COMMENT. Silence means approval.

Outdated Tests

Tests in `[test file]` need updates for `[source file]` changes:
- [specific change]

Test Quality Indicators

When tests are present, briefly verify:

  • Tests cover the happy path
  • Tests cover at least one error/edge case
  • Test descriptions are meaningful (not just "test 1", "test 2")
  • Mocks are appropriate (not mocking the thing being tested)

Do not block PRs for test style preferences if coverage is adequate.