@the-bearded-bear/claude-craft 5.0.0 → 5.1.0-next.6023ffb
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/Dev/i18n/de/Common/commands/recette.md +244 -0
- package/Dev/i18n/en/Common/commands/ralph-sprint.md +58 -0
- package/Dev/i18n/en/Common/commands/recette.md +244 -0
- package/Dev/i18n/es/Common/commands/recette.md +244 -0
- package/Dev/i18n/fr/Common/commands/ralph-sprint.md +58 -0
- package/Dev/i18n/fr/Common/commands/recette.md +244 -0
- package/Dev/i18n/pt/Common/commands/recette.md +244 -0
- package/Dev/scripts/install-angular-rules.sh +1 -1
- package/Dev/scripts/install-common-rules.sh +1 -1
- package/Dev/scripts/install-csharp-rules.sh +1 -1
- package/Dev/scripts/install-flutter-rules.sh +1 -1
- package/Dev/scripts/install-laravel-rules.sh +1 -1
- package/Dev/scripts/install-php-rules.sh +1 -1
- package/Dev/scripts/install-python-rules.sh +1 -1
- package/Dev/scripts/install-react-rules.sh +1 -1
- package/Dev/scripts/install-reactnative-rules.sh +1 -1
- package/Dev/scripts/install-symfony-rules.sh +1 -1
- package/Dev/scripts/install-vuejs-rules.sh +1 -1
- package/Project/agents/qa-recette.yaml +207 -0
- package/README.md +23 -3
- package/Tools/Ralph/lib/sprint-conductor.sh +304 -3
- package/Tools/Recette/lib/browser-executor.sh +794 -0
- package/Tools/Recette/lib/chrome-check.sh +307 -0
- package/Tools/Recette/lib/plan-generator.sh +544 -0
- package/Tools/Recette/lib/regression-detector.sh +487 -0
- package/Tools/Recette/lib/report-generator.sh +584 -0
- package/Tools/Recette/lib/session.sh +516 -0
- package/Tools/Recette/lib/test-generator.sh +576 -0
- package/Tools/Recette/templates/feature.feature.template +53 -0
- package/Tools/Recette/templates/functional-test.php.template +99 -0
- package/Tools/Recette/templates/report.md.template +141 -0
- package/Tools/Recette/templates/unit-test.php.template +70 -0
- package/Tools/i18n/recette/de.sh +156 -0
- package/Tools/i18n/recette/en.sh +156 -0
- package/Tools/i18n/recette/es.sh +156 -0
- package/Tools/i18n/recette/fr.sh +156 -0
- package/Tools/i18n/recette/pt.sh +156 -0
- package/package.json +1 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Automatisierte Akzeptanztests mit Claude in Chrome
|
|
3
|
+
argument-hint: --scope=<story|epic|sprint|task> --id=<target-id> [--resume|--record-gif|--dry-run]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# QA Recette - Automatisierte Akzeptanztests
|
|
7
|
+
|
|
8
|
+
Fuehrt automatisierte Akzeptanztests (Recette) auf Webanwendungen mit Claude in Chrome fuer Browser-Automatisierung durch. Dieses System implementiert die **Goldene Regel**: Ein behobener Fehler darf NIE wieder auftreten.
|
|
9
|
+
|
|
10
|
+
## Argumente
|
|
11
|
+
|
|
12
|
+
**$ARGUMENTS**
|
|
13
|
+
|
|
14
|
+
- `--scope=<type>`: Testumfang (story, epic, sprint, task)
|
|
15
|
+
- `--id=<target-id>`: Ziel-Identifikator (z.B. US-001, EPIC-01, Sprint-3)
|
|
16
|
+
- `--resume=<session-id>`: Von einer vorherigen Sitzung fortsetzen
|
|
17
|
+
- `--record-gif`: GIF der Ausfuehrung aufzeichnen
|
|
18
|
+
- `--dry-run`: Plan generieren ohne Tests auszufuehren
|
|
19
|
+
- `--base-url=<url>`: Basis-URL ueberschreiben
|
|
20
|
+
|
|
21
|
+
## Hauptfunktionen
|
|
22
|
+
|
|
23
|
+
| Funktion | Beschreibung |
|
|
24
|
+
|----------|--------------|
|
|
25
|
+
| **Umfassende Plaene** | Generiert umfassende Testplaene aus Akzeptanzkriterien |
|
|
26
|
+
| **Browser-Automatisierung** | Verwendet Claude in Chrome fuer echte Browser-Tests |
|
|
27
|
+
| **Sitzungswiederherstellung** | Checkpoint-basierte Fortsetzung fuer unterbrochene Sitzungen |
|
|
28
|
+
| **Goldene Regel** | Automatische Regressionstestgenerierung fuer alle Fehler |
|
|
29
|
+
| **Lebende Dokumentation** | Pflegt Testdokumentation mit Rueckverfolgbarkeit |
|
|
30
|
+
| **Regressionserkennung** | Vergleicht Laeufe zur Erkennung von Regressionen |
|
|
31
|
+
|
|
32
|
+
## Voraussetzungen
|
|
33
|
+
|
|
34
|
+
1. **Claude in Chrome Extension**: Version 1.0.36 oder hoeher
|
|
35
|
+
2. **Chrome Browser**: Geoeffnet mit aktiver Extension
|
|
36
|
+
3. **Claude Code**: Gestartet mit `--chrome` Flag oder `/chrome` Befehl
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Claude Code mit Chrome-Unterstuetzung starten
|
|
40
|
+
claude --chrome
|
|
41
|
+
|
|
42
|
+
# Oder Chrome in bestehender Sitzung aktivieren
|
|
43
|
+
/chrome
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Prozess
|
|
47
|
+
|
|
48
|
+
### 1. Verifizierung
|
|
49
|
+
|
|
50
|
+
Der Befehl prueft zuerst, ob Chrome MCP verfuegbar ist:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
┌─────────────────────────────────────────┐
|
|
54
|
+
│ 1. check_chrome_mcp() │
|
|
55
|
+
│ - MCP claude-in-chrome vorhanden? │
|
|
56
|
+
│ - Extension verbunden? │
|
|
57
|
+
│ - Website-Berechtigungen OK? │
|
|
58
|
+
└─────────────────────────────────────────┘
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. Testplan-Generierung
|
|
62
|
+
|
|
63
|
+
Generiert einen umfassenden Testplan, der abdeckt:
|
|
64
|
+
|
|
65
|
+
| Kategorie | Beschreibung |
|
|
66
|
+
|-----------|--------------|
|
|
67
|
+
| `acceptance_criteria_validation` | Tests fuer jedes AC |
|
|
68
|
+
| `edge_cases` | Randbedingungen |
|
|
69
|
+
| `error_scenarios` | Fehlerbehandlung |
|
|
70
|
+
| `ui_ux_verification` | UI/UX-Konsistenz |
|
|
71
|
+
| `performance_checks` | Ladezeiten |
|
|
72
|
+
| `security_basics` | XSS, CSRF, Injection |
|
|
73
|
+
|
|
74
|
+
### 3. Testausfuehrung
|
|
75
|
+
|
|
76
|
+
Jeder Test wird ueber Chrome ausgefuehrt:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Test TC-001
|
|
80
|
+
├── Schritt 1: navigate → /login
|
|
81
|
+
├── Schritt 2: type → #email = "user@test.com"
|
|
82
|
+
├── Schritt 3: click → button[type='submit']
|
|
83
|
+
└── Assertions
|
|
84
|
+
├── url_matches → ^.*/dashboard$
|
|
85
|
+
└── element_visible → .welcome-message
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. Fehler → Test → Regression
|
|
89
|
+
|
|
90
|
+
Wenn ein Fehler erkannt wird:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
1. Fehler waehrend Recette erkannt
|
|
94
|
+
│
|
|
95
|
+
▼
|
|
96
|
+
2. Klassifizierung (visual, interaction, validation, logic, security, API)
|
|
97
|
+
│
|
|
98
|
+
▼
|
|
99
|
+
3. Tests nach Typ generieren:
|
|
100
|
+
- Logic/Validation → Unit-Test
|
|
101
|
+
- API/Service → Funktionstest
|
|
102
|
+
- Benutzerfluss → Behat-Feature
|
|
103
|
+
│
|
|
104
|
+
▼
|
|
105
|
+
4. Zum Regressionsregister mit @regression Tag hinzufuegen
|
|
106
|
+
│
|
|
107
|
+
▼
|
|
108
|
+
5. Bug beheben (TDD-Workflow)
|
|
109
|
+
│
|
|
110
|
+
▼
|
|
111
|
+
6. Verifizieren: alle Regressionstests bestehen
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Schnellstart-Beispiele
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Eine bestimmte Story testen
|
|
118
|
+
/qa:recette --scope=story --id=US-001
|
|
119
|
+
|
|
120
|
+
# Alle Stories eines Sprints testen
|
|
121
|
+
/qa:recette --scope=sprint --id=Sprint-3
|
|
122
|
+
|
|
123
|
+
# Dry Run um Testplan zu sehen
|
|
124
|
+
/qa:recette --scope=story --id=US-001 --dry-run
|
|
125
|
+
|
|
126
|
+
# Unterbrochene Sitzung fortsetzen
|
|
127
|
+
/qa:recette --scope=story --id=US-001 --resume=REC-20260130-143022
|
|
128
|
+
|
|
129
|
+
# Ausfuehrung als GIF aufzeichnen
|
|
130
|
+
/qa:recette --scope=story --id=US-001 --record-gif
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Sitzungswiederherstellung
|
|
134
|
+
|
|
135
|
+
Sitzungen werden nach jedem Test gespeichert:
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
# .recette/sessions/{session-id}/state.yaml
|
|
139
|
+
session:
|
|
140
|
+
id: "REC-20260130-143022"
|
|
141
|
+
status: "paused"
|
|
142
|
+
|
|
143
|
+
progress:
|
|
144
|
+
current_test_index: 5
|
|
145
|
+
tests:
|
|
146
|
+
total: 15
|
|
147
|
+
passed: 4
|
|
148
|
+
failed: 1
|
|
149
|
+
pending: 10
|
|
150
|
+
|
|
151
|
+
recovery:
|
|
152
|
+
resumable: true
|
|
153
|
+
resume_from:
|
|
154
|
+
test_id: "TC-005"
|
|
155
|
+
step_index: 0
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Zum Fortsetzen:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
/qa:recette --scope=story --id=US-001 --resume=REC-20260130-143022
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Regressionsregister
|
|
165
|
+
|
|
166
|
+
Alle erkannten Fehler werden verfolgt:
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
# .recette/regression/registry.yaml
|
|
170
|
+
entries:
|
|
171
|
+
- id: "REG-001"
|
|
172
|
+
error_id: "ERR-001"
|
|
173
|
+
source:
|
|
174
|
+
scope: "story"
|
|
175
|
+
target_id: "US-001"
|
|
176
|
+
generated_tests:
|
|
177
|
+
- type: "unit"
|
|
178
|
+
path: "tests/Unit/Auth/LoginErrorTest.php"
|
|
179
|
+
- type: "behat"
|
|
180
|
+
path: "features/auth/login_error.feature"
|
|
181
|
+
fix:
|
|
182
|
+
status: "verified"
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Ausgabestruktur
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
.recette/
|
|
189
|
+
├── plans/ # Testplaene (YAML)
|
|
190
|
+
│ └── story-US-001-plan.yaml
|
|
191
|
+
├── sessions/ # Sitzungszustaende
|
|
192
|
+
│ └── REC-20260130-143022/
|
|
193
|
+
│ ├── state.yaml
|
|
194
|
+
│ ├── screenshots/
|
|
195
|
+
│ ├── checkpoints/
|
|
196
|
+
│ └── logs/
|
|
197
|
+
├── regression/ # Regressions-Suite
|
|
198
|
+
│ ├── registry.yaml
|
|
199
|
+
│ └── tests/
|
|
200
|
+
│ ├── Unit/
|
|
201
|
+
│ ├── Functional/
|
|
202
|
+
│ └── Behat/
|
|
203
|
+
├── metrics/ # Historische Daten
|
|
204
|
+
│ └── history.jsonl
|
|
205
|
+
└── reports/ # Generierte Berichte
|
|
206
|
+
└── REC-20260130-143022-report.md
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Verwandte Befehle
|
|
210
|
+
|
|
211
|
+
| Befehl | Beschreibung |
|
|
212
|
+
|--------|--------------|
|
|
213
|
+
| `/qa:recette-status` | Sitzungsstatus anzeigen |
|
|
214
|
+
| `/qa:recette-regression` | Regressionstests anzeigen |
|
|
215
|
+
| `/qa:recette-report` | Bericht generieren |
|
|
216
|
+
| `/qa:validate` | Story AC validieren |
|
|
217
|
+
| `/qa:automate` | Automatisierte Tests erstellen |
|
|
218
|
+
|
|
219
|
+
## Chrome-Faehigkeiten
|
|
220
|
+
|
|
221
|
+
| Kategorie | Aktionen |
|
|
222
|
+
|-----------|----------|
|
|
223
|
+
| **Navigation** | navigate, back, forward, refresh |
|
|
224
|
+
| **Interaktion** | click, type, fill_form, scroll, hover |
|
|
225
|
+
| **Lesen** | DOM-Zustand, Element-Text, Attribute |
|
|
226
|
+
| **Debugging** | Konsolen-Logs, Netzwerkanfragen, Fehler |
|
|
227
|
+
| **Erfassung** | Screenshot, GIF-Aufnahme |
|
|
228
|
+
|
|
229
|
+
## Fehlermeldungen
|
|
230
|
+
|
|
231
|
+
| Fehler | Loesung |
|
|
232
|
+
|--------|---------|
|
|
233
|
+
| "MCP nicht erkannt" | `claude --chrome` oder `/chrome` ausfuehren |
|
|
234
|
+
| "Extension nicht verbunden" | Chrome oeffnen, Extension pruefen |
|
|
235
|
+
| "Berechtigung erforderlich" | Extension auf der Domain autorisieren |
|
|
236
|
+
| "Version veraltet" | Chrome Extension auf v1.0.36+ aktualisieren |
|
|
237
|
+
|
|
238
|
+
## Best Practices
|
|
239
|
+
|
|
240
|
+
1. **Mit Dry-Run beginnen**: Testplan vor Ausfuehrung pruefen
|
|
241
|
+
2. **Spezifische Scopes verwenden**: Stories einzeln testen fuer bessere Nachverfolgung
|
|
242
|
+
3. **Regressionen pruefen**: `.recette/regression/` nach jedem Lauf konsultieren
|
|
243
|
+
4. **GIF-Aufnahme aktivieren**: Zum Debuggen komplexer Fehler
|
|
244
|
+
5. **Basis-URL pflegen**: Im Plan fuer konsistente Tests konfigurieren
|
|
@@ -108,6 +108,61 @@ The conductor stops when any condition is met:
|
|
|
108
108
|
| Stop window | 06:00 | Time-based stop (for overnight) |
|
|
109
109
|
| Critical escalation | - | Pauses on critical issues |
|
|
110
110
|
|
|
111
|
+
## Parallel Processing
|
|
112
|
+
|
|
113
|
+
When `--parallel N` is specified, the ASC processes stories in parallel waves:
|
|
114
|
+
|
|
115
|
+
### How It Works
|
|
116
|
+
|
|
117
|
+
1. **Dependency Graph**: The ASC builds a dependency graph from `blocked_by` relationships
|
|
118
|
+
2. **Wave Processing**: Stories are processed in waves based on dependency satisfaction
|
|
119
|
+
3. **Slot Management**: Up to N concurrent sessions, limited by CPU/memory thresholds
|
|
120
|
+
4. **Sequential Merge**: Git branches are merged sequentially to avoid conflicts
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
Wave 1: [US-001, US-002, US-003] ← Independent stories (no blockers)
|
|
124
|
+
↓ ↓ ↓
|
|
125
|
+
Session Session Session
|
|
126
|
+
↓ ↓ ↓
|
|
127
|
+
Complete Complete Complete
|
|
128
|
+
|
|
129
|
+
Wave 2: [US-004, US-005] ← Depend on US-001/US-002 (now done)
|
|
130
|
+
↓ ↓
|
|
131
|
+
Session Session
|
|
132
|
+
↓ ↓
|
|
133
|
+
Complete Complete
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Dependency Handling
|
|
137
|
+
|
|
138
|
+
Stories are only scheduled when their dependencies are satisfied:
|
|
139
|
+
|
|
140
|
+
```yaml
|
|
141
|
+
# sprint-status.yaml
|
|
142
|
+
stories:
|
|
143
|
+
US-001:
|
|
144
|
+
status: ready-for-dev
|
|
145
|
+
blocked_by: [] # ✓ Can start immediately
|
|
146
|
+
US-002:
|
|
147
|
+
status: ready-for-dev
|
|
148
|
+
blocked_by: [] # ✓ Can start immediately
|
|
149
|
+
US-003:
|
|
150
|
+
status: ready-for-dev
|
|
151
|
+
blocked_by: [US-001] # ✗ Waits for US-001 completion
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Resource Limits
|
|
155
|
+
|
|
156
|
+
```yaml
|
|
157
|
+
# ralph-autonomous.yml
|
|
158
|
+
parallel:
|
|
159
|
+
enabled: true
|
|
160
|
+
max_concurrent: 3
|
|
161
|
+
resource_limits:
|
|
162
|
+
cpu_percent: 80 # Don't spawn if CPU > 80%
|
|
163
|
+
mem_percent: 80 # Don't spawn if memory > 80%
|
|
164
|
+
```
|
|
165
|
+
|
|
111
166
|
## Quick Start Examples
|
|
112
167
|
|
|
113
168
|
```bash
|
|
@@ -117,6 +172,9 @@ The conductor stops when any condition is met:
|
|
|
117
172
|
# Parallel processing with 3 sessions
|
|
118
173
|
/common:ralph-sprint "Sprint 3" --parallel 3
|
|
119
174
|
|
|
175
|
+
# Combined: parallel overnight
|
|
176
|
+
/common:ralph-sprint "Sprint 3" --parallel 3 --overnight
|
|
177
|
+
|
|
120
178
|
# Supervised mode (confirm each story)
|
|
121
179
|
/common:ralph-sprint "Sprint 3" --supervised
|
|
122
180
|
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Automated acceptance testing with Claude in Chrome
|
|
3
|
+
argument-hint: --scope=<story|epic|sprint|task> --id=<target-id> [--resume|--record-gif|--dry-run]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# QA Recette - Automated Acceptance Testing
|
|
7
|
+
|
|
8
|
+
Execute automated acceptance tests (recette) on web applications using Claude in Chrome for browser automation. This system implements the **Golden Rule**: A fixed bug should NEVER reappear.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
**$ARGUMENTS**
|
|
13
|
+
|
|
14
|
+
- `--scope=<type>`: Scope of testing (story, epic, sprint, task)
|
|
15
|
+
- `--id=<target-id>`: Target identifier (e.g., US-001, EPIC-01, Sprint-3)
|
|
16
|
+
- `--resume=<session-id>`: Resume from a previous session
|
|
17
|
+
- `--record-gif`: Record GIF of test execution
|
|
18
|
+
- `--dry-run`: Generate plan without executing tests
|
|
19
|
+
- `--base-url=<url>`: Override base URL for testing
|
|
20
|
+
|
|
21
|
+
## Key Features
|
|
22
|
+
|
|
23
|
+
| Feature | Description |
|
|
24
|
+
|---------|-------------|
|
|
25
|
+
| **Comprehensive Plans** | Generates exhaustive test plans from acceptance criteria |
|
|
26
|
+
| **Browser Automation** | Uses Claude in Chrome for real browser testing |
|
|
27
|
+
| **Session Recovery** | Checkpoint-based resume for interrupted sessions |
|
|
28
|
+
| **Golden Rule** | Automatic regression test generation for all errors |
|
|
29
|
+
| **Living Documentation** | Maintains test documentation with traceability |
|
|
30
|
+
| **Regression Detection** | Compares runs to detect regressions |
|
|
31
|
+
|
|
32
|
+
## Prerequisites
|
|
33
|
+
|
|
34
|
+
1. **Claude in Chrome Extension**: Version 1.0.36 or higher
|
|
35
|
+
2. **Chrome Browser**: Open with the extension active
|
|
36
|
+
3. **Claude Code**: Started with `--chrome` flag or `/chrome` command
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Start Claude Code with Chrome support
|
|
40
|
+
claude --chrome
|
|
41
|
+
|
|
42
|
+
# Or enable Chrome in existing session
|
|
43
|
+
/chrome
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Process
|
|
47
|
+
|
|
48
|
+
### 1. Verification
|
|
49
|
+
|
|
50
|
+
The command first verifies Chrome MCP is available:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
┌─────────────────────────────────────────┐
|
|
54
|
+
│ 1. check_chrome_mcp() │
|
|
55
|
+
│ - MCP claude-in-chrome present? │
|
|
56
|
+
│ - Extension connected? │
|
|
57
|
+
│ - Site permissions OK? │
|
|
58
|
+
└─────────────────────────────────────────┘
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. Test Plan Generation
|
|
62
|
+
|
|
63
|
+
Generates comprehensive test plan covering:
|
|
64
|
+
|
|
65
|
+
| Category | Description |
|
|
66
|
+
|----------|-------------|
|
|
67
|
+
| `acceptance_criteria_validation` | Tests for each AC |
|
|
68
|
+
| `edge_cases` | Boundary conditions |
|
|
69
|
+
| `error_scenarios` | Error handling |
|
|
70
|
+
| `ui_ux_verification` | UI/UX consistency |
|
|
71
|
+
| `performance_checks` | Load times |
|
|
72
|
+
| `security_basics` | XSS, CSRF, injection |
|
|
73
|
+
|
|
74
|
+
### 3. Test Execution
|
|
75
|
+
|
|
76
|
+
Each test is executed via Chrome:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Test TC-001
|
|
80
|
+
├── Step 1: navigate → /login
|
|
81
|
+
├── Step 2: type → #email = "user@test.com"
|
|
82
|
+
├── Step 3: click → button[type='submit']
|
|
83
|
+
└── Assertions
|
|
84
|
+
├── url_matches → ^.*/dashboard$
|
|
85
|
+
└── element_visible → .welcome-message
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. Error → Test → Regression
|
|
89
|
+
|
|
90
|
+
When an error is detected:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
1. Error detected during recette
|
|
94
|
+
│
|
|
95
|
+
▼
|
|
96
|
+
2. Classification (visual, interaction, validation, logic, security, API)
|
|
97
|
+
│
|
|
98
|
+
▼
|
|
99
|
+
3. Generate tests based on type:
|
|
100
|
+
- Logic/Validation → Unit test
|
|
101
|
+
- API/Service → Functional test
|
|
102
|
+
- User flow → Behat feature
|
|
103
|
+
│
|
|
104
|
+
▼
|
|
105
|
+
4. Add to regression registry with @regression tag
|
|
106
|
+
│
|
|
107
|
+
▼
|
|
108
|
+
5. Fix the bug (TDD workflow)
|
|
109
|
+
│
|
|
110
|
+
▼
|
|
111
|
+
6. Verify: all regression tests pass
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Quick Start Examples
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Test a specific story
|
|
118
|
+
/qa:recette --scope=story --id=US-001
|
|
119
|
+
|
|
120
|
+
# Test all stories in a sprint
|
|
121
|
+
/qa:recette --scope=sprint --id=Sprint-3
|
|
122
|
+
|
|
123
|
+
# Dry run to see the test plan
|
|
124
|
+
/qa:recette --scope=story --id=US-001 --dry-run
|
|
125
|
+
|
|
126
|
+
# Resume an interrupted session
|
|
127
|
+
/qa:recette --scope=story --id=US-001 --resume=REC-20260130-143022
|
|
128
|
+
|
|
129
|
+
# Record execution as GIF
|
|
130
|
+
/qa:recette --scope=story --id=US-001 --record-gif
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Session Recovery
|
|
134
|
+
|
|
135
|
+
Sessions are checkpointed after each test:
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
# .recette/sessions/{session-id}/state.yaml
|
|
139
|
+
session:
|
|
140
|
+
id: "REC-20260130-143022"
|
|
141
|
+
status: "paused"
|
|
142
|
+
|
|
143
|
+
progress:
|
|
144
|
+
current_test_index: 5
|
|
145
|
+
tests:
|
|
146
|
+
total: 15
|
|
147
|
+
passed: 4
|
|
148
|
+
failed: 1
|
|
149
|
+
pending: 10
|
|
150
|
+
|
|
151
|
+
recovery:
|
|
152
|
+
resumable: true
|
|
153
|
+
resume_from:
|
|
154
|
+
test_id: "TC-005"
|
|
155
|
+
step_index: 0
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
To resume:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
/qa:recette --scope=story --id=US-001 --resume=REC-20260130-143022
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Regression Registry
|
|
165
|
+
|
|
166
|
+
All detected errors are tracked:
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
# .recette/regression/registry.yaml
|
|
170
|
+
entries:
|
|
171
|
+
- id: "REG-001"
|
|
172
|
+
error_id: "ERR-001"
|
|
173
|
+
source:
|
|
174
|
+
scope: "story"
|
|
175
|
+
target_id: "US-001"
|
|
176
|
+
generated_tests:
|
|
177
|
+
- type: "unit"
|
|
178
|
+
path: "tests/Unit/Auth/LoginErrorTest.php"
|
|
179
|
+
- type: "behat"
|
|
180
|
+
path: "features/auth/login_error.feature"
|
|
181
|
+
fix:
|
|
182
|
+
status: "verified"
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Output Structure
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
.recette/
|
|
189
|
+
├── plans/ # Test plans (YAML)
|
|
190
|
+
│ └── story-US-001-plan.yaml
|
|
191
|
+
├── sessions/ # Session states
|
|
192
|
+
│ └── REC-20260130-143022/
|
|
193
|
+
│ ├── state.yaml
|
|
194
|
+
│ ├── screenshots/
|
|
195
|
+
│ ├── checkpoints/
|
|
196
|
+
│ └── logs/
|
|
197
|
+
├── regression/ # Regression suite
|
|
198
|
+
│ ├── registry.yaml
|
|
199
|
+
│ └── tests/
|
|
200
|
+
│ ├── Unit/
|
|
201
|
+
│ ├── Functional/
|
|
202
|
+
│ └── Behat/
|
|
203
|
+
├── metrics/ # Historical data
|
|
204
|
+
│ └── history.jsonl
|
|
205
|
+
└── reports/ # Generated reports
|
|
206
|
+
└── REC-20260130-143022-report.md
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Related Commands
|
|
210
|
+
|
|
211
|
+
| Command | Description |
|
|
212
|
+
|---------|-------------|
|
|
213
|
+
| `/qa:recette-status` | Show session status |
|
|
214
|
+
| `/qa:recette-regression` | View regression tests |
|
|
215
|
+
| `/qa:recette-report` | Generate report |
|
|
216
|
+
| `/qa:validate` | Validate story AC |
|
|
217
|
+
| `/qa:automate` | Create automated tests |
|
|
218
|
+
|
|
219
|
+
## Chrome Capabilities
|
|
220
|
+
|
|
221
|
+
| Category | Actions |
|
|
222
|
+
|----------|---------|
|
|
223
|
+
| **Navigation** | navigate, back, forward, refresh |
|
|
224
|
+
| **Interaction** | click, type, fill_form, scroll, hover |
|
|
225
|
+
| **Reading** | DOM state, element text, attributes |
|
|
226
|
+
| **Debugging** | Console logs, network requests, errors |
|
|
227
|
+
| **Capture** | Screenshot, record GIF |
|
|
228
|
+
|
|
229
|
+
## Error Messages
|
|
230
|
+
|
|
231
|
+
| Error | Solution |
|
|
232
|
+
|-------|----------|
|
|
233
|
+
| "MCP not detected" | Run `claude --chrome` or `/chrome` |
|
|
234
|
+
| "Extension not connected" | Open Chrome, verify extension |
|
|
235
|
+
| "Permission required" | Allow extension on the domain |
|
|
236
|
+
| "Version outdated" | Update Chrome extension to v1.0.36+ |
|
|
237
|
+
|
|
238
|
+
## Best Practices
|
|
239
|
+
|
|
240
|
+
1. **Start with dry-run**: Verify the test plan before execution
|
|
241
|
+
2. **Use specific scopes**: Test stories individually for better tracking
|
|
242
|
+
3. **Review regressions**: Check `.recette/regression/` after each run
|
|
243
|
+
4. **Enable GIF recording**: For debugging complex failures
|
|
244
|
+
5. **Maintain base URL**: Configure in plan for consistent testing
|