@wipal/agent-team 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/.claude/commands/skills/discover.md +127 -0
  2. package/.claude/commands/skills/install.md +225 -0
  3. package/.claude/commands/skills/review.md +234 -0
  4. package/.claude/commands/utils/learn.md +142 -0
  5. package/.claude/commands/utils/retrospect.md +62 -0
  6. package/.claude/commands/utils/switch.md +113 -0
  7. package/.claude/commands/utils/sync.md +183 -0
  8. package/.claude/rules/common/general-rules.md +6 -0
  9. package/.claude/rules/role-rules/dev-be-rules.md +241 -0
  10. package/.claude/rules/role-rules/dev-fe-rules.md +76 -0
  11. package/.claude/skills/SKILL-INDEX.md +24 -5
  12. package/.claude/skills/core/knowledge-graph/SKILL.md +214 -0
  13. package/.claude/skills/core/sequential-thinking/SKILL.md +112 -0
  14. package/.claude/skills/core/sequential-thinking/references/advanced.md +122 -0
  15. package/.claude/skills/core/sequential-thinking/references/examples.md +274 -0
  16. package/.claude/skills/domain/architecture/c4-architecture/SKILL.md +314 -0
  17. package/.claude/skills/domain/architecture/c4-architecture/references/advanced-patterns.md +552 -0
  18. package/.claude/skills/domain/architecture/c4-architecture/references/c4-syntax.md +492 -0
  19. package/.claude/skills/domain/architecture/c4-architecture/references/common-mistakes.md +437 -0
  20. package/.claude/skills/domain/architecture/mermaid-diagrams/SKILL.md +238 -0
  21. package/.claude/skills/domain/architecture/mermaid-diagrams/references/advanced-features.md +556 -0
  22. package/.claude/skills/domain/architecture/mermaid-diagrams/references/architecture-diagrams.md +192 -0
  23. package/.claude/skills/domain/architecture/mermaid-diagrams/references/c4-diagrams.md +410 -0
  24. package/.claude/skills/domain/architecture/mermaid-diagrams/references/class-diagrams.md +361 -0
  25. package/.claude/skills/domain/architecture/mermaid-diagrams/references/erd-diagrams.md +510 -0
  26. package/.claude/skills/domain/architecture/mermaid-diagrams/references/flowcharts.md +450 -0
  27. package/.claude/skills/domain/architecture/mermaid-diagrams/references/sequence-diagrams.md +394 -0
  28. package/.claude/skills/domain/backend/testing-be/SKILL.md +121 -17
  29. package/.claude/skills/domain/design/design-system/SKILL.md +169 -0
  30. package/.claude/skills/domain/design/html-css-output/SKILL.md +253 -0
  31. package/.claude/skills/domain/design/mockup-creation/SKILL.md +230 -0
  32. package/.claude/skills/domain/design/responsive-design/SKILL.md +207 -0
  33. package/.claude/skills/domain/design/ui-design/SKILL.md +124 -0
  34. package/.claude/skills/domain/frontend/testing-fe/SKILL.md +143 -38
  35. package/.claude/skills/domain/frontend/ui-ux-pro-max/README.md +45 -0
  36. package/.claude/skills/domain/frontend/ui-ux-pro-max/SKILL.md +404 -0
  37. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/charts.csv +26 -0
  38. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/colors.csv +97 -0
  39. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/icons.csv +101 -0
  40. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/landing.csv +31 -0
  41. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/products.csv +97 -0
  42. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/react-performance.csv +45 -0
  43. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  44. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  45. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  46. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  47. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  48. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  49. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  50. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  51. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -0
  52. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  53. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  54. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  55. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  56. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/styles.csv +68 -0
  57. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/typography.csv +58 -0
  58. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  59. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  60. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/web-interface.csv +31 -0
  61. package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/core.py +253 -0
  62. package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -0
  63. package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/search.py +114 -0
  64. package/.claude/skills/domain/product/requirements-clarity/SKILL.md +340 -0
  65. package/.claude/skills/skills-registry.yaml +103 -8
  66. package/README.md +107 -33
  67. package/README.npm.md +252 -0
  68. package/TUTORIAL.md +256 -0
  69. package/bin/agent-team.js +26 -7
  70. package/config/roles.yaml +107 -0
  71. package/docs/01-architecture.md +699 -0
  72. package/docs/02-setup-guide.md +634 -0
  73. package/docs/03-skills-guide.md +628 -0
  74. package/docs/04-workflows.md +792 -0
  75. package/docs/05-model-strategy.md +550 -0
  76. package/docs/06-extend-guide.md +1226 -0
  77. package/docs/07-quick-reference.md +578 -0
  78. package/docs/08-skills-discovery.md +342 -0
  79. package/docs/README.md +134 -0
  80. package/docs/rqm.md +560 -0
  81. package/package.json +10 -4
  82. package/scripts/postinstall.js +46 -0
  83. package/src/commands/add.js +131 -67
  84. package/src/commands/init.js +419 -9
  85. package/src/commands/list.js +20 -16
  86. package/src/commands/projects.js +127 -0
  87. package/src/commands/setup-hooks.js +261 -0
  88. package/src/index.js +0 -1
  89. package/src/utils/file-utils.js +147 -50
  90. package/src/utils/global-registry.js +224 -0
  91. package/templates/CLAUDE.md.tmpl +128 -20
  92. package/templates/MEMORY.md.tmpl +119 -0
  93. package/templates/agent.md.tmpl +205 -0
  94. package/templates/code/nestjs-controller.ts.tmpl +49 -0
  95. package/templates/code/nestjs-dto.ts.tmpl +63 -0
  96. package/templates/code/nestjs-service.ts.tmpl +45 -0
  97. package/templates/code/react-component.tsx.tmpl +24 -0
  98. package/templates/code/react-hook.ts.tmpl +54 -0
  99. package/templates/code/test.spec.ts.tmpl +50 -0
  100. package/templates/code/vue-component.vue.tmpl +49 -0
  101. package/templates/code/vue-composable.ts.tmpl +54 -0
  102. package/templates/knowledge.md.tmpl +152 -17
  103. package/templates/meeting-notes.md.tmpl +110 -0
  104. package/templates/memory/hooks.memory.json +50 -0
  105. package/templates/memory/settings.memory.json +16 -0
  106. package/templates/reports/bug-report.md.tmpl +164 -0
  107. package/templates/reports/code-review.md.tmpl +201 -0
  108. package/templates/reports/sprint-report.md.tmpl +218 -0
  109. package/templates/roles/ba.md +53 -0
  110. package/templates/roles/designer.md +82 -0
  111. package/templates/roles/dev-be.md +49 -0
  112. package/templates/roles/dev-fe.md +49 -0
  113. package/templates/roles/devops.md +53 -0
  114. package/templates/roles/pm.md +49 -0
  115. package/templates/roles/qa.md +53 -0
  116. package/templates/roles/sa.md +49 -0
  117. package/templates/roles/tech-lead.md +132 -0
  118. package/templates/skills/memory/memory-status.md +78 -0
  119. package/templates/skills/memory/recall.md +160 -0
  120. package/templates/skills/memory/reflect.md +168 -0
  121. package/templates/skills/memory/remember.md +105 -0
  122. package/templates/tasks/lessons.md.tmpl +77 -0
  123. package/templates/tasks/todo.md.tmpl +53 -0
  124. package/src/commands/switch.js +0 -53
