@sk8metal/michi-cli 0.10.1 → 0.11.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.
- package/README.md +77 -847
- package/dist/scripts/phase-runner.js +1 -1
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts +18 -0
- package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.js +42 -0
- package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.js +3 -3
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
- package/docs/README.md +20 -83
- package/docs/getting-started/configuration.md +379 -0
- package/docs/getting-started/installation.md +59 -0
- package/docs/getting-started/quick-start.md +76 -0
- package/docs/guides/ai-tools.md +311 -0
- package/docs/guides/atlassian-integration.md +116 -0
- package/docs/guides/claude-code.md +155 -0
- package/docs/guides/multi-repo.md +117 -0
- package/docs/guides/workflow.md +382 -0
- package/docs/reference/ai-commands.md +92 -0
- package/docs/reference/cli.md +756 -0
- package/docs/reference/environment-variables.md +192 -0
- package/docs/troubleshooting.md +543 -0
- package/package.json +1 -1
- package/scripts/phase-runner.ts +1 -1
- package/scripts/utils/__tests__/multi-repo-validator.test.ts +159 -1
- package/scripts/utils/multi-repo-validator.ts +50 -0
- package/scripts/utils/tasks-format-validator.ts +3 -3
- package/templates/claude/agents/e2e-first-planner/AGENT.md +1 -1
- package/templates/claude/agents/pr-resolver/AGENT.md +15 -3
- package/templates/claude/commands/michi/e2e-plan.md +1 -1
- package/templates/claude/commands/michi/spec-design.md +2 -2
- package/templates/claude/commands/michi/spec-tasks.md +156 -0
- package/templates/claude/commands/michi/test-planning.md +1 -1
- package/templates/claude/commands/michi/validate-design.md +3 -3
- package/templates/claude/commands/michi-multi-repo/impl-all.md +30 -1
- package/templates/claude/commands/michi-multi-repo/propagate-specs.md +14 -1
- package/templates/claude/commands/michi-multi-repo/spec-review.md +16 -2
- package/templates/claude-agent/agents/repo-spec-executor.md +1 -1
- package/templates/claude-agent/commands/michi/spec-tasks.md +117 -0
- package/templates/claude-agent/rules/code-size-monitor.md +26 -0
- package/templates/claude-agent/rules/code-size-rules.md +32 -0
- package/templates/codex/AGENTS.override.md +1 -1
- package/templates/codex/rules/README.md +2 -2
- package/templates/cursor/commands/michi/spec-tasks.md +117 -0
- package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +1 -1
- package/docs/context.md +0 -59
- package/docs/michi-development/contributing/development.md +0 -341
- package/docs/michi-development/contributing/release.md +0 -365
- package/docs/michi-development/design/config-unification.md +0 -733
- package/docs/michi-development/design/design-config-current-state.md +0 -330
- package/docs/michi-development/design/design-config-implementation.md +0 -628
- package/docs/michi-development/design/design-config-migration.md +0 -952
- package/docs/michi-development/design/design-config-security.md +0 -771
- package/docs/michi-development/design/design-config-solution.md +0 -583
- package/docs/michi-development/design/design-config-testing.md +0 -892
- package/docs/michi-development/testing/manual-verification-flow.md +0 -871
- package/docs/michi-development/testing/manual-verification-other-tools.md +0 -1279
- package/docs/michi-development/testing/manual-verification-troubleshooting.md +0 -122
- package/docs/michi-development/testing/pre-publish-checklist.md +0 -560
- package/docs/michi-development/testing-strategy.md +0 -87
- package/docs/plan.md +0 -275
- package/docs/user-guide/getting-started/github-token-setup.md +0 -510
- package/docs/user-guide/getting-started/new-repository-setup.md +0 -704
- package/docs/user-guide/getting-started/quick-start.md +0 -212
- package/docs/user-guide/getting-started/setup.md +0 -819
- package/docs/user-guide/guides/agent-skills-integration.md +0 -222
- package/docs/user-guide/guides/customization.md +0 -537
- package/docs/user-guide/guides/internationalization.md +0 -540
- package/docs/user-guide/guides/migration-guide.md +0 -138
- package/docs/user-guide/guides/multi-project.md +0 -368
- package/docs/user-guide/guides/multi-repo-guide.md +0 -1590
- package/docs/user-guide/guides/phase-automation.md +0 -419
- package/docs/user-guide/guides/workflow.md +0 -574
- package/docs/user-guide/hands-on/README.md +0 -142
- package/docs/user-guide/hands-on/claude-agent-setup.md +0 -597
- package/docs/user-guide/hands-on/claude-setup.md +0 -452
- package/docs/user-guide/hands-on/cursor-setup.md +0 -353
- package/docs/user-guide/hands-on/troubleshooting.md +0 -964
- package/docs/user-guide/hands-on/verification-checklist.md +0 -439
- package/docs/user-guide/hands-on/workflow-walkthrough.md +0 -1078
- package/docs/user-guide/reference/config.md +0 -589
- package/docs/user-guide/reference/multi-repo-api.md +0 -771
- package/docs/user-guide/reference/quick-reference.md +0 -297
- package/docs/user-guide/reference/security-test-payloads.md +0 -50
- package/docs/user-guide/reference/tasks-template.md +0 -550
- package/docs/user-guide/release/ci-setup-java.md +0 -114
- package/docs/user-guide/release/ci-setup-nodejs.md +0 -94
- package/docs/user-guide/release/ci-setup-php.md +0 -102
- package/docs/user-guide/release/ci-setup-troubleshooting.md +0 -94
- package/docs/user-guide/release/ci-setup.md +0 -188
- package/docs/user-guide/release/release-flow.md +0 -476
- package/docs/user-guide/templates/test-specs/README.md +0 -173
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +0 -553
- package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +0 -435
- package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +0 -454
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +0 -625
- package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +0 -328
- package/docs/user-guide/testing/integration-tests.md +0 -312
- package/docs/user-guide/testing/tdd-cycle.md +0 -349
- package/docs/user-guide/testing/test-execution-flow.md +0 -396
- package/docs/user-guide/testing/test-failure-handling.md +0 -521
- package/docs/user-guide/testing/test-planning-flow.md +0 -185
- package/docs/user-guide/testing-strategy.md +0 -185
- package/docs/verification-guide.md +0 -518
|
@@ -1,553 +0,0 @@
|
|
|
1
|
-
# E2E Test Specification: {{TEST_NAME}}
|
|
2
|
-
|
|
3
|
-
**Author**: {{AUTHOR}}
|
|
4
|
-
**Date**: {{DATE}}
|
|
5
|
-
**Version**: 1.0
|
|
6
|
-
|
|
7
|
-
## 1. Overview
|
|
8
|
-
|
|
9
|
-
### 1.1 Purpose
|
|
10
|
-
{{PURPOSE}}
|
|
11
|
-
|
|
12
|
-
Example: To verify that end users can successfully complete critical user journeys in the {{APPLICATION_NAME}} from start to finish in a real browser environment.
|
|
13
|
-
|
|
14
|
-
### 1.2 Scope
|
|
15
|
-
{{SCOPE}}
|
|
16
|
-
|
|
17
|
-
Example: This test specification covers the complete user registration and login flow, including UI interactions, form validations, and successful authentication.
|
|
18
|
-
|
|
19
|
-
### 1.3 Testing Tool
|
|
20
|
-
- **Tool**: {{TOOL_NAME}}
|
|
21
|
-
- **Version**: {{VERSION}}
|
|
22
|
-
|
|
23
|
-
Example:
|
|
24
|
-
- **Tool**: Playwright / Selenium WebDriver / Cypress
|
|
25
|
-
- **Version**: 1.40.0 / 4.15.0 / 13.6.0
|
|
26
|
-
|
|
27
|
-
## 2. Test Environment
|
|
28
|
-
|
|
29
|
-
### 2.1 Software Requirements
|
|
30
|
-
- Browser Automation Tool: {{AUTOMATION_TOOL}} {{VERSION}}
|
|
31
|
-
- Browsers: {{BROWSER_LIST}}
|
|
32
|
-
- Application Environment: {{ENV_URL}}
|
|
33
|
-
- Backend API: {{API_URL}}
|
|
34
|
-
- Test Data Management: {{DATA_MANAGEMENT}}
|
|
35
|
-
|
|
36
|
-
Example:
|
|
37
|
-
- Browser Automation Tool: Playwright 1.40.0
|
|
38
|
-
- Browsers: Chrome 120, Firefox 121, Safari 17
|
|
39
|
-
- Application Environment: [https://staging.example.com](https://staging.example.com)
|
|
40
|
-
- Backend API: [https://api-staging.example.com](https://api-staging.example.com)
|
|
41
|
-
- Test Data Management: Test database with seeded data
|
|
42
|
-
|
|
43
|
-
### 2.2 Hardware Requirements
|
|
44
|
-
- Test Machine: {{MACHINE_SPEC}}
|
|
45
|
-
- Display Resolution: {{RESOLUTION_LIST}}
|
|
46
|
-
- Network: {{NETWORK_REQUIREMENTS}}
|
|
47
|
-
|
|
48
|
-
Example:
|
|
49
|
-
- Test Machine: macOS/Windows/Linux with 8GB RAM
|
|
50
|
-
- Display Resolution: 1920x1080 (Desktop), 768x1024 (Tablet), 375x667 (Mobile)
|
|
51
|
-
- Network: Stable internet connection (minimum 10 Mbps)
|
|
52
|
-
|
|
53
|
-
### 2.3 Test Data
|
|
54
|
-
- Test user accounts: `{{TEST_ACCOUNTS_FILE}}`
|
|
55
|
-
- Test data setup script: `{{SETUP_SCRIPT}}`
|
|
56
|
-
- Data cleanup script: `{{CLEANUP_SCRIPT}}`
|
|
57
|
-
- Environment variables: `{{ENV_FILE}}`
|
|
58
|
-
|
|
59
|
-
## 3. User Flows
|
|
60
|
-
|
|
61
|
-
### 3.1 User Journey Map
|
|
62
|
-
|
|
63
|
-
```text
|
|
64
|
-
{{STEP_1}} → {{STEP_2}} → {{STEP_3}} → {{STEP_4}} → {{STEP_5}}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Example:
|
|
68
|
-
|
|
69
|
-
```text
|
|
70
|
-
Landing Page → Sign Up Form → Email Verification → Profile Setup → Dashboard
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### 3.2 User Flow Details
|
|
74
|
-
|
|
75
|
-
| Flow ID | Flow Name | Description | Priority | Steps |
|
|
76
|
-
|---------|-----------|-------------|----------|-------|
|
|
77
|
-
| {{FLOW_1}} | {{NAME}} | {{DESC}} | High/Medium/Low | {{COUNT}} |
|
|
78
|
-
| {{FLOW_2}} | {{NAME}} | {{DESC}} | High/Medium/Low | {{COUNT}} |
|
|
79
|
-
|
|
80
|
-
Example:
|
|
81
|
-
|
|
82
|
-
| Flow ID | Flow Name | Description | Priority | Steps |
|
|
83
|
-
|---------|-----------|-------------|----------|-------|
|
|
84
|
-
| UF-001 | User Registration | New user signs up and verifies email | High | 5 |
|
|
85
|
-
| UF-002 | Product Purchase | User browses, adds to cart, and completes checkout | High | 8 |
|
|
86
|
-
| UF-003 | Password Reset | User resets forgotten password | Medium | 4 |
|
|
87
|
-
|
|
88
|
-
### 3.3 Browser/Device Matrix (Optional)
|
|
89
|
-
|
|
90
|
-
**Note**: This matrix is optional. Include it if you need to test across multiple browsers and devices.
|
|
91
|
-
|
|
92
|
-
Test each user flow on the following combinations:
|
|
93
|
-
|
|
94
|
-
| Browser | Version | Desktop | Tablet | Mobile | Priority |
|
|
95
|
-
|---------|---------|---------|--------|--------|----------|
|
|
96
|
-
| Chrome | {{VER}} | ✓ | ✓ | ✓ | High |
|
|
97
|
-
| Firefox | {{VER}} | ✓ | - | - | Medium |
|
|
98
|
-
| Safari | {{VER}} | ✓ | ✓ | ✓ | High |
|
|
99
|
-
| Edge | {{VER}} | ✓ | - | - | Low |
|
|
100
|
-
|
|
101
|
-
Example:
|
|
102
|
-
|
|
103
|
-
| Browser | Version | Desktop | Tablet | Mobile | Priority |
|
|
104
|
-
|---------|---------|---------|--------|--------|----------|
|
|
105
|
-
| Chrome | 120+ | ✓ | ✓ | ✓ | High |
|
|
106
|
-
| Firefox | 121+ | ✓ | - | - | Medium |
|
|
107
|
-
| Safari | 17+ | ✓ | ✓ | ✓ | High |
|
|
108
|
-
| Edge | 120+ | ✓ | - | - | Low |
|
|
109
|
-
|
|
110
|
-
**Priority Guide**:
|
|
111
|
-
- High: Must test on all marked platforms
|
|
112
|
-
- Medium: Test on desktop only
|
|
113
|
-
- Low: Test if time permits
|
|
114
|
-
|
|
115
|
-
## 4. Test Cases
|
|
116
|
-
|
|
117
|
-
### Test Case E2E-001: {{TEST_CASE_NAME}}
|
|
118
|
-
|
|
119
|
-
**Description**: {{TEST_CASE_DESCRIPTION}}
|
|
120
|
-
|
|
121
|
-
Example: Verify that a new user can complete the entire registration process from landing page to successful login.
|
|
122
|
-
|
|
123
|
-
**User Flow**: {{FLOW_ID}}
|
|
124
|
-
**Browser/Device**: {{BROWSER}} / {{DEVICE}}
|
|
125
|
-
|
|
126
|
-
Example:
|
|
127
|
-
**User Flow**: UF-001 (User Registration)
|
|
128
|
-
**Browser/Device**: Chrome / Desktop
|
|
129
|
-
|
|
130
|
-
**Preconditions**:
|
|
131
|
-
- {{PRECONDITION_1}}
|
|
132
|
-
- {{PRECONDITION_2}}
|
|
133
|
-
|
|
134
|
-
Example:
|
|
135
|
-
- Application is deployed to staging environment
|
|
136
|
-
- Test email account is accessible
|
|
137
|
-
- No existing user with test email address
|
|
138
|
-
|
|
139
|
-
**Test Steps**:
|
|
140
|
-
1. {{STEP_1}}
|
|
141
|
-
2. {{STEP_2}}
|
|
142
|
-
3. {{STEP_3}}
|
|
143
|
-
4. {{STEP_4}}
|
|
144
|
-
5. {{STEP_5}}
|
|
145
|
-
|
|
146
|
-
Example:
|
|
147
|
-
1. Navigate to `https://staging.example.com`
|
|
148
|
-
2. Click "Sign Up" button
|
|
149
|
-
3. Fill in registration form (name: "Test User", email: "test@example.com", password: "Test1234!")
|
|
150
|
-
4. Click "Create Account" button
|
|
151
|
-
5. Verify confirmation message appears
|
|
152
|
-
6. Check email inbox for verification link
|
|
153
|
-
7. Click verification link in email
|
|
154
|
-
8. Verify redirect to profile setup page
|
|
155
|
-
9. Complete profile setup
|
|
156
|
-
10. Verify redirect to dashboard with welcome message
|
|
157
|
-
|
|
158
|
-
**Expected Results**:
|
|
159
|
-
{{EXPECTED_RESULTS}}
|
|
160
|
-
|
|
161
|
-
Example:
|
|
162
|
-
- User is successfully registered
|
|
163
|
-
- Verification email is received within 1 minute
|
|
164
|
-
- Profile setup page loads correctly
|
|
165
|
-
- Dashboard displays user name and welcome message
|
|
166
|
-
- User can logout and login again with credentials
|
|
167
|
-
|
|
168
|
-
**Actual Results**:
|
|
169
|
-
[To be filled during test execution]
|
|
170
|
-
|
|
171
|
-
**Status**: [ ] Pass / [ ] Fail / [ ] Blocked
|
|
172
|
-
|
|
173
|
-
**Screenshots/Videos**:
|
|
174
|
-
- [ ] Screenshot of each major step
|
|
175
|
-
- [ ] Video recording of entire flow
|
|
176
|
-
|
|
177
|
-
**Notes**:
|
|
178
|
-
{{NOTES}}
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
### Test Case E2E-002: {{TEST_CASE_NAME}}
|
|
183
|
-
|
|
184
|
-
**Description**: {{TEST_CASE_DESCRIPTION}}
|
|
185
|
-
|
|
186
|
-
Example: Verify that a user can complete a product purchase from search to payment confirmation.
|
|
187
|
-
|
|
188
|
-
**User Flow**: {{FLOW_ID}}
|
|
189
|
-
**Browser/Device**: {{BROWSER}} / {{DEVICE}}
|
|
190
|
-
|
|
191
|
-
**Preconditions**:
|
|
192
|
-
- {{PRECONDITION_1}}
|
|
193
|
-
- {{PRECONDITION_2}}
|
|
194
|
-
|
|
195
|
-
**Test Steps**:
|
|
196
|
-
1. {{STEP_1}}
|
|
197
|
-
2. {{STEP_2}}
|
|
198
|
-
3. {{STEP_3}}
|
|
199
|
-
|
|
200
|
-
**Expected Results**:
|
|
201
|
-
{{EXPECTED_RESULTS}}
|
|
202
|
-
|
|
203
|
-
**Actual Results**:
|
|
204
|
-
[To be filled during test execution]
|
|
205
|
-
|
|
206
|
-
**Status**: [ ] Pass / [ ] Fail / [ ] Blocked
|
|
207
|
-
|
|
208
|
-
**Screenshots/Videos**:
|
|
209
|
-
- [ ] Screenshot of each major step
|
|
210
|
-
- [ ] Video recording of entire flow
|
|
211
|
-
|
|
212
|
-
**Notes**:
|
|
213
|
-
{{NOTES}}
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
### Test Case E2E-003: Error Handling - {{SCENARIO_NAME}}
|
|
218
|
-
|
|
219
|
-
**Description**: {{TEST_CASE_DESCRIPTION}}
|
|
220
|
-
|
|
221
|
-
Example: Verify that user receives appropriate error messages when submitting invalid registration data.
|
|
222
|
-
|
|
223
|
-
**User Flow**: {{FLOW_ID}}
|
|
224
|
-
**Browser/Device**: {{BROWSER}} / {{DEVICE}}
|
|
225
|
-
|
|
226
|
-
**Preconditions**:
|
|
227
|
-
- {{PRECONDITION}}
|
|
228
|
-
|
|
229
|
-
**Test Steps**:
|
|
230
|
-
1. {{STEP_1}}
|
|
231
|
-
2. {{STEP_2}}
|
|
232
|
-
3. {{STEP_3}}
|
|
233
|
-
|
|
234
|
-
Example:
|
|
235
|
-
1. Navigate to registration page
|
|
236
|
-
2. Enter invalid email format: "notanemail"
|
|
237
|
-
3. Enter password less than minimum length: "123"
|
|
238
|
-
4. Click "Create Account"
|
|
239
|
-
5. Verify inline error messages appear for each field
|
|
240
|
-
6. Verify error messages are user-friendly and actionable
|
|
241
|
-
|
|
242
|
-
**Expected Results**:
|
|
243
|
-
{{EXPECTED_RESULTS}}
|
|
244
|
-
|
|
245
|
-
Example:
|
|
246
|
-
- Email field shows error: "Please enter a valid email address"
|
|
247
|
-
- Password field shows error: "Password must be at least 8 characters"
|
|
248
|
-
- Submit button remains disabled or form doesn't submit
|
|
249
|
-
- No server error occurs
|
|
250
|
-
|
|
251
|
-
**Actual Results**:
|
|
252
|
-
[To be filled during test execution]
|
|
253
|
-
|
|
254
|
-
**Status**: [ ] Pass / [ ] Fail / [ ] Blocked
|
|
255
|
-
|
|
256
|
-
**Screenshots/Videos**:
|
|
257
|
-
- [ ] Screenshot of error messages
|
|
258
|
-
|
|
259
|
-
**Notes**:
|
|
260
|
-
{{NOTES}}
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
### Test Case E2E-004: Responsive Design - {{DEVICE_TYPE}}
|
|
265
|
-
|
|
266
|
-
**Description**: {{TEST_CASE_DESCRIPTION}}
|
|
267
|
-
|
|
268
|
-
Example: Verify that the registration flow works correctly on mobile devices with proper responsive design.
|
|
269
|
-
|
|
270
|
-
**User Flow**: {{FLOW_ID}}
|
|
271
|
-
**Browser/Device**: {{BROWSER}} / {{DEVICE}}
|
|
272
|
-
|
|
273
|
-
Example:
|
|
274
|
-
**Browser/Device**: Chrome / Mobile (375x667)
|
|
275
|
-
|
|
276
|
-
**Preconditions**:
|
|
277
|
-
- {{PRECONDITION}}
|
|
278
|
-
|
|
279
|
-
**Test Steps**:
|
|
280
|
-
1. {{STEP_1}}
|
|
281
|
-
2. {{STEP_2}}
|
|
282
|
-
3. {{STEP_3}}
|
|
283
|
-
|
|
284
|
-
Example:
|
|
285
|
-
1. Open browser with mobile viewport (375x667)
|
|
286
|
-
2. Navigate to registration page
|
|
287
|
-
3. Verify all form fields are visible and accessible
|
|
288
|
-
4. Verify buttons are appropriately sized for touch
|
|
289
|
-
5. Complete registration flow
|
|
290
|
-
6. Verify no horizontal scrolling required
|
|
291
|
-
7. Verify all interactive elements are easily tappable
|
|
292
|
-
|
|
293
|
-
**Expected Results**:
|
|
294
|
-
{{EXPECTED_RESULTS}}
|
|
295
|
-
|
|
296
|
-
Example:
|
|
297
|
-
- Layout adapts properly to mobile viewport
|
|
298
|
-
- All text is readable without zooming
|
|
299
|
-
- Form fields are properly sized
|
|
300
|
-
- Navigation is accessible via hamburger menu
|
|
301
|
-
- No UI elements are cut off or overlapping
|
|
302
|
-
|
|
303
|
-
**Actual Results**:
|
|
304
|
-
[To be filled during test execution]
|
|
305
|
-
|
|
306
|
-
**Status**: [ ] Pass / [ ] Fail / [ ] Blocked
|
|
307
|
-
|
|
308
|
-
**Screenshots/Videos**:
|
|
309
|
-
- [ ] Screenshots at different viewport sizes
|
|
310
|
-
- [ ] Video of mobile interaction
|
|
311
|
-
|
|
312
|
-
**Notes**:
|
|
313
|
-
{{NOTES}}
|
|
314
|
-
|
|
315
|
-
---
|
|
316
|
-
|
|
317
|
-
## 5. Test Execution Summary
|
|
318
|
-
|
|
319
|
-
| ID | Test Name | Flow | Browser | Device | Status | Date | Notes |
|
|
320
|
-
|----|-----------|------|---------|--------|--------|------|-------|
|
|
321
|
-
| E2E-001 | {{NAME}} | {{FLOW}} | Chrome | Desktop | | | |
|
|
322
|
-
| E2E-002 | {{NAME}} | {{FLOW}} | Chrome | Desktop | | | |
|
|
323
|
-
| E2E-003 | {{NAME}} | {{FLOW}} | Firefox | Desktop | | | |
|
|
324
|
-
| E2E-004 | {{NAME}} | {{FLOW}} | Chrome | Mobile | | | |
|
|
325
|
-
|
|
326
|
-
## 6. Defects Found
|
|
327
|
-
|
|
328
|
-
| Defect ID | Severity | Description | Browser/Device | Screenshot/Video | Status |
|
|
329
|
-
|-----------|----------|-------------|----------------|------------------|--------|
|
|
330
|
-
| | High/Medium/Low | | | | Open/In Progress/Fixed/Closed |
|
|
331
|
-
|
|
332
|
-
## 7. Sign-off
|
|
333
|
-
|
|
334
|
-
**Tested By**: _______________
|
|
335
|
-
**Date**: _______________
|
|
336
|
-
**Approved By**: _______________
|
|
337
|
-
**Date**: _______________
|
|
338
|
-
|
|
339
|
-
---
|
|
340
|
-
|
|
341
|
-
## Appendix A: Test Environment Setup
|
|
342
|
-
|
|
343
|
-
### Playwright Setup
|
|
344
|
-
|
|
345
|
-
```bash
|
|
346
|
-
# Install Playwright
|
|
347
|
-
npm install -D @playwright/test
|
|
348
|
-
|
|
349
|
-
# Install browsers
|
|
350
|
-
npx playwright install
|
|
351
|
-
|
|
352
|
-
# Run tests
|
|
353
|
-
npx playwright test
|
|
354
|
-
|
|
355
|
-
# Run tests in UI mode
|
|
356
|
-
npx playwright test --ui
|
|
357
|
-
|
|
358
|
-
# Generate HTML report
|
|
359
|
-
npx playwright show-report
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### Selenium WebDriver Setup
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
# Install Selenium (Node.js)
|
|
366
|
-
npm install selenium-webdriver
|
|
367
|
-
|
|
368
|
-
# Download browser drivers
|
|
369
|
-
# ChromeDriver, GeckoDriver, etc.
|
|
370
|
-
|
|
371
|
-
# Run tests
|
|
372
|
-
node e2e-tests/registration.test.js
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
### Cypress Setup
|
|
376
|
-
|
|
377
|
-
```bash
|
|
378
|
-
# Install Cypress
|
|
379
|
-
npm install -D cypress
|
|
380
|
-
|
|
381
|
-
# Open Cypress
|
|
382
|
-
npx cypress open
|
|
383
|
-
|
|
384
|
-
# Run tests headless
|
|
385
|
-
npx cypress run
|
|
386
|
-
|
|
387
|
-
# Run specific test
|
|
388
|
-
npx cypress run --spec "cypress/e2e/registration.cy.js"
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
## Appendix B: Code Examples
|
|
392
|
-
|
|
393
|
-
### Example E2E Test Code (Playwright)
|
|
394
|
-
|
|
395
|
-
```typescript
|
|
396
|
-
import { test, expect } from '@playwright/test';
|
|
397
|
-
|
|
398
|
-
test('User registration flow', async ({ page }) => {
|
|
399
|
-
// Navigate to landing page
|
|
400
|
-
await page.goto('https://staging.example.com');
|
|
401
|
-
|
|
402
|
-
// Click sign up button
|
|
403
|
-
await page.click('text=Sign Up');
|
|
404
|
-
|
|
405
|
-
// Fill registration form
|
|
406
|
-
await page.fill('input[name="name"]', 'Test User');
|
|
407
|
-
await page.fill('input[name="email"]', 'test@example.com');
|
|
408
|
-
await page.fill('input[name="password"]', 'Test1234!');
|
|
409
|
-
|
|
410
|
-
// Submit form
|
|
411
|
-
await page.click('button[type="submit"]');
|
|
412
|
-
|
|
413
|
-
// Verify confirmation message
|
|
414
|
-
await expect(page.locator('text=Account created successfully')).toBeVisible();
|
|
415
|
-
|
|
416
|
-
// Verify redirect to dashboard
|
|
417
|
-
await expect(page).toHaveURL(/.*dashboard/);
|
|
418
|
-
await expect(page.locator('text=Welcome, Test User')).toBeVisible();
|
|
419
|
-
});
|
|
420
|
-
|
|
421
|
-
test('Registration with invalid email', async ({ page }) => {
|
|
422
|
-
await page.goto('https://staging.example.com/signup');
|
|
423
|
-
|
|
424
|
-
await page.fill('input[name="email"]', 'notanemail');
|
|
425
|
-
await page.fill('input[name="password"]', 'Test1234!');
|
|
426
|
-
await page.click('button[type="submit"]');
|
|
427
|
-
|
|
428
|
-
// Verify error message
|
|
429
|
-
await expect(page.locator('text=Please enter a valid email')).toBeVisible();
|
|
430
|
-
});
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
### Example E2E Test Code (Selenium WebDriver)
|
|
434
|
-
|
|
435
|
-
```javascript
|
|
436
|
-
const { Builder, By, until } = require('selenium-webdriver');
|
|
437
|
-
|
|
438
|
-
async function testUserRegistration() {
|
|
439
|
-
let driver = await new Builder().forBrowser('chrome').build();
|
|
440
|
-
|
|
441
|
-
try {
|
|
442
|
-
// Navigate to landing page
|
|
443
|
-
await driver.get('https://staging.example.com');
|
|
444
|
-
|
|
445
|
-
// Click sign up button
|
|
446
|
-
await driver.findElement(By.linkText('Sign Up')).click();
|
|
447
|
-
|
|
448
|
-
// Fill registration form
|
|
449
|
-
await driver.findElement(By.name('name')).sendKeys('Test User');
|
|
450
|
-
await driver.findElement(By.name('email')).sendKeys('test@example.com');
|
|
451
|
-
await driver.findElement(By.name('password')).sendKeys('Test1234!');
|
|
452
|
-
|
|
453
|
-
// Submit form
|
|
454
|
-
await driver.findElement(By.css('button[type="submit"]')).click();
|
|
455
|
-
|
|
456
|
-
// Wait for confirmation
|
|
457
|
-
await driver.wait(until.elementLocated(By.xpath('//*[contains(text(), "Account created")]')), 5000);
|
|
458
|
-
|
|
459
|
-
// Verify redirect
|
|
460
|
-
let currentUrl = await driver.getCurrentUrl();
|
|
461
|
-
assert(currentUrl.includes('dashboard'));
|
|
462
|
-
|
|
463
|
-
} finally {
|
|
464
|
-
await driver.quit();
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
testUserRegistration();
|
|
469
|
-
```
|
|
470
|
-
|
|
471
|
-
### Example E2E Test Code (Cypress)
|
|
472
|
-
|
|
473
|
-
```javascript
|
|
474
|
-
describe('User Registration Flow', () => {
|
|
475
|
-
it('should complete registration successfully', () => {
|
|
476
|
-
// Navigate to landing page
|
|
477
|
-
cy.visit('https://staging.example.com');
|
|
478
|
-
|
|
479
|
-
// Click sign up button
|
|
480
|
-
cy.contains('Sign Up').click();
|
|
481
|
-
|
|
482
|
-
// Fill registration form
|
|
483
|
-
cy.get('input[name="name"]').type('Test User');
|
|
484
|
-
cy.get('input[name="email"]').type('test@example.com');
|
|
485
|
-
cy.get('input[name="password"]').type('Test1234!');
|
|
486
|
-
|
|
487
|
-
// Submit form
|
|
488
|
-
cy.get('button[type="submit"]').click();
|
|
489
|
-
|
|
490
|
-
// Verify confirmation
|
|
491
|
-
cy.contains('Account created successfully').should('be.visible');
|
|
492
|
-
|
|
493
|
-
// Verify redirect to dashboard
|
|
494
|
-
cy.url().should('include', '/dashboard');
|
|
495
|
-
cy.contains('Welcome, Test User').should('be.visible');
|
|
496
|
-
});
|
|
497
|
-
|
|
498
|
-
it('should show error for invalid email', () => {
|
|
499
|
-
cy.visit('https://staging.example.com/signup');
|
|
500
|
-
|
|
501
|
-
cy.get('input[name="email"]').type('notanemail');
|
|
502
|
-
cy.get('input[name="password"]').type('Test1234!');
|
|
503
|
-
cy.get('button[type="submit"]').click();
|
|
504
|
-
|
|
505
|
-
// Verify error message
|
|
506
|
-
cy.contains('Please enter a valid email').should('be.visible');
|
|
507
|
-
});
|
|
508
|
-
});
|
|
509
|
-
```
|
|
510
|
-
|
|
511
|
-
## Appendix C: Screenshot and Video Configuration (Optional)
|
|
512
|
-
|
|
513
|
-
**Note**: This section is optional. Include it if you need to configure screenshot and video capture for your E2E tests.
|
|
514
|
-
|
|
515
|
-
### Playwright Configuration
|
|
516
|
-
|
|
517
|
-
```typescript
|
|
518
|
-
// playwright.config.ts
|
|
519
|
-
export default {
|
|
520
|
-
use: {
|
|
521
|
-
screenshot: 'only-on-failure',
|
|
522
|
-
video: 'retain-on-failure',
|
|
523
|
-
trace: 'retain-on-failure',
|
|
524
|
-
},
|
|
525
|
-
};
|
|
526
|
-
```
|
|
527
|
-
|
|
528
|
-
### Cypress Configuration
|
|
529
|
-
|
|
530
|
-
```javascript
|
|
531
|
-
// cypress.config.js
|
|
532
|
-
module.exports = {
|
|
533
|
-
video: true,
|
|
534
|
-
screenshotOnRunFailure: true,
|
|
535
|
-
videosFolder: 'cypress/videos',
|
|
536
|
-
screenshotsFolder: 'cypress/screenshots',
|
|
537
|
-
};
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
## Appendix D: Execution Timing (Optional)
|
|
541
|
-
|
|
542
|
-
**Note**: This section is optional. Include it if you need to specify when E2E tests should be executed.
|
|
543
|
-
|
|
544
|
-
## Phase B (Before Release) - Manual Execution
|
|
545
|
-
|
|
546
|
-
E2E tests are executed manually before creating a release tag:
|
|
547
|
-
|
|
548
|
-
1. After PR is merged to main branch
|
|
549
|
-
2. Before creating a release tag
|
|
550
|
-
3. Run all E2E tests in Phase B
|
|
551
|
-
4. Verify all critical user flows pass before proceeding to release
|
|
552
|
-
|
|
553
|
-
E2E tests are **NOT** executed automatically in CI/CD during PR phase (only unit tests run automatically).
|