SKILL.md
MSW Best Practices
Comprehensive API mocking guide for MSW v2 applications, designed for AI agents and LLMs. Contains 45 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Setting up MSW for testing or development
- Writing or organizing request handlers
- Configuring test environments with MSW
- Mocking REST or GraphQL APIs
- Debugging handler matching issues
- Testing error states and edge cases
Rule Categories by Priority
Priority
Category
Impact
Prefix
1
Setup & Initialization
CRITICAL
setup-
2
Handler Architecture
CRITICAL
handler-
3
Test Integration
HIGH
test-
4
Response Patterns
HIGH
response-
5
Request Matching
MEDIUM-HIGH
match-
6
GraphQL Mocking
MEDIUM
graphql-
7
Advanced Patterns
MEDIUM
advanced-
8
Debugging & Performance
LOW
debug-
Quick Reference
1. Setup & Initialization (CRITICAL)
setup-server-node-entrypoint- Use correct entrypoint for Node.js (msw/node)
setup-lifecycle-hooks- Configure server lifecycle in test setup
setup-worker-script-commit- Commit worker script to version control
setup-node-version- Require Node.js 18+ for MSW v2
setup-unhandled-requests- Configure unhandled request behavior
setup-typescript-config- Configure TypeScript for MSW v2
2. Handler Architecture (CRITICAL)
handler-happy-path-first- Define happy path handlers as baseline
handler-domain-grouping- Group handlers by domain
handler-absolute-urls- Use absolute URLs in handlers
handler-shared-resolvers- Extract shared response logic into resolvers
handler-v2-response-syntax- Use MSW v2 response syntax
handler-request-body-parsing- Explicitly parse request bodies
handler-resolver-argument- Destructure resolver arguments correctly
handler-reusability-environments- Share handlers across environments
3. Test Integration (HIGH)
test-reset-handlers- Reset handlers after each test
test-avoid-request-assertions- Avoid direct request assertions
test-concurrent-boundary- Use server.boundary() for concurrent tests
test-fake-timers-config- Configure fake timers to preserve queueMicrotask
test-async-utilities- Use async testing utilities for mock responses
test-clear-request-cache- Clear request library caches between tests
test-jsdom-environment- Use correct JSDOM environment for Jest
4. Response Patterns (HIGH)
response-http-response-helpers- Use HttpResponse static methods
response-delay-realistic- Add realistic response delays
response-error-simulation- Simulate error responses correctly
response-one-time-handlers- Use one-time handlers for sequential scenarios
response-custom-headers- Set response headers correctly
response-streaming- Mock streaming responses with ReadableStream
5. Request Matching (MEDIUM-HIGH)
match-url-patterns- Use URL path parameters correctly
match-query-params- Access query parameters from request URL
match-custom-predicate- Use custom predicates for complex matching
match-http-methods- Match HTTP methods explicitly
match-handler-order- Order handlers from specific to general
6. GraphQL Mocking (MEDIUM)
graphql-operation-handlers- Use operation name for GraphQL matching
graphql-error-responses- Return GraphQL errors in correct format
graphql-batched-queries- Handle batched GraphQL queries
graphql-variables-access- Access GraphQL variables correctly
7. Advanced Patterns (MEDIUM)
advanced-bypass-requests- Use bypass() for passthrough requests
advanced-cookies-auth- Handle cookies and authentication
advanced-dynamic-scenarios- Implement dynamic mock scenarios
advanced-vitest-browser- Configure MSW for Vitest browser mode
advanced-file-uploads- Mock file upload endpoints
8. Debugging & Performance (LOW)
debug-lifecycle-events- Use lifecycle events for debugging
debug-verify-interception- Verify request interception is working
debug-common-issues- Know common MSW issues and fixes
debug-request-logging- Log request details for debugging
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
- Individual rules:
references/{prefix}-{slug}.md
Related Skills
- For generating MSW mocks from OpenAPI, see
orvalskill
- For consuming mocked APIs, see
tanstack-queryskill
- For test methodology, see
test-vitestortest-tddskills
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md