Testing & CI/CD Initialization
Automatically sets up comprehensive test infrastructure for TypeScript projects including Vitest, coverage thresholds, and GitHub Actions CI/CD.
When to Use
This skill should be used when:
- •Adding tests to a project without test coverage
- •Setting up GitHub Actions CI/CD for the first time
- •Configuring Vitest with coverage thresholds
- •Initializing testing infrastructure for a new project
- •Migrating from Jest to Vitest
What It Does
- •Detects project type (Next.js, NestJS, React, Node.js)
- •Adds Vitest configuration with appropriate settings
- •Creates test setup files for the environment
- •Adds GitHub Actions workflow for CI/CD
- •Configures 80% coverage thresholds
- •Adds test scripts to package.json
- •Installs required dependencies
Project Type Detection
The skill detects project type by scanning:
- •
package.jsondependencies (next, @nestjs/core, react, etc.) - •Config files (next.config.*, nest-cli.json, etc.)
- •Directory structure (app/, src/, pages/, etc.)
Quick Start
Ask Claude to:
Add testing and CI/CD to this project
Or be specific:
Set up Vitest with 80% coverage and GitHub Actions for this Next.js project
Configuration by Project Type
Next.js Projects
Dependencies installed:
bun add -D vitest @vitest/coverage-v8 @vitejs/plugin-react @testing-library/react @testing-library/jest-dom jsdom
Files created:
- •
vitest.config.ts- Vitest with jsdom environment - •
src/test/setup.ts- Test setup with RTL matchers - •
.github/workflows/ci.yml- CI pipeline
Test pattern: **/*.{test,spec}.{ts,tsx}
NestJS Projects
Dependencies installed:
bun add -D vitest @vitest/coverage-v8 supertest @types/supertest
Files created:
- •
vitest.config.ts- Vitest with node environment - •
test/setup.ts- Test setup for NestJS - •
.github/workflows/ci.yml- CI with MongoDB service
Test pattern: src/**/*.spec.ts
React/Node.js Projects
Follows similar patterns based on detected framework.
Coverage Configuration
Default thresholds (configurable):
- •Lines: 80%
- •Functions: 80%
- •Branches: 75%
- •Statements: 80%
Coverage is enforced:
- •In pre-commit hooks (via Husky)
- •In CI/CD pipeline (GitHub Actions)
GitHub Actions Features
The generated CI workflow includes:
- •Bun setup with caching
- •Dependency installation
- •Lint/format checking (Biome)
- •TypeScript type checking
- •Test execution with coverage
- •Build verification
- •MongoDB service (for NestJS projects)
Templates
Templates are located in the templates/ directory:
| Template | Purpose |
|---|---|
vitest.config.nextjs.ts | Vitest config for Next.js |
vitest.config.nestjs.ts | Vitest config for NestJS |
ci-nextjs.yml | GitHub Actions for Next.js |
ci-nestjs.yml | GitHub Actions for NestJS |
test-setup-react.ts | Test setup with RTL |
test-setup-node.ts | Test setup for Node.js |
Monorepo Support
For monorepos (detected by workspaces in package.json):
- •Creates
vitest.workspace.tsat root - •Creates individual
vitest.config.tsper package - •Creates root-level GitHub Actions workflow
- •Uses
bun --filter '*' testfor orchestration
Integration with Other Skills
| Skill | Integration |
|---|---|
husky-test-coverage | Adds pre-commit coverage enforcement |
linter-formatter-init | Works alongside for code quality |
playwright-e2e-init | Adds E2E testing after unit tests |
testing-expert | Provides testing patterns guidance |
Example Usage
Adding tests to a Next.js project
User: Add testing to this project Claude: 1. Detects Next.js from package.json 2. Installs vitest, @vitest/coverage-v8, @testing-library/react 3. Creates vitest.config.ts with jsdom environment 4. Creates src/test/setup.ts 5. Creates .github/workflows/ci.yml 6. Adds test scripts to package.json
Adding tests to a NestJS API
User: Set up tests for this NestJS API Claude: 1. Detects NestJS from @nestjs/core dependency 2. Installs vitest, @vitest/coverage-v8, supertest 3. Creates vitest.config.ts with node environment 4. Creates test/setup.ts 5. Creates .github/workflows/ci.yml with MongoDB service 6. Adds test scripts to package.json
Troubleshooting
Tests not finding modules
Ensure path aliases in vitest.config.ts match tsconfig.json:
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
Coverage below threshold
- •Check coverage report:
bun test --coverage - •Identify uncovered lines
- •Add tests or adjust thresholds temporarily
CI failing on type errors
Ensure bunx tsc --noEmit passes locally before pushing.
Best Practices
- •Start with unit tests for utilities and services
- •Add integration tests for API endpoints
- •Use E2E tests sparingly for critical flows
- •Run tests before commits via Husky
- •Monitor coverage trends in CI
When this skill is active, Claude will:
- •Detect the project type automatically
- •Install appropriate testing dependencies
- •Create properly configured test files
- •Set up GitHub Actions CI/CD
- •Configure coverage thresholds
- •Add test scripts to package.json