@roopesh.yadava/qa-pack 1.0.3
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 +79 -0
- package/bin/postinstall.js +151 -0
- package/claude/commands/bug-report.md +185 -0
- package/claude/commands/qa-agent.md +12 -0
- package/claude/commands/write-acceptance-criteria.md +167 -0
- package/claude/settings.json +13 -0
- package/claude/settings.local.json.example +19 -0
- package/claude/skills/SKILLS_CONTEXT.md +194 -0
- package/claude/skills/accessibility-testing/SKILL.md +317 -0
- package/claude/skills/accessibility-testing/WCAG_CHECKS.md +478 -0
- package/claude/skills/automation/BDD_TEMPLATES.md +237 -0
- package/claude/skills/automation/LOCATOR_PATTERNS.md +169 -0
- package/claude/skills/automation/SKILL.md +364 -0
- package/claude/skills/bug-reporting/SKILL.md +257 -0
- package/claude/skills/delete-files/SKILL.md +141 -0
- package/claude/skills/manual-testing/SKILL.md +493 -0
- package/claude/skills/qa-agent/SKILL.md +391 -0
- package/claude/skills/qa-agent/product_context/CONTEXT_SCHEMA.md +58 -0
- package/claude/skills/qa-agent/product_context/README.md +19 -0
- package/claude/skills/test-charter/SKILL.md +300 -0
- package/claude/skills/ui-test-figma/COMPARISON_PATTERNS.md +300 -0
- package/claude/skills/ui-test-figma/SKILL.md +234 -0
- package/package.json +29 -0
- package/templates/CLAUDE.md +41 -0
- package/templates/cucumber.cjs +7 -0
- package/templates/mcp.json +18 -0
- package/templates/settings.local.json.example +19 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-agent
|
|
3
|
+
description: >
|
|
4
|
+
Master QA orchestrator that follows the flowchart: Jira Card Input →
|
|
5
|
+
Automation Testing (Gherkin → Step Definitions → POM → Automated Testing)
|
|
6
|
+
or Manual Testing (UI Testing/Figma → Manual Testing → Bug Reporting →
|
|
7
|
+
Test Charter) → End-to-End Testing.
|
|
8
|
+
Triggers when the user says: "qa agent", "start qa", "run qa", "full QA
|
|
9
|
+
for [CARD-ID]", "test [CARD-ID]", "automate [CARD-ID]", or invokes /qa-agent.
|
|
10
|
+
user-invocable: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# QA Agent — Master Orchestrator
|
|
14
|
+
|
|
15
|
+
## Context Engineering
|
|
16
|
+
<!-- IMPORTANT: Load .claude/skills/SKILLS_CONTEXT.md at startup — it gives the full pipeline
|
|
17
|
+
map in ~80 lines. Do NOT load individual SKILL.md files until you dispatch to that skill.
|
|
18
|
+
This keeps the startup context budget small. -->
|
|
19
|
+
|
|
20
|
+
Read `.claude/skills/SKILLS_CONTEXT.md` now for the dispatch map and artifact locations.
|
|
21
|
+
Do not read any other SKILL.md until you are about to invoke that skill.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
You are the QA Agent. Accept a Jira card number, dispatch to the right skill, or run
|
|
26
|
+
the full pipeline. Each skill works standalone or as part of the full E2E pipeline.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Step 0 — Load Product Context
|
|
31
|
+
|
|
32
|
+
Run this before asking the user anything.
|
|
33
|
+
|
|
34
|
+
### 0a — Try to derive the product from the user's input
|
|
35
|
+
|
|
36
|
+
If the user's message contains a Jira-style card ID (e.g. `QE-89`, `INDY-12`, `ZP-445`):
|
|
37
|
+
- Extract the project key prefix: `QE`, `INDY`, `ZP`
|
|
38
|
+
- Check if `.claude/skills/qa-agent/product_context/{PREFIX}/context.md` exists
|
|
39
|
+
- If not found by exact prefix, check if any folder under `product_context/` starts with that prefix
|
|
40
|
+
- If a match is found, set `PRODUCT_FOUND = true` and read the context file immediately
|
|
41
|
+
|
|
42
|
+
If no card ID in the message yet, set `PRODUCT_FOUND = false` and proceed to Step 1 normally.
|
|
43
|
+
|
|
44
|
+
### 0b — If context found: pre-populate and skip questions
|
|
45
|
+
|
|
46
|
+
Read the context file. Extract and store:
|
|
47
|
+
- `CTX_APP_URL` — from "App URL" line
|
|
48
|
+
- `CTX_USERNAME` — from "Username" line
|
|
49
|
+
- `CTX_PASSWORD` — from "Password" line
|
|
50
|
+
- `CTX_LOGIN_URL` — from "Login URL" line
|
|
51
|
+
- `CTX_OTP` — "yes" or "no" from "OTP Required" line
|
|
52
|
+
- `CTX_ENVIRONMENT` — from "Environment" line
|
|
53
|
+
|
|
54
|
+
**These values are silently pre-loaded. Do NOT announce them to the user unless asked.**
|
|
55
|
+
|
|
56
|
+
Show one line only:
|
|
57
|
+
> "Context loaded for **{PRODUCT_NAME}** — {n} prior runs, {n} known bugs."
|
|
58
|
+
|
|
59
|
+
In any subsequent step that would ask for App URL or credentials — check these
|
|
60
|
+
`CTX_*` values first. If set, use them silently and skip the question entirely.
|
|
61
|
+
|
|
62
|
+
### 0c — If context not found
|
|
63
|
+
|
|
64
|
+
Proceed normally. After the run completes (Step 6) the context will be written for
|
|
65
|
+
the first time, so the NEXT run benefits automatically.
|
|
66
|
+
|
|
67
|
+
### 0d — --reset-context flag
|
|
68
|
+
|
|
69
|
+
If the user's message contains `--reset-context`:
|
|
70
|
+
- Set `PRODUCT_FOUND = false`
|
|
71
|
+
- Ignore any existing context file for this run
|
|
72
|
+
- Proceed with fresh input collection as if no context exists
|
|
73
|
+
- At Step 6, overwrite the existing context file (replace, don't merge)
|
|
74
|
+
- Confirm: "Context reset — starting fresh for {PRODUCT_NAME}."
|
|
75
|
+
|
|
76
|
+
### 0e — Set AUTO_APPROVE flag
|
|
77
|
+
|
|
78
|
+
Evaluate after context load. Set `AUTO_APPROVE = true` when ALL three conditions are met:
|
|
79
|
+
1. `CTX_APP_URL` is set (product context has a saved App URL)
|
|
80
|
+
2. `CTX_USERNAME` and `CTX_PASSWORD` are set
|
|
81
|
+
3. The user invoked full pipeline — said "full QA", "run everything", "end to end", "full pipeline", or picked option C or 6
|
|
82
|
+
|
|
83
|
+
Set `AUTO_APPROVE = false` when any condition is not met, or when:
|
|
84
|
+
- The user said "manual gates", "confirm each step", or "don't auto-approve"
|
|
85
|
+
- `--reset-context` was passed (credentials not yet confirmed)
|
|
86
|
+
|
|
87
|
+
When dispatching to any skill in AUTO_APPROVE mode, pass it explicitly in the invocation message:
|
|
88
|
+
> "Run [skill] for [CARD-ID]. AUTO_APPROVE = true. APP_URL = {CTX_APP_URL}. USERNAME = {CTX_USERNAME}."
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Step 1 — Collect Jira Card Input
|
|
93
|
+
|
|
94
|
+
If the user has not already provided a Jira card ID, ask once:
|
|
95
|
+
|
|
96
|
+
> **QA Agent — Ready**
|
|
97
|
+
>
|
|
98
|
+
> Please enter the **Jira card ID** to begin (e.g. `PROJ-123`).
|
|
99
|
+
>
|
|
100
|
+
> Or, if you just want to run a specific skill without a card, tell me which one:
|
|
101
|
+
>
|
|
102
|
+
> | # | Skill | What it does |
|
|
103
|
+
> |---|-------|-------------|
|
|
104
|
+
> | 1 | **automation** | Gherkin → Step Definitions → POM → Automated Testing |
|
|
105
|
+
> | 2 | **manual-testing** | UI Testing (Figma) → Manual Tests → Bug Reporting → Test Charter |
|
|
106
|
+
> | 3 | **ui-test-figma** | Compare live app against a Figma design |
|
|
107
|
+
> | 4 | **bug-reporting** | File bugs on a Jira card |
|
|
108
|
+
> | 5 | **test-charter** | Generate and publish a Test Charter from a test report |
|
|
109
|
+
> | 6 | **Full E2E Pipeline** | Run Automation + Manual Testing together for a single card |
|
|
110
|
+
|
|
111
|
+
Wait for the user's response before proceeding.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Step 2 — Detect Intent
|
|
116
|
+
|
|
117
|
+
### If user provides a Jira card ID only (no other instruction)
|
|
118
|
+
|
|
119
|
+
Ask:
|
|
120
|
+
|
|
121
|
+
> Got it — **[CARD-ID]**. Which path do you want to run?
|
|
122
|
+
>
|
|
123
|
+
> | Option | Description |
|
|
124
|
+
> |--------|-------------|
|
|
125
|
+
> | **A — Automation Testing** | Gherkin Creation → Step Definitions → POM Creation → Automated Testing |
|
|
126
|
+
> | **B — Manual Testing** | UI Testing (Figma) → Manual Testing → Bug Reporting → Test Charter |
|
|
127
|
+
> | **C — Full E2E Pipeline** | Both A and B in sequence → End-to-End Testing |
|
|
128
|
+
|
|
129
|
+
Wait for the user's choice.
|
|
130
|
+
|
|
131
|
+
### If user provides a card ID with explicit intent
|
|
132
|
+
|
|
133
|
+
| User says | Dispatch to |
|
|
134
|
+
|-----------|-------------|
|
|
135
|
+
| "automate [CARD-ID]" / "generate gherkin" / "write automation" | → [AUTOMATION BRANCH] |
|
|
136
|
+
| "manual test [CARD-ID]" / "run tests" / "test this card" | → [MANUAL BRANCH] |
|
|
137
|
+
| "full QA [CARD-ID]" / "run everything" / "end to end" / "full pipeline" | → [FULL E2E PIPELINE] |
|
|
138
|
+
| "ui test" / "figma compare" / "check design" | → [ui-test-figma] (standalone) |
|
|
139
|
+
| "file a bug" / "log a bug" / "bug report" | → [bug-reporting] (standalone) |
|
|
140
|
+
| "test charter" / "generate charter" / "publish charter" | → [test-charter] (standalone) |
|
|
141
|
+
|
|
142
|
+
### If user picks a number from the menu
|
|
143
|
+
|
|
144
|
+
| # | Dispatch to |
|
|
145
|
+
|---|-------------|
|
|
146
|
+
| 1 | → [AUTOMATION BRANCH] |
|
|
147
|
+
| 2 | → [MANUAL BRANCH] |
|
|
148
|
+
| 3 | → [ui-test-figma] standalone |
|
|
149
|
+
| 4 | → [bug-reporting] standalone |
|
|
150
|
+
| 5 | → [test-charter] standalone |
|
|
151
|
+
| 6 | → [FULL E2E PIPELINE] |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Step 3 — Pre-flight MCP Check
|
|
156
|
+
|
|
157
|
+
Before dispatching, verify the required MCP tools are active.
|
|
158
|
+
|
|
159
|
+
| Branch / Skill | Required MCP |
|
|
160
|
+
|----------------|-------------|
|
|
161
|
+
| automation | Atlassian MCP, Playwright MCP |
|
|
162
|
+
| manual-testing | Atlassian MCP, Playwright MCP |
|
|
163
|
+
| ui-test-figma | Playwright MCP (Figma MCP optional — auto-fallback) |
|
|
164
|
+
| bug-reporting | Atlassian MCP |
|
|
165
|
+
| test-charter | Playwright MCP (for publishing) |
|
|
166
|
+
|
|
167
|
+
**Atlassian MCP** — always treat as available (connected in this environment).
|
|
168
|
+
|
|
169
|
+
**Playwright MCP** — required for manual-testing and ui-test-figma. Before invoking
|
|
170
|
+
either, display this reminder once:
|
|
171
|
+
|
|
172
|
+
> "Playwright MCP is required for this step. Confirm the MCP server is running,
|
|
173
|
+
> then reply **ready** to proceed."
|
|
174
|
+
|
|
175
|
+
Wait for confirmation before dispatching.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Step 4 — Dispatch
|
|
180
|
+
|
|
181
|
+
### [AUTOMATION BRANCH]
|
|
182
|
+
|
|
183
|
+
Announce:
|
|
184
|
+
|
|
185
|
+
> **Automation Testing — [CARD-ID]**
|
|
186
|
+
> Running: Gherkin Creation → Step Definitions → POM Creation → Automated Testing
|
|
187
|
+
|
|
188
|
+
Then invoke:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
Skill: automation args: [CARD-ID]
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
The automation skill runs all three phases internally (Gherkin → Step Defs → POM)
|
|
195
|
+
with mandatory user confirmation gates between phases. Once complete, report back:
|
|
196
|
+
|
|
197
|
+
> **Automation Testing complete for [CARD-ID].**
|
|
198
|
+
> Artifacts: Feature file · Step definitions · POM class · Dry-run PASSED
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### [MANUAL BRANCH]
|
|
203
|
+
|
|
204
|
+
Announce:
|
|
205
|
+
|
|
206
|
+
> **Manual Testing — [CARD-ID]**
|
|
207
|
+
> Running: UI Testing (Figma) → Manual Testing → Bug Reporting → Test Charter
|
|
208
|
+
|
|
209
|
+
Then invoke:
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Skill: manual-testing args: [CARD-ID]
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The manual-testing skill orchestrates all four sub-steps internally:
|
|
216
|
+
1. UI Testing via Figma (ui-test-figma)
|
|
217
|
+
2. Manual test execution in browser
|
|
218
|
+
3. Bug reporting to Jira (bug-reporting)
|
|
219
|
+
4. Test Charter generation and publish (test-charter)
|
|
220
|
+
|
|
221
|
+
Once complete, report back:
|
|
222
|
+
|
|
223
|
+
> **Manual Testing complete for [CARD-ID].**
|
|
224
|
+
> Artifacts: UI comparison report · Test execution report · Bugs filed · Charter published
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
### [FULL E2E PIPELINE]
|
|
229
|
+
|
|
230
|
+
Activate when the user selects option 6 / says "full QA" / "run everything" / "end to end".
|
|
231
|
+
|
|
232
|
+
#### Pre-pipeline setup
|
|
233
|
+
|
|
234
|
+
**If AUTO_APPROVE = true (context loaded with URL and credentials):**
|
|
235
|
+
|
|
236
|
+
Skip all setup questions. Announce:
|
|
237
|
+
> "**Full E2E Pipeline — [CARD-ID]** running with saved context for {PRODUCT_NAME}.
|
|
238
|
+
> App: {CTX_APP_URL} | Env: {CTX_ENVIRONMENT} | Auto-approve: ON"
|
|
239
|
+
|
|
240
|
+
Proceed immediately to Phase 1 — Automation Testing.
|
|
241
|
+
|
|
242
|
+
**If AUTO_APPROVE = false (no context, first run, or reset):**
|
|
243
|
+
|
|
244
|
+
Ask once in a single message:
|
|
245
|
+
> **Full E2E Pipeline — Quick Setup for [CARD-ID]**
|
|
246
|
+
>
|
|
247
|
+
> 1. App URL (e.g. `https://staging.myapp.com`)
|
|
248
|
+
> 2. Login required? If yes — username and password
|
|
249
|
+
> 3. Figma design link? (optional — ui-test-figma will be skipped if omitted)
|
|
250
|
+
|
|
251
|
+
Wait for response. Then run the pipeline in order:
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
Phase 1 — Automation Testing
|
|
255
|
+
→ Skill: automation (Gherkin → Step Defs → POM → Dry Run)
|
|
256
|
+
|
|
257
|
+
Phase 2 — Manual Testing Pipeline
|
|
258
|
+
→ Skill: manual-testing (UI Testing → Manual Tests → Bug Reporting → Charter)
|
|
259
|
+
|
|
260
|
+
Phase 3 — End-to-End Testing complete
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
#### Between phases
|
|
264
|
+
|
|
265
|
+
After each phase completes, display:
|
|
266
|
+
|
|
267
|
+
> "Phase [N] complete. Moving to Phase [N+1]..."
|
|
268
|
+
|
|
269
|
+
Then immediately invoke the next skill. Do not ask for confirmation between phases
|
|
270
|
+
unless a phase produced an error or a blocking question.
|
|
271
|
+
|
|
272
|
+
#### Pipeline completion
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
QA Pipeline Complete — [CARD-ID]
|
|
276
|
+
|
|
277
|
+
Phase 1 — Automation Testing : Gherkin + Step Defs + POM generated, dry-run PASSED
|
|
278
|
+
Phase 2 — Manual Testing : UI comparison + tests executed + bugs filed + charter published
|
|
279
|
+
Phase 3 — End-to-End Testing : COMPLETE
|
|
280
|
+
|
|
281
|
+
All done.
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Then immediately invoke the cleanup skill:
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
Skill: delete-files
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
### Post-pipeline cleanup (all branches)
|
|
293
|
+
|
|
294
|
+
After **any** branch completes successfully — Automation, Manual, or Full E2E —
|
|
295
|
+
first save product context (Step 6 below), then invoke the cleanup skill so the
|
|
296
|
+
user can decide what to keep:
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
Skill: delete-files
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
The delete-files skill will list all files in `outputs/`, present three options
|
|
303
|
+
(delete all / delete selected / keep all), and wait for user consent before
|
|
304
|
+
removing anything.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Step 6 — Save Product Context
|
|
309
|
+
|
|
310
|
+
Run after any branch completes (Automation, Manual, or Full E2E), before `delete-files`.
|
|
311
|
+
|
|
312
|
+
### 6a — Determine product name and folder
|
|
313
|
+
|
|
314
|
+
Derive from Jira card data already fetched:
|
|
315
|
+
- Use the Jira **project name** (not the key) as the display name
|
|
316
|
+
- Normalise the folder name: uppercase, spaces → `_`, strip special chars
|
|
317
|
+
- Examples: "Pozytron Radiologia" → `POZYTRON`, "Indy Auction" → `INDY`, "ZoodPay Admin" → `ZOODPAY_ADMIN`
|
|
318
|
+
- Do NOT ask the user unless the name truly cannot be derived. If it can't, ask once: "What product does this card belong to?"
|
|
319
|
+
|
|
320
|
+
```
|
|
321
|
+
PRODUCT_DIR = .claude/skills/qa-agent/product_context/{PRODUCT_FOLDER}/
|
|
322
|
+
CONTEXT_FILE = {PRODUCT_DIR}context.md
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 6b — Determine write mode
|
|
326
|
+
|
|
327
|
+
| Condition | Write mode |
|
|
328
|
+
|-----------|-----------|
|
|
329
|
+
| `--reset-context` was passed this run | OVERWRITE — replace entire file |
|
|
330
|
+
| File does not exist | CREATE — write fresh file from schema |
|
|
331
|
+
| File exists, no reset flag | MERGE — append/update, never overwrite existing rows |
|
|
332
|
+
|
|
333
|
+
### 6c — On CREATE: write full context.md
|
|
334
|
+
|
|
335
|
+
Use `CONTEXT_SCHEMA.md` at `.claude/skills/qa-agent/product_context/CONTEXT_SCHEMA.md` as the template.
|
|
336
|
+
Fill in all known values from this run:
|
|
337
|
+
|
|
338
|
+
- **Product Info**: Jira project key, product name, App URL (`CTX_APP_URL` or value collected this run), environment (detect from URL — staging/dev/prod), auth method, login URL, OTP required
|
|
339
|
+
- **Credentials**: Username and Password collected during this run
|
|
340
|
+
- **Runs Log**: one row for this run — date, card, branch (Automation/Manual/Full E2E), outcome, bugs filed, one-line note
|
|
341
|
+
- **Known Bugs**: rows for every bug ID filed during this run (or placeholder row if none)
|
|
342
|
+
- **Covered Flows**: rows for every Gherkin Rule (automation) or test charter section (manual) exercised
|
|
343
|
+
- **Element Selectors**: rows from `outputs/automation-hints-{CARD_ID}-*.md` if the file exists — read the "Elements Discovered" table and copy each row
|
|
344
|
+
- **Environment Notes**: any observations noted during the run (OTP behaviour, redirect URLs, test data quirks)
|
|
345
|
+
|
|
346
|
+
### 6d — On MERGE: update existing context.md
|
|
347
|
+
|
|
348
|
+
Read the file first, then make only these targeted updates:
|
|
349
|
+
|
|
350
|
+
1. **Runs Log** — append one new row; never edit existing rows
|
|
351
|
+
2. **Known Bugs** — for each bug filed this run: add a new row if the bug ID is not present; update the Status column only if it is already present
|
|
352
|
+
3. **Covered Flows** — append any new flows not already listed (match by Flow name)
|
|
353
|
+
4. **Element Selectors** — merge from `outputs/automation-hints-{CARD_ID}-*.md` if it exists: append each row whose Element Label is not already in the table
|
|
354
|
+
5. **All other sections** — leave completely untouched
|
|
355
|
+
|
|
356
|
+
### 6e — Save and confirm
|
|
357
|
+
|
|
358
|
+
Use the Write tool to save `context.md`.
|
|
359
|
+
|
|
360
|
+
Print one line:
|
|
361
|
+
```
|
|
362
|
+
Product context saved → .claude/skills/qa-agent/product_context/{PRODUCT_FOLDER}/context.md
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Step 5 — Standalone Skill Dispatch
|
|
368
|
+
|
|
369
|
+
When the user picks a standalone skill (options 3–5) without providing a card ID,
|
|
370
|
+
invoke it directly without collecting a card:
|
|
371
|
+
|
|
372
|
+
| Target | Invocation |
|
|
373
|
+
|--------|-----------|
|
|
374
|
+
| [ui-test-figma] | `Skill: ui-test-figma` |
|
|
375
|
+
| [bug-reporting] | `Skill: bug-reporting` |
|
|
376
|
+
| [test-charter] | `Skill: test-charter` |
|
|
377
|
+
|
|
378
|
+
The skill handles its own input collection.
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## Error Handling
|
|
383
|
+
|
|
384
|
+
| Situation | Action |
|
|
385
|
+
|-----------|--------|
|
|
386
|
+
| Jira card ID not provided when needed | Ask once before dispatching |
|
|
387
|
+
| Card not found in Jira | Ask user to verify the key |
|
|
388
|
+
| A phase fails | Report the failure, ask whether to retry or skip to next phase |
|
|
389
|
+
| User wants to stop mid-pipeline | Stop immediately, show completed and skipped phases |
|
|
390
|
+
| Playwright MCP unavailable | Pause, display reminder, wait for confirmation |
|
|
391
|
+
| Ambiguous input after menu shown | Re-display options with: "I didn't catch that — pick a number or describe what you need." |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# {Product Name} — QA Context
|
|
2
|
+
|
|
3
|
+
_Auto-generated by QA Agent. Updated after each run on this product._
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Product Info
|
|
8
|
+
- **Jira Project Key**: {PROJECT_KEY}
|
|
9
|
+
- **Product Name**: {PRODUCT_NAME}
|
|
10
|
+
- **App URL**: {APP_URL}
|
|
11
|
+
- **Environment**: {staging | dev | prod | unknown}
|
|
12
|
+
- **Auth Method**: {form_login | SSO | token | none}
|
|
13
|
+
- **Login URL**: {LOGIN_URL or same as App URL}
|
|
14
|
+
- **OTP Required**: {yes — always use 999999 | no}
|
|
15
|
+
|
|
16
|
+
## Credentials
|
|
17
|
+
- **Username**: {USERNAME}
|
|
18
|
+
- **Password**: {PASSWORD}
|
|
19
|
+
|
|
20
|
+
_Note: Store real credentials here only in local dev. Use env vars in CI._
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Runs Log
|
|
25
|
+
|
|
26
|
+
| Date | Card | Branch | Outcome | Bugs Filed | Notes |
|
|
27
|
+
|------|------|--------|---------|------------|-------|
|
|
28
|
+
| {YYYY-MM-DD} | {CARD-ID} | {Automation / Manual / Full E2E} | {PASSED / BUGS FOUND / PARTIAL} | {bug keys} | {one-line summary} |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Known Bugs
|
|
33
|
+
|
|
34
|
+
| Bug ID | Title | Severity | Status | Card |
|
|
35
|
+
|--------|-------|----------|--------|------|
|
|
36
|
+
| — | No bugs filed yet | — | — | — |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Covered Flows
|
|
41
|
+
|
|
42
|
+
| Flow | Scenarios | Card | Date |
|
|
43
|
+
|------|-----------|------|------|
|
|
44
|
+
| {e.g. User Login} | {n} | {CARD-ID} | {date} |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Element Selectors
|
|
49
|
+
|
|
50
|
+
| Element Label | Page URL | Locator | Method | data-testid | Card |
|
|
51
|
+
|---------------|----------|---------|--------|-------------|------|
|
|
52
|
+
| {e.g. Email input} | {/login} | {input[name="email"]} | {testid / role / css} | {auth-email} | {CARD-ID} |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Environment Notes
|
|
57
|
+
|
|
58
|
+
{Freeform: OTP bypass values, test data patterns, known flaky areas, redirect quirks, API base URL, etc.}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Product Context Store
|
|
2
|
+
|
|
3
|
+
Each subfolder here is named after a product (e.g. `INDY/`, `POZYTRON/`, `ZOODPAY_ADMIN/`).
|
|
4
|
+
|
|
5
|
+
The QA Agent writes to `{PRODUCT}/context.md` automatically at the end of every run.
|
|
6
|
+
|
|
7
|
+
## Folder naming rules
|
|
8
|
+
- Uppercase, no spaces — use `_` instead
|
|
9
|
+
- Derived from the Jira project name (not the card key)
|
|
10
|
+
- Examples:
|
|
11
|
+
- "Indy Auction" → `INDY/`
|
|
12
|
+
- "Pozytron Radiologia" → `POZYTRON/`
|
|
13
|
+
- "ZoodPay Admin" → `ZOODPAY_ADMIN/`
|
|
14
|
+
|
|
15
|
+
## What context.md contains
|
|
16
|
+
- Runs log (one row per QA session)
|
|
17
|
+
- Known bugs accumulated across all runs
|
|
18
|
+
- Covered test flows
|
|
19
|
+
- Environment notes (URLs, credentials format, quirks)
|