Msw
Skill ulpi-io/plugin-marketplace/plugins/pproenca/skills/msw
MSW (Mock Service Worker) best practices for API mocking in tests (formerly test-msw). This skill should be used when setting up MSW, writing request handlers, or mocking HTTP APIs. This skill does NOT cover general testing patterns (use test-vitest or test-tdd skills) or test methodology.From its SKILL.md
npx -y skills add ulpi-io/plugin-marketplace --skill mswAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.1 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
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 setupsetup-worker-script-commit- Commit worker script to version controlsetup-node-version- Require Node.js 18+ for MSW v2setup-unhandled-requests- Configure unhandled request behaviorsetup-typescript-config- Configure TypeScript for MSW v2
2. Handler Architecture (CRITICAL)
handler-happy-path-first- Define happy path handlers as baselinehandler-domain-grouping- Group handlers by domainhandler-absolute-urls- Use absolute URLs in handlershandler-shared-resolvers- Extract shared response logic into resolvershandler-v2-response-syntax- Use MSW v2 response syntaxhandler-request-body-parsing- Explicitly parse request bodieshandler-resolver-argument- Destructure resolver arguments correctlyhandler-reusability-environments- Share handlers across environments
3. Test Integration (HIGH)
test-reset-handlers- Reset handlers after each testtest-avoid-request-assertions- Avoid direct request assertionstest-concurrent-boundary- Use server.boundary() for concurrent teststest-fake-timers-config- Configure fake timers to preserve queueMicrotasktest-async-utilities- Use async testing utilities for mock responsestest-clear-request-cache- Clear request library caches between teststest-jsdom-environment- Use correct JSDOM environment for Jest
4. Response Patterns (HIGH)
response-http-response-helpers- Use HttpResponse static methodsresponse-delay-realistic- Add realistic response delaysresponse-error-simulation- Simulate error responses correctlyresponse-one-time-handlers- Use one-time handlers for sequential scenariosresponse-custom-headers- Set response headers correctlyresponse-streaming- Mock streaming responses with ReadableStream
5. Request Matching (MEDIUM-HIGH)
match-url-patterns- Use URL path parameters correctlymatch-query-params- Access query parameters from request URLmatch-custom-predicate- Use custom predicates for complex matchingmatch-http-methods- Match HTTP methods explicitlymatch-handler-order- Order handlers from specific to general
6. GraphQL Mocking (MEDIUM)
graphql-operation-handlers- Use operation name for GraphQL matchinggraphql-error-responses- Return GraphQL errors in correct formatgraphql-batched-queries- Handle batched GraphQL queriesgraphql-variables-access- Access GraphQL variables correctly
7. Advanced Patterns (MEDIUM)
advanced-bypass-requests- Use bypass() for passthrough requestsadvanced-cookies-auth- Handle cookies and authenticationadvanced-dynamic-scenarios- Implement dynamic mock scenariosadvanced-vitest-browser- Configure MSW for Vitest browser modeadvanced-file-uploads- Mock file upload endpoints
8. Debugging & Performance (LOW)
debug-lifecycle-events- Use lifecycle events for debuggingdebug-verify-interception- Verify request interception is workingdebug-common-issues- Know common MSW issues and fixesdebug-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
What ships with it: 50 files
119.4 KB alongside SKILL.md
assets/
references/
- advanced-bypass-requests.md2.2 KB
- advanced-cookies-auth.md2.7 KB
- advanced-dynamic-scenarios.md2.8 KB
- advanced-file-uploads.md2.7 KB
- advanced-vitest-browser.md2.3 KB
- debug-common-issues.md2.0 KB
- debug-lifecycle-events.md2.4 KB
- debug-request-logging.md3.0 KB
- debug-verify-interception.md2.5 KB
- graphql-batched-queries.md2.5 KB
- graphql-error-responses.md2.7 KB
- graphql-operation-handlers.md2.3 KB
- graphql-variables-access.md2.9 KB
- handler-absolute-urls.md1.8 KB
- handler-domain-grouping.md2.3 KB
- handler-happy-path-first.md1.9 KB
- handler-request-body-parsing.md2.0 KB
- handler-resolver-argument.md2.2 KB
- handler-reusability-environments.md2.2 KB
- handler-shared-resolvers.md2.6 KB
- handler-v2-response-syntax.md2.0 KB
- match-custom-predicate.md2.4 KB
- match-handler-order.md2.4 KB
- match-http-methods.md2.6 KB
- match-query-params.md2.4 KB
- match-url-patterns.md2.1 KB
- response-custom-headers.md2.8 KB
- response-delay-realistic.md2.5 KB
- response-error-simulation.md2.5 KB
- response-http-response-helpers.md2.2 KB
- response-one-time-handlers.md2.7 KB
- response-streaming.md2.9 KB
- _sections.md1.9 KB
- setup-lifecycle-hooks.md1.6 KB
- setup-node-version.md1.3 KB
- setup-server-node-entrypoint.md1.2 KB
- AGENTS.md9.5 KB
- metadata.json803 B
- README.md4.5 KB
10 more files not listed here. See all 50 in the repository.