@@ -0,0 +1,394 @@
1
+ # Sequence Diagrams
2
+
3
+ Sequence diagrams show interactions between participants over time. They're ideal for API flows, authentication sequences, and system component interactions.
4
+
5
+ ## Basic Syntax
6
+
7
+ ```mermaid
8
+ sequenceDiagram
9
+ participant A
10
+ participant B
11
+ A->>B: Message
12
+ ```
13
+
14
+ ## Participants and Actors
15
+
16
+ ```mermaid
17
+ sequenceDiagram
18
+ actor User
19
+ participant Frontend
20
+ participant API
21
+ participant Database
22
+
23
+ User->>Frontend: Click button
24
+ Frontend->>API: POST /data
25
+ ```
26
+
27
+ **Difference:**
28
+ - `participant` - System components (services, classes, databases)
29
+ - `actor` - External entities (users, external systems)
30
+
31
+ ## Message Types
32
+
33
+ ### Solid Arrow (Synchronous)
34
+ ```mermaid
35
+ sequenceDiagram
36
+ Client->>Server: Request
37
+ Server-->>Client: Response
38
+ ```
39
+
40
+ - `->>` Solid arrow (request)
41
+ - `-->>` Dotted arrow (response/return)
42
+
43
+ ### Open Arrow (Asynchronous)
44
+ ```mermaid
45
+ sequenceDiagram
46
+ Client-)Server: Async message
47
+ Server--)Client: Async response
48
+ ```
49
+
50
+ - `-)` Solid open arrow
51
+ - `--)` Dotted open arrow
52
+
53
+ ### Cross/X (Delete)
54
+ ```mermaid
55
+ sequenceDiagram
56
+ Client-xServer: Delete
57
+ ```
58
+
59
+ ## Activations
60
+
61
+ Show when a participant is actively processing:
62
+
63
+ ```mermaid
64
+ sequenceDiagram
65
+ Client->>+Server: Request
66
+ Server->>+Database: Query
67
+ Database-->>-Server: Data
68
+ Server-->>-Client: Response
69
+ ```
70
+
71
+ - `+` after arrow activates
72
+ - `-` before arrow deactivates
73
+
74
+ ## Alt/Else (Conditional Logic)
75
+
76
+ ```mermaid
77
+ sequenceDiagram
78
+ User->>API: POST /login
79
+ API->>Database: Query user
80
+ Database-->>API: User data
81
+
82
+ alt Valid credentials
83
+ API-->>User: 200 OK + Token
84
+ else Invalid credentials
85
+ API-->>User: 401 Unauthorized
86
+ else Account locked
87
+ API-->>User: 403 Forbidden
88
+ end
89
+ ```
90
+
91
+ ## Opt (Optional)
92
+
93
+ ```mermaid
94
+ sequenceDiagram
95
+ User->>API: POST /order
96
+ API->>PaymentService: Process payment
97
+
98
+ opt Payment successful
99
+ API->>EmailService: Send confirmation
100
+ end
101
+
102
+ API-->>User: Order result
103
+ ```
104
+
105
+ ## Par (Parallel)
106
+
107
+ Show concurrent operations:
108
+
109
+ ```mermaid
110
+ sequenceDiagram
111
+ API->>Service: Process order
112
+
113
+ par Send email
114
+ Service->>EmailService: Send confirmation
115
+ and Update inventory
116
+ Service->>InventoryService: Reduce stock
117
+ and Log event
118
+ Service->>LogService: Log order
119
+ end
120
+
121
+ Service-->>API: Complete
122
+ ```
123
+
124
+ ## Loop
125
+
126
+ ```mermaid
127
+ sequenceDiagram
128
+ Client->>Server: Request batch
129
+
130
+ loop For each item
131
+ Server->>Database: Process item
132
+ Database-->>Server: Result
133
+ end
134
+
135
+ Server-->>Client: All results
136
+ ```
137
+
138
+ **Loop with condition:**
139
+ ```mermaid
140
+ sequenceDiagram
141
+ loop Every 5 seconds
142
+ Monitor->>API: Health check
143
+ API-->>Monitor: Status
144
+ end
145
+ ```
146
+
147
+ ## Break (Early Exit)
148
+
149
+ ```mermaid
150
+ sequenceDiagram
151
+ User->>API: Submit form
152
+ API->>Validator: Validate input
153
+
154
+ break Input invalid
155
+ API-->>User: 400 Bad Request
156
+ end
157
+
158
+ API->>Database: Save data
159
+ Database-->>API: Success
160
+ API-->>User: 200 OK
161
+ ```
162
+
163
+ ## Notes
164
+
165
+ ### Note over single participant
166
+ ```mermaid
167
+ sequenceDiagram
168
+ User->>API: Request
169
+ Note over API: Validates JWT token
170
+ API-->>User: Response
171
+ ```
172
+
173
+ ### Note spanning participants
174
+ ```mermaid
175
+ sequenceDiagram
176
+ Frontend->>API: Request
177
+ Note over Frontend,API: HTTPS encrypted
178
+ API-->>Frontend: Response
179
+ ```
180
+
181
+ ### Right/Left notes
182
+ ```mermaid
183
+ sequenceDiagram
184
+ User->>System: Action
185
+ Note right of System: Logs to database
186
+ System-->>User: Response
187
+ Note left of User: Updates UI
188
+ ```
189
+
190
+ ## Sequence Numbers
191
+
192
+ Automatically number messages:
193
+
194
+ ```mermaid
195
+ sequenceDiagram
196
+ autonumber
197
+
198
+ User->>Frontend: Login
199
+ Frontend->>API: Authenticate
200
+ API->>Database: Verify credentials
201
+ Database-->>API: User data
202
+ API-->>Frontend: JWT token
203
+ Frontend-->>User: Success
204
+ ```
205
+
206
+ ## Links and Tooltips
207
+
208
+ Add clickable links:
209
+
210
+ ```mermaid
211
+ sequenceDiagram
212
+ participant A as Service A
213
+ link A: Dashboard @ https://dashboard.example.com
214
+ link A: API Docs @ https://docs.example.com
215
+
216
+ A->>B: Message
217
+ ```
218
+
219
+ ## Comprehensive Example: User Authentication Flow
220
+
221
+ ```mermaid
222
+ sequenceDiagram
223
+ autonumber
224
+ actor User
225
+ participant Frontend
226
+ participant AuthAPI
227
+ participant Database
228
+ participant Redis
229
+ participant EmailService
230
+
231
+ User->>+Frontend: Enter credentials
232
+ Frontend->>+AuthAPI: POST /auth/login
233
+
234
+ AuthAPI->>+Database: Query user by email
235
+ Database-->>-AuthAPI: User record
236
+
237
+ alt User not found
238
+ AuthAPI-->>Frontend: 404 User not found
239
+ Frontend-->>User: Show error
240
+ else User found
241
+ AuthAPI->>AuthAPI: Verify password hash
242
+
243
+ alt Invalid password
244
+ AuthAPI->>Database: Increment failed attempts
245
+
246
+ opt Failed attempts > 5
247
+ AuthAPI->>Database: Lock account
248
+ AuthAPI->>EmailService: Send security alert
249
+ end
250
+
251
+ AuthAPI-->>Frontend: 401 Invalid credentials
252
+ Frontend-->>User: Show error
253
+ else Valid password
254
+ AuthAPI->>AuthAPI: Generate JWT token
255
+ AuthAPI->>+Redis: Store session
256
+ Redis-->>-AuthAPI: Confirm
257
+
258
+ par Update login metadata
259
+ AuthAPI->>Database: Update last_login
260
+ and Track analytics
261
+ AuthAPI->>Database: Log login event
262
+ end
263
+
264
+ AuthAPI-->>-Frontend: 200 OK + JWT token
265
+ Frontend->>Frontend: Store token in localStorage
266
+ Frontend-->>-User: Redirect to dashboard
267
+
268
+ opt First login
269
+ EmailService->>User: Welcome email
270
+ end
271
+ end
272
+ end
273
+ ```
274
+
275
+ ## API Request/Response Example
276
+
277
+ ```mermaid
278
+ sequenceDiagram
279
+ autonumber
280
+ participant Client
281
+ participant Gateway
282
+ participant AuthService
283
+ participant UserService
284
+ participant Database
285
+
286
+ Client->>+Gateway: GET /api/users/123
287
+ Note over Gateway: Rate limiting check
288
+
289
+ Gateway->>+AuthService: Validate JWT
290
+ AuthService->>AuthService: Verify signature
291
+
292
+ alt Token invalid or expired
293
+ AuthService-->>Gateway: 401 Unauthorized
294
+ Gateway-->>Client: 401 Unauthorized
295
+ else Token valid
296
+ AuthService-->>-Gateway: User context
297
+
298
+ Gateway->>+UserService: GET /users/123
299
+ UserService->>+Database: SELECT * FROM users WHERE id=123
300
+ Database-->>-UserService: User record
301
+
302
+ alt User not found
303
+ UserService-->>Gateway: 404 Not Found
304
+ Gateway-->>Client: 404 Not Found
305
+ else User found
306
+ UserService-->>-Gateway: 200 OK + User data
307
+ Gateway-->>-Client: 200 OK + User data
308
+ end
309
+ end
310
+ ```
311
+
312
+ ## Microservices Communication
313
+
314
+ ```mermaid
315
+ sequenceDiagram
316
+ actor User
317
+ participant Gateway
318
+ participant OrderService
319
+ participant PaymentService
320
+ participant InventoryService
321
+ participant NotificationService
322
+ participant MessageQueue
323
+
324
+ User->>+Gateway: POST /orders
325
+ Gateway->>+OrderService: Create order
326
+
327
+ OrderService->>+InventoryService: Check stock
328
+ InventoryService-->>-OrderService: Stock available
329
+
330
+ break Insufficient stock
331
+ OrderService-->>Gateway: 400 Out of stock
332
+ Gateway-->>User: Error message
333
+ end
334
+
335
+ OrderService->>OrderService: Reserve order
336
+ OrderService->>+PaymentService: Charge customer
337
+
338
+ alt Payment successful
339
+ PaymentService-->>-OrderService: Payment confirmed
340
+ OrderService->>MessageQueue: Publish OrderConfirmed event
341
+
342
+ par Async processing
343
+ MessageQueue->>InventoryService: Reduce stock
344
+ and
345
+ MessageQueue->>NotificationService: Send confirmation
346
+ NotificationService->>User: Email confirmation
347
+ end
348
+
349
+ OrderService-->>-Gateway: 201 Created
350
+ Gateway-->>User: Order confirmed
351
+ else Payment failed
352
+ PaymentService-->>OrderService: Payment declined
353
+ OrderService->>OrderService: Release reservation
354
+ OrderService-->>Gateway: 402 Payment Required
355
+ Gateway-->>User: Payment failed
356
+ end
357
+ ```
358
+
359
+ ## Best Practices
360
+
361
+ 1. **Order participants logically** - Typically: User → Frontend → Backend → Database
362
+ 2. **Use activations** - Shows when components are actively processing
363
+ 3. **Group related logic** - Use alt/opt/par to organize conditional flows
364
+ 4. **Add descriptive notes** - Explain complex logic or important details
365
+ 5. **Keep diagrams focused** - One scenario per diagram
366
+ 6. **Number messages** - Use autonumber for complex flows
367
+ 7. **Show error paths** - Document failure scenarios with alt/else
368
+ 8. **Indicate async operations** - Use open arrows for fire-and-forget messages
369
+
370
+ ## Common Use Cases
371
+
372
+ ### Authentication
373
+ - Login flows
374
+ - OAuth/SSO flows
375
+ - Token refresh
376
+ - Password reset
377
+
378
+ ### API Operations
379
+ - CRUD operations
380
+ - Search and filtering
381
+ - Batch processing
382
+ - Webhook handling
383
+
384
+ ### System Integration
385
+ - Microservice communication
386
+ - Third-party API calls
387
+ - Message queue processing
388
+ - Event-driven architecture
389
+
390
+ ### Business Processes
391
+ - Order fulfillment
392
+ - Payment processing
393
+ - Approval workflows
394
+ - Notification chains
@@ -1,41 +1,44 @@
1
1
  ---
