analyzing-test-coverage
π―Skillfrom saleor/configurator
Analyzes and generates comprehensive tests using Vitest and MSW, creating test builders, mocking repositories, and configuring integration tests.
Installation
npx skills add https://github.com/saleor/configurator --skill analyzing-test-coverageSkill Details
"Creates and analyzes tests using Vitest and MSW patterns. Generates test builders, mocks repositories, and configures integration tests. Triggers on: write tests, test coverage, Vitest, MSW mock, vi.fn, vi.mock, unit test, integration test, test builder, mock setup, test failure."
Overview
# Testing Strategy Analyst
Purpose
Guide the creation of comprehensive tests following project patterns for unit tests, integration tests, and E2E tests using Vitest, MSW, and project-specific test helpers.
When to Use
- Writing new tests
- Analyzing test coverage gaps
- Setting up mocks for testing
- Organizing test files
- Debugging test failures
Table of Contents
- [Testing Stack](#testing-stack)
- [Test Organization](#test-organization)
- [Quick Pattern Reference](#quick-pattern-reference)
- [Running Tests](#running-tests)
- [Test Quality Checklist](#test-quality-checklist)
- [Common Pitfalls](#common-pitfalls)
- [References](#references)
Testing Stack
| Tool | Purpose |
|------|---------|
| Vitest | Test runner and assertion library |
| MSW | Mock Service Worker for network mocking |
| vi | Vitest mock utilities |
| test-helpers/ | Project-specific test utilities |
Test Organization
```
src/
βββ modules/
β βββ category/
β βββ category-service.ts
β βββ category-service.test.ts # Unit tests
β βββ repository.ts
β βββ repository.test.ts # Repository tests
β βββ category.integration.test.ts # Integration tests
βββ core/
β βββ diff/
β βββ comparators/
β βββ category-comparator.ts
β βββ category-comparator.test.ts
βββ test-helpers/
β βββ config-file-builder.ts
β βββ graphql-mocks.ts
β βββ config-fixtures.ts
β βββ cli-runner.ts
βββ lib/
βββ test-setup.ts # Global test setup
e2e/
βββ ... # End-to-end tests
```
Quick Pattern Reference
Service Tests
See references/patterns.md for full examples. Key structure:
- Declare dependencies at suite level
- Reset mocks in
beforeEachwithvi.clearAllMocks() - Use describe blocks for method grouping
- Follow Arrange-Act-Assert pattern
Repository Tests with MSW
See references/patterns.md for MSW setup. Key steps:
- Define handlers with
graphql.query()/graphql.mutation() - Setup server with
beforeAll/afterAll - Override handlers for specific test cases with
server.use()
Test Data Builders
See references/test-builders.md for implementations. Pattern:
- Create builder class with fluent interface
- Validate with Zod schema in
build() - Provide factory functions for convenience
Mock Functions
See references/patterns.md for examples. Common patterns:
vi.fn()for simple mocksvi.mocked()for typed accessvi.mock()for module mocking
Running Tests
```bash
# Run all tests
pnpm test
# Run specific test file
pnpm test -- --filter=category-service
# Run tests matching pattern
pnpm test -- --grep="should create category"
# Watch mode
pnpm test -- --watch
# With coverage
pnpm test -- --coverage
```
See references/commands-reference.md for advanced options and coverage configuration.
Test Quality Checklist
For Every Test
- [ ] Follows Arrange-Act-Assert pattern
- [ ] Has descriptive test name
- [ ] Tests one thing per test
- [ ] Includes both positive and negative cases
- [ ] Uses typed mocks (not
any) - [ ] Cleans up after itself (beforeEach/afterEach)
For Test Suites
- [ ] Covers all public methods
- [ ] Covers error scenarios
- [ ] Covers edge cases
- [ ] Uses schema-validated test data
- [ ] Has integration tests for complex flows
Validation Checkpoints
| Phase | Validate | Command |
|-------|----------|---------|
| Test written | File exists | Check *.test.ts created |
| Tests pass | All green | pnpm test |
| Coverage adequate | Key paths covered | pnpm test --coverage |
| Mocks typed | No any in mocks | npx tsc --noEmit |
Common Pitfalls
Not Resetting Mocks:
```typescript
beforeEach(() => {
vi.clearAllMocks(); // Always reset!
});
```
Testing Implementation Details:
```typescript
// BAD - tests internal structure
expect(service.internalMap.size).toBe(1);
// GOOD - tests behavior
expect(await service.findBySlug('test')).toBeDefined();
```
Flaky Async Tests:
```typescript
// BAD - race condition
const result = service.process();
expect(result).toBe(expected);
// GOOD - await properly
const result = await service.process();
expect(result).toBe(expected);
```
References
Skill Reference Files
references/patterns.md- Detailed test patterns with full code examplesreferences/test-builders.md- Builder pattern implementationsreferences/commands-reference.md- Complete command reference
Project Resources
{baseDir}/src/test-helpers/- Test utilities{baseDir}/vitest.config.ts- Test configuration{baseDir}/docs/TESTING_PROTOCOLS.md- Testing protocols
External Documentation
- Vitest docs: https://vitest.dev
- MSW docs: https://mswjs.io
Related Skills
- Complete entity workflow: See
adding-entity-typesfor E2E implementation including tests - Zod test patterns: See
designing-zod-schemasfor schema validation tests - GraphQL mocking: See
writing-graphql-operationsfor MSW handlers
Quick Reference Rule
For a condensed quick reference, see .claude/rules/testing-standards.md (automatically loaded when editing *.test.ts files).
More from this repository8
Here's a concise, practical description for the "implementing-cli-patterns" skill: Implements consistent CLI user experiences with color-coded output, progress indicators, interactive prompts, and...
Automates changeset creation for semantic versioning, determining version bump type and generating detailed release notes.
Reviews TypeScript code for type safety, clean code principles, functional patterns, Zod validation, and error handling across various project scenarios.
Designs and validates Zod schemas with type inference, supporting complex validation patterns, branded types, and transformations.
Explains Saleor e-commerce domain, revealing entity identification, deployment pipeline, and configuration management strategies for developers.
Generates type-safe GraphQL operations using gql.tada and urql, implementing a repository pattern for Saleor API interactions with robust error handling.
Validates code quality by running linting, TypeScript compilation, tests, and CI checks before committing or pushing changes.
Configures and manages GitHub Actions workflows, automates releases via Changesets, validates PRs, and troubleshoots CI pipeline failures.