skills-catalog/ln-743-test-infrastructure/SKILL.md
Sets up test infrastructure with Vitest, xUnit, and pytest. Use when adding testing frameworks and sample tests to a project.
npx skillsauth add levnikolaevich/claude-code-skills ln-743-test-infrastructureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L3 Worker Category: 7XX Project Bootstrap
Sets up testing frameworks, coverage tools, and sample tests for projects.
Does:
Does NOT:
| Technology | Test Framework | Coverage Tool | Config File |
|------------|---------------|---------------|-------------|
| TypeScript/React | Vitest | v8/Istanbul | vitest.config.ts |
| .NET | xUnit | Coverlet | *.Tests.csproj |
| Python | pytest | pytest-cov | pytest.ini or pyproject.toml |
Before creating test infrastructure, check what exists.
Files to Check:
| Stack | Test Indicators |
|-------|-----------------|
| TypeScript | vitest.config.*, jest.config.*, *.test.ts, *.spec.ts |
| .NET | *.Tests.csproj, *.IntegrationTests.csproj |
| Python | pytest.ini, conftest.py, tests/, test_*.py |
Decision Logic:
Create vitest.config.ts:
Dependencies:
npm install -D vitest @vitest/coverage-v8 @testing-library/react @testing-library/jest-dom jsdom
Create test project:
dotnet new xunit -n {Project}.Tests
dotnet sln add tests/{Project}.Tests
Dependencies (in .csproj):
Add to pyproject.toml or create pytest.ini:
Dependencies:
pip install pytest pytest-cov pytest-asyncio
# OR with uv:
uv add --dev pytest pytest-cov pytest-asyncio
src/
├── components/
│ ├── Button.tsx
│ └── Button.test.tsx # Co-located tests
├── test/
│ └── setup.ts # Test setup file
tests/
├── {Project}.Tests/
│ ├── Controllers/
│ │ └── SampleControllerTests.cs
│ ├── Services/
│ └── {Project}.Tests.csproj
└── {Project}.IntegrationTests/ # Optional
tests/
├── conftest.py # Shared fixtures (from conftest_template.py)
├── unit/
│ └── test_sample.py
└── integration/ # Optional
For FastAPI/async projects, generate conftest.py from conftest_template.py with shared async HTTP client fixture. Adapt the app import path to match the project.
Create one sample test per stack demonstrating:
Shows:
Shows:
Shows:
After setup, verify tests work.
TypeScript:
npm test
npm run test:coverage
Expected: Sample test passes, coverage report generated
.NET:
dotnet test
dotnet test --collect:"XPlat Code Coverage"
Expected: Sample test passes, coverage collected
Python:
pytest
pytest --cov=src --cov-report=term-missing
Expected: Sample test passes, coverage report shown
On Failure: Check test configuration, dependencies, verify sample test syntax.
| Metric | Minimum | Target | |--------|---------|--------| | Lines | 70% | 80% | | Branches | 70% | 80% | | Functions | 70% | 80% | | Statements | 70% | 80% |
Configure CI to fail if coverage drops below thresholds.
RULE 1: Coverage thresholds MUST be configured. No exceptions.
RULE 2: Sample tests MUST pass. Don't create broken examples.
RULE 3: Use AAA pattern (Arrange-Act-Assert) in all sample tests.
RULE 4: Co-locate unit tests with source (TypeScript) or use tests/ directory (.NET, Python).
Monitor (2.1.98+): When test verification after scaffold expected >30s, use Monitor. Fallback: Bash(run_in_background=true).
npm test / dotnet test / pytest runs successfully| File | Purpose | |------|---------| | vitest_template.ts | Vitest config template | | vitest_setup_template.ts | Test setup file | | react_test_template.tsx | React component test | | xunit_csproj_template.xml | .NET test project | | xunit_test_template.cs | xUnit test example | | pytest_config_template.toml | pytest config | | pytest_test_template.py | pytest test example | | conftest_template.py | Shared async fixtures (FastAPI) | | testing_guide.md | Testing best practices |
| Error | Cause | Resolution |
|-------|-------|------------|
| Vitest not found | Not installed | npm install -D vitest |
| jsdom errors | Missing dependency | npm install -D jsdom |
| xUnit discovery fails | SDK version mismatch | Update Microsoft.NET.Test.Sdk |
| pytest not found | Not in PATH | pip install pytest |
| Coverage 0% | Wrong source path | Check coverage.include config |
Version: 3.0.0 Last Updated: 2026-03-18
testing
Drafts and publishes fact-checked GitHub Discussions announcements. Use for releases, updates, or project news; not for release creation or issue responses.
testing
Prepares and publishes a tagged GitHub release from repository evidence. Use for an explicit release request; not for ordinary commits, packages, or community news.
testing
Validates, commits, pushes, and remotely verifies approved repository changes. Use when publication is requested; not for releases, package publishing, or announcements.
development
Reviews standalone skills and their configured distribution surfaces before publication. Use for skill release readiness; not for product code or implementation-plan review.