2
2
  name: testing-be
3
3
  description: |
4
- Backend testing patterns with Jest, Vitest, and integration testing. Use when:
5
- writing unit tests, integration tests, API tests, or when user mentions "test",
6
- "unit test", "integration test", "API test", "mock", "fixture". Test behavior,
7
- not implementation.
8
- version: 1.0.0
4
+ Backend testing from developer perspective: Unit Tests, Integration Tests,
5
+ Functional Tests, API Tests. Use when writing tests for your own code.
6
+ NOT for E2E/QA testing (that's QA domain). Test behavior, not implementation.
7
+ version: 1.1.0
9
8
  category: backend
10
9
  tags:
11
10
  - testing
12
11
  - unit-test
13
12
  - integration-test
13
+ - functional-test
14
14
  - api-test
15
15
  depends_on:
16
16
  - code-review
17
17
  - api-design
18
18
  recommends: []
19
- used_by: []
19
+ used_by:
20
+ - dev-be
20
21
  ---
21
22
 
22
- # Skill: Testing BE
23
+ # Skill: Testing BE (Developer Perspective)
23
24
 
24
25
  ## Core Principle
25
- **Test behavior, not implementation.** Good tests survive refactors. They document expected behavior.
26
+ **Test behavior, not implementation.** As a developer, you test YOUR code to ensure it works correctly. E2E testing is QA's responsibility.
26
27
 
27
- ## Testing Pyramid
28
+ ## Testing Pyramid (Developer Focus)
28
29
 
29
30
  ```
30
-
31
- /E2E\ Few, slow
32
- /─────\
33
- / API \ Some, medium
34
- /─────────\
35
- / Unit \ Many, fast
36
- /─────────────\
31
+
32
+ /API\ Some, medium speed (Integration)
33
+ /─────\
34
+ /Functional\ Many, fast
35
+ /────────────\
36
+ / Unit \ Many, very fast
37
+ /────────────────\
37
38
  ```
38
39
 
40
+ **Note:** E2E testing is NOT included - that's QA/Tester domain, not developer responsibility.
41
+
39
42
  ## Hard Rules
40
43
 
41
44
  1. **NEVER test implementation** - Test behavior/output
@@ -43,9 +46,12 @@ used_by: []
43
46
  3. **ALWAYS clean up resources** - Close connections, delete data
44
47
  4. **ALWAYS use descriptive names** - `should_..._when_...`
45
48
  5. **ALWAYS mock external services** - No real API calls
49
+ 6. **NO E2E tests** - That's QA domain, not dev responsibility
46
50
 
47
51
  ## Unit Tests
48
52
 
53
+ Test individual functions and classes in isolation.
54
+
49
55
  ```typescript
50
56
  // userService.test.ts
51
57
  import { describe, it, expect, vi, beforeEach } from 'vitest';
@@ -87,6 +93,8 @@ describe('UserService', () => {
87
93
 
88
94
  ## Integration Tests
89
95
 
96
+ Test how multiple components work together.
97
+
90
98
  ```typescript
91
99
  // api.test.ts
92
100
  import { describe, it, expect, beforeAll, afterAll } from 'vitest';
@@ -94,7 +102,7 @@ import { FastifyInstance } from 'fastify';
94
102
  import { buildApp } from './app';
95
103
  import { prisma } from './db';
96
104
 
97
- describe('User API', () => {
105
+ describe('User API Integration', () => {
98
106
  let app: FastifyInstance;
99
107
 
100
108
  beforeAll(async () => {
@@ -128,6 +136,100 @@ describe('User API', () => {
128
136
  });
129
137
  ```
130
138
 
139
+ ## Functional Tests
140
+
141
+ Test complete features and business logic.
142
+
143
+ ```typescript
144
+ // orderService.functional.test.ts
145
+ import { describe, it, expect, beforeEach } from 'vitest';
146
+ import { OrderService } from './orderService';
147
+ import { InventoryService } from './inventoryService';
148
+ import { PaymentService } from './paymentService';
149
+
150
+ describe('OrderService Functional Tests', () => {
151
+ let orderService: OrderService;
152
+ let inventoryService: InventoryService;
153
+ let paymentService: PaymentService;
154
+
155
+ beforeEach(() => {
156
+ inventoryService = new InventoryService();
157
+ paymentService = new PaymentService();
158
+ orderService = new OrderService(inventoryService, paymentService);
159
+ });
160
+
161
+ it('should create order when inventory available', async () => {
162
+ const orderData = {
163
+ productId: 'prod-1',
164
+ quantity: 2,
165
+ userId: 'user-1',
166
+ };
167
+
168
+ const result = await orderService.createOrder(orderData);
169
+
170
+ expect(result.status).toBe('confirmed');
171
+ expect(result.quantity).toBe(2);
172
+ });
173
+
174
+ it('should fail when insufficient inventory', async () => {
175
+ const orderData = {
176
+ productId: 'prod-out-of-stock',
177
+ quantity: 100,
178
+ userId: 'user-1',
179
+ };
180
+
181
+ await expect(orderService.createOrder(orderData)).rejects.toThrow('Insufficient inventory');
182
+ });
183
+
184
+ it('should handle payment failure gracefully', async () => {
185
+ const orderData = {
186
+ productId: 'prod-1',
187
+ quantity: 1,
188
+ userId: 'user-payment-fail',
189
+ };
190
+
191
+ await expect(orderService.createOrder(orderData)).rejects.toThrow('Payment failed');
192
+ });
193
+ });
194
+ ```
195
+
196
+ ## API Tests
197
+
198
+ Test HTTP endpoints directly.
199
+
200
+ ```typescript
201
+ // auth.api.test.ts
202
+ import { describe, it, expect } from 'vitest';
203
+ import request from 'supertest';
204
+ import { app } from './app';
205
+
206
+ describe('Auth API', () => {
207
+ it('POST /auth/login should return token', async () => {
208
+ const response = await request(app)
209
+ .post('/auth/login')
210
+ .send({ email: 'test@example.com', password: 'password123' });
211
+
212
+ expect(response.status).toBe(200);
213
+ expect(response.body).toHaveProperty('token');
214
+ });
215
+
216
+ it('POST /auth/login should reject invalid credentials', async () => {
217
+ const response = await request(app)
218
+ .post('/auth/login')
219
+ .send({ email: 'test@example.com', password: 'wrong' });
220
+
221
+ expect(response.status).toBe(401);
222
+ expect(response.body).toHaveProperty('error');
223
+ });
224
+
225
+ it('GET /protected should require auth', async () => {
226
+ const response = await request(app).get('/protected');
227
+
228
+ expect(response.status).toBe(401);
229
+ });
230
+ });
231
+ ```
232
+
131
233
  ## Test Database
132
234
 
133
235
  ```typescript
@@ -167,6 +269,7 @@ afterAll(async () => {
167
269
  | Real external APIs | Mock them |
168
270
  | Slow tests | Use in-memory DB |
169
271
  | Flaky tests | Fix or delete |
272
+ | Writing E2E tests | That's QA domain |
170
273
 
171
274
  ## Mocking Patterns
172
275
 
@@ -201,3 +304,4 @@ it('should_create_order_when_valid_request')
201
304
  - [ ] Descriptive test names
202
305
  - [ ] Fast test execution
203
306
  - [ ] CI integration
307
+ - [ ] NO E2E tests (that's QA domain)