Files
cosmos-explorer/.github/skills/run-unit-tests/SKILL.md
jawelton74 b483118b99 Copilot instructions and build/test skills (#2444)
* Add copilot instructions and skills for build and tests.

* Add dev-server skill.

* Auth Util changes to fix Entra login while running from copilot.

* Fix lint issue.
2026-04-06 15:51:54 -07:00

2.5 KiB

name, description, allowed-tools
name description allowed-tools
run-unit-tests Run unit tests for the Cosmos Explorer project. Use this skill when asked to run tests, check test results, or debug test failures. shell

Test Skill

Use the following commands to run unit tests for the Cosmos Explorer project.

Pre-Test: Check Dependencies

Before running tests, check whether npm install needs to be run:

if [ ! -d node_modules ] || [ package.json -nt node_modules ] || [ package-lock.json -nt node_modules ]; then
  npm install
fi

On Windows PowerShell:

if (-not (Test-Path node_modules) -or
    (Get-Item package.json).LastWriteTime -gt (Get-Item node_modules).LastWriteTime -or
    (Get-Item package-lock.json).LastWriteTime -gt (Get-Item node_modules).LastWriteTime) {
    npm install
}

Always run this check before proceeding with any test command.

Run All Unit Tests

Run the full test suite with coverage:

npm test

This clears the coverage/ directory and runs Jest with coverage collection enabled.

Run a Single Test File

Run a specific test file without coverage (faster):

npm run test:file -- path/to/file.test.ts

Run Tests in Debug Mode

Run tests serially (useful for debugging flaky or interdependent tests):

npm run test:debug

Run Tests Matching a Pattern

Run only tests whose names match a pattern:

npx jest --coverage=false --testPathPattern="SomeComponent"

Guidelines

  • When asked to simply "run tests" or "test", run npm test for the full suite.
  • When asked to test a specific file or component, use npm run test:file -- <path>.
  • When debugging test failures, use npm run test:debug to run serially.
  • Unit test files live adjacent to source files (Foo.test.ts next to Foo.ts in src/).
  • Tests use Jest with jest-environment-jsdom.
  • Use @testing-library/react for new component tests. Do not use Enzyme for new tests.
  • Use Jest built-in mocking, not sinon.js.
  • Coverage thresholds are enforced globally: branches 25%, functions 24%, lines 28%, statements 28%.
  • If tests fail, read the error output carefully. Common issues include:
    • Snapshot mismatches: Review the diff. If the change is intentional, update snapshots with npx jest --updateSnapshot.
    • Mock issues: Ensure mocks are set up correctly and reset between tests.
    • Import errors: Check that module name mappings in jest.config.js are correct.
    • Type errors in tests: Run npm run compile to check for TypeScript issues.