@keber/qa-framework 1.11.3 → 1.13.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/CHANGELOG.md +340 -0
- package/README.md +42 -2
- package/docs/architecture.md +30 -26
- package/docs/decisions/lane-heartbeat-caller.md +86 -0
- package/docs/final-report.md +23 -23
- package/docs/folder-structure-guide.md +100 -80
- package/docs/installation.md +42 -7
- package/docs/skills-architecture.md +23 -23
- package/docs/spec-driven-philosophy.md +9 -9
- package/docs/usage-with-agent.md +88 -9
- package/docs/visuals/diag-01-ejecutivo-1.png +0 -0
- package/docs/visuals/diag-02-tactico-1.png +0 -0
- package/docs/visuals/diag-03-tecnico-1.png +0 -0
- package/docs/visuals/info-01-ejecutivo-1.png +0 -0
- package/docs/visuals/info-02-tactico-1.png +0 -0
- package/docs/visuals/info-03-tecnico-1.png +0 -0
- package/docs/visuals/pres-01-ejecutivo-1.png +0 -0
- package/docs/visuals/pres-02-tactico-1.png +0 -0
- package/docs/visuals/pres-03-tecnico-1.png +0 -0
- package/docs/visuals/qa-01-problema-1.png +0 -0
- package/docs/visuals/qa-02-que-es-1.png +0 -0
- package/docs/visuals/qa-03-pipeline-1.png +0 -0
- package/docs/visuals/qa-04-6-archivos-1.png +0 -0
- package/docs/visuals/qa-05-humano-1.png +0 -0
- package/docs/visuals/qa-06-agente-1.png +0 -0
- package/docs/visuals/qa-07-skills-arch-1.png +0 -0
- package/docs/visuals/qa-08-traceability-1.png +0 -0
- package/docs/visuals/qa-en-01-problem-1.png +0 -0
- package/docs/visuals/qa-en-02-what-is-1.png +0 -0
- package/docs/visuals/qa-en-03-pipeline-1.png +0 -0
- package/docs/visuals/qa-en-04-6files-1.png +0 -0
- package/docs/visuals/qa-en-05-human-1.png +0 -0
- package/docs/visuals/qa-en-06-agent-1.png +0 -0
- package/docs/visuals/qa-en-07-skills-arch-1.png +0 -0
- package/docs/visuals/qa-en-08-traceability-1.png +0 -0
- package/examples/module-example/suppliers/00-inventory.md +1 -1
- package/examples/module-example/suppliers/suppliers-create.spec.ts +8 -8
- package/integrations/ado-powershell/README.md +1 -1
- package/integrations/ado-powershell/scripts/sync-ado-titles.ps1 +2 -2
- package/integrations/playwright/README.md +4 -4
- package/package.json +7 -3
- package/qa-framework.config.json +25 -3
- package/scripts/check-forbidden-chars.js +187 -0
- package/scripts/check-spanish-accents.js +159 -0
- package/scripts/cli.js +1 -1
- package/scripts/generate.js +2 -2
- package/scripts/init.js +101 -12
- package/scripts/lib/claude-agents.js +347 -0
- package/scripts/lib/claude-commands.js +56 -0
- package/scripts/lib/module-keys.js +54 -0
- package/scripts/sync-version.js +63 -0
- package/scripts/upgrade.js +369 -20
- package/scripts/validate.js +46 -21
- package/skills/qa-ado-integration/SKILL.md +19 -19
- package/skills/qa-ado-integration/references/scripts-and-config.md +6 -6
- package/skills/qa-automation/SKILL.md +49 -27
- package/skills/qa-automation/references/config-checklist.md +4 -4
- package/skills/qa-automation/references/dom-inspection-template.js +7 -7
- package/skills/qa-automation/references/patterns.md +20 -20
- package/skills/qa-automation/references/pom-template.md +161 -0
- package/skills/qa-maintenance/SKILL.md +11 -11
- package/skills/qa-maintenance/references/update-rules.md +8 -8
- package/skills/qa-module-analysis/SKILL.md +20 -19
- package/skills/qa-module-analysis/references/exploration-checklist.md +4 -4
- package/skills/qa-module-analysis/references/output-verification.md +69 -0
- package/skills/qa-module-analysis/references/spec-file-formats.md +14 -14
- package/skills/qa-spec-generation/SKILL.md +13 -7
- package/skills/qa-test-cases/SKILL.md +11 -81
- package/skills/qa-test-cases/references/test-case-template.md +5 -5
- package/skills/qa-test-plan/SKILL.md +22 -86
- package/skills/qa-test-plan/references/plan-de-pruebas-template.md +24 -24
- package/skills/qa-test-stabilization/SKILL.md +59 -30
- package/skills/qa-test-stabilization/references/classification-protocol.md +35 -35
- package/templates/agent-next-steps.md +10 -10
- package/templates/agents/qa-analisis.md +142 -0
- package/templates/agents/qa-asesoria.md +48 -0
- package/templates/agents/qa-informe-resultados.md +236 -0
- package/templates/agents/qa-investigador.md +143 -0
- package/templates/agents/qa-plan.md +131 -0
- package/templates/agents/qa-reporte-ejecucion.md +138 -0
- package/templates/automation-scaffold/.env.example +36 -6
- package/templates/automation-scaffold/fixtures/auth.ts +27 -5
- package/templates/automation-scaffold/fixtures/base.ts +23 -1
- package/templates/automation-scaffold/fixtures/test-helpers.ts +1 -1
- package/templates/automation-scaffold/global-setup.ts +117 -48
- package/templates/automation-scaffold/playwright.config.ts +72 -32
- package/templates/automation-scaffold/scripts/global-setup-guards.js +184 -0
- package/templates/automation-scaffold/scripts/lane-config.js +269 -0
- package/templates/automation-scaffold/scripts/lane-lock.js +589 -0
- package/templates/defect-report.md +17 -3
- package/templates/execution-report.md +9 -9
- package/templates/integration-scaffold/.env.example +1 -1
- package/templates/integration-scaffold/global-setup.ts +21 -1
- package/templates/integration-scaffold/playwright.config.ts +15 -1
- package/templates/qa-framework.instructions.md +9 -8
- package/templates/qa-framework.rules.md +53 -0
- package/templates/qa-readme.md +8 -8
- package/templates/session-summary.md +2 -2
- package/templates/specification/00-inventory.md +3 -3
- package/templates/specification/01-business-rules.md +6 -6
- package/templates/specification/02-workflows.md +1 -1
- package/templates/specification/03-roles-permissions.md +1 -1
- package/templates/specification/04-test-data.md +8 -8
- package/templates/specification/05-test-scenarios.md +5 -5
- package/templates/test-case.md +3 -3
- package/templates/test-data-guidelines.md +7 -7
- package/templates/test-plan-sprint.md +13 -13
- package/templates/test-plan.md +3 -3
- package/skills/qa-test-plan/references/priority-and-feasibility.md +0 -159
|
@@ -12,10 +12,10 @@ description: >
|
|
|
12
12
|
|
|
13
13
|
# QA Skill: Test Case Step Expansion (Stage 4 of 6)
|
|
14
14
|
|
|
15
|
-
**Stage**: 4
|
|
15
|
+
**Stage**: 4 - Test Case Steps (expand / complete Plan de Pruebas)
|
|
16
16
|
**Prerequisite**: Plan de Pruebas exists at `qa/02-test-plans/sprints/Sprint-{N}/Plan-de-Pruebas-{proyecto}-Sprint-{N}-{modulo}.md`
|
|
17
17
|
**Output**: Updated Plan de Pruebas table (primary) OR `qa/03-test-cases/TC-{ID}.md` files (standalone, optional)
|
|
18
|
-
**Next stage**: Stage 5
|
|
18
|
+
**Next stage**: Stage 5 - Automation (`qa-automation`) or ADO Integration (`qa-ado-integration`)
|
|
19
19
|
|
|
20
20
|
> **Pipeline rule**: TC IDs must be unique across the module. Never reuse a TC ID.
|
|
21
21
|
> **Primary output** is the table in the Plan de Pruebas, not standalone files.
|
|
@@ -29,28 +29,28 @@ description: >
|
|
|
29
29
|
| Plan de Pruebas has summary steps (from `05-test-scenarios.md`) that aren't concrete enough | Expand steps row by row in the table |
|
|
30
30
|
| A specific TC requires multi-scenario, multi-role documentation | Create standalone `TC-{ID}.md` in `qa/03-test-cases/` |
|
|
31
31
|
| TC is reused across multiple sprints unchanged | Create standalone file with cross-reference |
|
|
32
|
-
| All steps in the table are already concrete and observable | Stage 4 not needed
|
|
32
|
+
| All steps in the table are already concrete and observable | Stage 4 not needed - proceed to Stage 5 or ADO |
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
36
|
## Inputs Required
|
|
37
37
|
|
|
38
|
-
1. `qa/02-test-plans/sprints/Sprint-{N}/Plan-de-Pruebas-{proyecto}-Sprint-{N}-{modulo}.md`
|
|
39
|
-
2. `qa/01-specifications/module-{name}/submodule-{name}/00-inventory.md`
|
|
40
|
-
3. `qa/01-specifications/module-{name}/submodule-{name}/05-test-scenarios.md`
|
|
38
|
+
1. `qa/02-test-plans/sprints/Sprint-{N}/Plan-de-Pruebas-{proyecto}-Sprint-{N}-{modulo}.md` - table to expand
|
|
39
|
+
2. `qa/01-specifications/module-{name}/submodule-{name}/00-inventory.md` - UI field names, button labels, routes
|
|
40
|
+
3. `qa/01-specifications/module-{name}/submodule-{name}/05-test-scenarios.md` - original scenario text
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
44
|
## Process
|
|
45
45
|
|
|
46
|
-
### Step 1
|
|
46
|
+
### Step 1 - Identify rows needing expansion
|
|
47
47
|
|
|
48
48
|
Review the Tabla de Pruebas. Flag rows where Steps are:
|
|
49
49
|
- Summary-level (e.g., "Navegar al módulo y verificar comportamiento")
|
|
50
50
|
- Missing intermediate steps (fewer than 2 steps for a non-trivial scenario)
|
|
51
51
|
- Using vague verbs ("hacer lo necesario", "verificar que funciona")
|
|
52
52
|
|
|
53
|
-
### Step 2
|
|
53
|
+
### Step 2 - Expand steps in-table
|
|
54
54
|
|
|
55
55
|
For each flagged row, rewrite the Steps cell using:
|
|
56
56
|
- `00-inventory.md` for exact UI element names and routes
|
|
@@ -62,14 +62,14 @@ Quality rules per step:
|
|
|
62
62
|
- One action + one verification per step (when applicable)
|
|
63
63
|
- Resultado Esperado must be measurable (specific text, state, count)
|
|
64
64
|
|
|
65
|
-
### Step 3
|
|
65
|
+
### Step 3 - Standalone TC files (only when needed)
|
|
66
66
|
|
|
67
67
|
If a TC requires standalone documentation (see "When to use" table above):
|
|
68
68
|
- Save as `qa/03-test-cases/TC-{ID}.md`
|
|
69
69
|
- Use template from `references/test-case-template.md`
|
|
70
70
|
- Add a note in the Plan de Pruebas table row: "See qa/03-test-cases/TC-{ID}.md"
|
|
71
71
|
|
|
72
|
-
### Step 4
|
|
72
|
+
### Step 4 - Quality gates
|
|
73
73
|
|
|
74
74
|
Before marking stage complete:
|
|
75
75
|
- [ ] Every row in the table has ≥ 2 numbered steps
|
|
@@ -77,6 +77,7 @@ Before marking stage complete:
|
|
|
77
77
|
- [ ] Every Resultado Esperado is measurable
|
|
78
78
|
- [ ] No blank cells in Confirma column (Task ID or `N/A`)
|
|
79
79
|
- [ ] Standalone TC files (if created) are cross-referenced in the table
|
|
80
|
+
- [ ] Output verification run and the counts reported (see `../qa-module-analysis/references/output-verification.md`) - report the command output, never a compliance claim
|
|
80
81
|
|
|
81
82
|
---
|
|
82
83
|
|
|
@@ -95,74 +96,3 @@ Before marking stage complete:
|
|
|
95
96
|
|
|
96
97
|
- Updated `Plan-de-Pruebas-{proyecto}-Sprint-{N}-{modulo}.md` (rows with expanded steps)
|
|
97
98
|
- Optionally: `qa/03-test-cases/TC-{ID}.md` for complex/reusable TCs
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Inputs Required
|
|
103
|
-
|
|
104
|
-
1. `qa/01-specifications/{module}/05-test-scenarios.md` — source scenarios to expand
|
|
105
|
-
2. Test plan (if available) — defines priority and which scenarios are in scope
|
|
106
|
-
3. Module TC-ID range prefix (e.g., `PROV` → `TC-PROV-001`)
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Process
|
|
111
|
-
|
|
112
|
-
### Step 1 — Audit existing TCs
|
|
113
|
-
|
|
114
|
-
Check `qa/03-test-cases/automated/` for existing TC files in this module. Note:
|
|
115
|
-
- Highest existing TC number (to continue sequence from next number)
|
|
116
|
-
- Any `PENDING-CODE` TCs (skip automation loop; flag for manual follow-up)
|
|
117
|
-
- Any TCs for scenarios already documented (do not duplicate)
|
|
118
|
-
|
|
119
|
-
### Step 2 — Map scenarios to TC IDs
|
|
120
|
-
|
|
121
|
-
For each scenario in `05-test-scenarios.md`:
|
|
122
|
-
- Assign sequential TC ID: `TC-{PREFIX}-{NNN}` (zero-padded to 3 digits)
|
|
123
|
-
- Annotate with priority and automation feasibility from test plan (if available)
|
|
124
|
-
- Skip scenarios marked with `BLOCKED-PERMISSIONS` or `NOT-AUTOMATABLE` — generate TC shells only
|
|
125
|
-
|
|
126
|
-
### Step 3 — Write TC documents
|
|
127
|
-
|
|
128
|
-
Full template: `references/test-case-template.md`
|
|
129
|
-
|
|
130
|
-
Each TC file must include:
|
|
131
|
-
- **ID** and **Title**
|
|
132
|
-
- **Priority** (P0/P1/P2/P3)
|
|
133
|
-
- **Automation feasibility** (fully / partially / not)
|
|
134
|
-
- **Preconditions** (setup state + test data reference)
|
|
135
|
-
- **Steps** (numbered, action + input + expected result per step)
|
|
136
|
-
- **Postconditions** (cleanup or state left after TC)
|
|
137
|
-
- **Tags** (e.g., `smoke`, `regression`, `happy-path`)
|
|
138
|
-
|
|
139
|
-
### Step 4 — Quality gates
|
|
140
|
-
|
|
141
|
-
Before saving each TC:
|
|
142
|
-
- Every step has an expected result — no steps with "verify it works"
|
|
143
|
-
- Test data references a named fixture or `qa/01-specifications/{module}/04-test-data.md`
|
|
144
|
-
- For CRUD TCs: steps cover create → verify → update → verify → delete → verify
|
|
145
|
-
- Preconditions do not duplicate setup that belongs in a shared fixture
|
|
146
|
-
|
|
147
|
-
### Step 5 — Update index
|
|
148
|
-
|
|
149
|
-
Create or update `qa/03-test-cases/automated/{module}-index.md`:
|
|
150
|
-
- Table: TC ID | Title | Priority | Feasibility | Spec reference
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Key Rules
|
|
155
|
-
|
|
156
|
-
| Rule | Correct | Wrong |
|
|
157
|
-
|---|---|---|
|
|
158
|
-
| TC isolation | Each TC is independent | TCs depend on prior TC's data |
|
|
159
|
-
| Step granularity | One action + one assertion per step | Multi-action steps |
|
|
160
|
-
| Data hygiene | Named fixtures or spec data | Hardcoded values in steps |
|
|
161
|
-
| ID stability | Never re-number existing IDs | Renaming breaks ADO links |
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## Outputs
|
|
166
|
-
|
|
167
|
-
- `qa/03-test-cases/automated/TC-{ID}.md` (one per scenario)
|
|
168
|
-
- `qa/03-test-cases/automated/{module}-index.md`
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
| Submodule | {Submodule display name} |
|
|
17
17
|
| Priority | P0 / P1 / P2 / P3 |
|
|
18
18
|
| Type | Functional / Negative / Regression / Security / Integration |
|
|
19
|
-
| Origin | UI-OBSERVED / PENDING-CODE / BLOCKED-PERMISSIONS |
|
|
19
|
+
| Origin | UI-OBSERVED / PENDING-BROWSER / PENDING-CODE / BLOCKED-PERMISSIONS |
|
|
20
20
|
| Observation date | YYYY-MM-DD |
|
|
21
21
|
| Automatable | Yes / Partial / No |
|
|
22
22
|
| Playwright file | (fill when automation is written) |
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
Create at: `qa/03-test-cases/automated/{module}-index.md`
|
|
107
107
|
|
|
108
108
|
```markdown
|
|
109
|
-
# TC Index
|
|
109
|
+
# TC Index - {Module Display Name}
|
|
110
110
|
|
|
111
111
|
| TC ID | Title | Priority | Feasibility | Spec reference |
|
|
112
112
|
|-------|-------|----------|-------------|---------------|
|
|
@@ -133,10 +133,10 @@ Create at: `qa/03-test-cases/automated/{module}-index.md`
|
|
|
133
133
|
### Defect links
|
|
134
134
|
|
|
135
135
|
When skipping a step due to a bug:
|
|
136
|
-
✅ `Step 4
|
|
136
|
+
✅ `Step 4 - SKIPPED: DEF-001 (ADO #21944). Switch defaults to OFF. Re-enable after fix.`
|
|
137
137
|
|
|
138
138
|
### TC isolation
|
|
139
139
|
|
|
140
|
-
- Each TC is fully independent
|
|
140
|
+
- Each TC is fully independent - no TC depends on state from a prior TC
|
|
141
141
|
- All required data is provisioned in preconditions or `beforeAll`
|
|
142
|
-
- CRUD TCs cover: create
|
|
142
|
+
- CRUD TCs cover: create -> verify -> update -> verify -> delete -> verify
|
|
@@ -13,37 +13,37 @@ description: >
|
|
|
13
13
|
|
|
14
14
|
# QA Skill: Plan de Pruebas (Stage 3 of 6)
|
|
15
15
|
|
|
16
|
-
**Stage**: 3
|
|
16
|
+
**Stage**: 3 - Plan de Pruebas (test plan + detailed test case table)
|
|
17
17
|
**Prerequisite**: `05-test-scenarios.md` must exist for all in-scope submodules (Stage 2 complete)
|
|
18
18
|
**Output**: `qa/02-test-plans/sprints/Sprint-{N}/Plan-de-Pruebas-{proyecto}-Sprint-{N}-{modulo}.md`
|
|
19
|
-
**Next stage**: Stage 4
|
|
19
|
+
**Next stage**: Stage 4 - Expand steps (`qa-test-cases`) if steps need more detail; or Stage 5 - Automation (`qa-automation`)
|
|
20
20
|
|
|
21
21
|
> **Pipeline rule**: Do not automate TCs that are not in an active Plan de Pruebas.
|
|
22
|
-
> **ADO rule**: The Plan de Pruebas is the source for ADO Test Cases
|
|
22
|
+
> **ADO rule**: The Plan de Pruebas is the source for ADO Test Cases - steps in the table become steps in ADO.
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
## Inputs Required
|
|
27
27
|
|
|
28
|
-
1. `qa/01-specifications/module-{name}/submodule-{name}/`
|
|
29
|
-
- `00-inventory.md`
|
|
30
|
-
- `05-test-scenarios.md`
|
|
28
|
+
1. `qa/01-specifications/module-{name}/submodule-{name}/` - spec files, especially:
|
|
29
|
+
- `00-inventory.md` - UI fields, buttons, routes (source for concrete step text)
|
|
30
|
+
- `05-test-scenarios.md` - TC list with summary steps and expected results
|
|
31
31
|
2. Sprint number and module name (ask the user if not given)
|
|
32
32
|
3. ADO sprint tasks/stories (if available; use for "Confirma" column; `N/A` if not)
|
|
33
|
-
4. Project name from `qa/qa-framework.config.json`
|
|
33
|
+
4. Project name from `qa/qa-framework.config.json` -> `project.name`
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
37
|
## Process
|
|
38
38
|
|
|
39
|
-
### Step 1
|
|
39
|
+
### Step 1 - Collect TC inventory
|
|
40
40
|
|
|
41
41
|
For each in-scope submodule, read `05-test-scenarios.md` and aggregate:
|
|
42
42
|
- Total TC count by priority (P0/P1/P2/P3)
|
|
43
43
|
- TC count by type: Manual / Automatizado / Ambos
|
|
44
|
-
- TCs marked `BLOCKED-PERMISSIONS` or `PENDING-
|
|
44
|
+
- TCs marked `BLOCKED-PERMISSIONS`, `PENDING-CODE`, or `PENDING-BROWSER` -> include in table but mark type as `Bloqueado`
|
|
45
45
|
|
|
46
|
-
### Step 2
|
|
46
|
+
### Step 2 - Apply priority rules
|
|
47
47
|
|
|
48
48
|
Use the priority decision tree (see `references/plan-de-pruebas-template.md`):
|
|
49
49
|
- **P0**: happy path confirmation; show-stopper risk; data corruption
|
|
@@ -51,14 +51,14 @@ Use the priority decision tree (see `references/plan-de-pruebas-template.md`):
|
|
|
51
51
|
- **P2**: secondary features (export, pagination, search); regression adjacent
|
|
52
52
|
- **P3**: edge cases; exploratory charters (timeboxed)
|
|
53
53
|
|
|
54
|
-
### Step 3
|
|
54
|
+
### Step 3 - Define TestSuites (ADO grouping)
|
|
55
55
|
|
|
56
|
-
Group TCs by functional area. Each group
|
|
57
|
-
- 3
|
|
56
|
+
Group TCs by functional area. Each group -> one ADO Test Suite:
|
|
57
|
+
- 3-7 suites per module is typical
|
|
58
58
|
- Name suites after the functional area, not the priority (e.g., "Solicitud Individual", "Aprobación Web")
|
|
59
59
|
- Last suite: "Exploratoria" if there are P3 charters
|
|
60
60
|
|
|
61
|
-
### Step 4
|
|
61
|
+
### Step 4 - Write the Plan de Pruebas document
|
|
62
62
|
|
|
63
63
|
Full template: `references/plan-de-pruebas-template.md`
|
|
64
64
|
|
|
@@ -67,25 +67,25 @@ Required sections:
|
|
|
67
67
|
2. Objetivo
|
|
68
68
|
3. Alcance (en alcance / fuera de alcance)
|
|
69
69
|
4. Items del Sprint normalizados (grouped by area; Task IDs if available)
|
|
70
|
-
5. Priorización (P0
|
|
70
|
+
5. Priorización (P0-P3 summary)
|
|
71
71
|
6. TestSuites (agrupación para ADO)
|
|
72
72
|
7. Precondiciones generales (ambiente, roles, datos base)
|
|
73
73
|
8. Datos mínimos sugeridos (table with env var references)
|
|
74
74
|
9. Supuestos & Faltantes críticos (TODO items before execution)
|
|
75
75
|
10. **Tabla de Pruebas** (see Step 4a)
|
|
76
|
-
11. Matriz de Trazabilidad (Task
|
|
76
|
+
11. Matriz de Trazabilidad (Task <-> N)
|
|
77
77
|
12. Notas de automatización
|
|
78
78
|
|
|
79
|
-
#### Step 4a
|
|
79
|
+
#### Step 4a - Tabla de Pruebas (most important section)
|
|
80
80
|
|
|
81
81
|
Each row in the table is one test case. Columns:
|
|
82
82
|
|
|
83
83
|
| Column | Rules |
|
|
84
84
|
|--------|-------|
|
|
85
|
-
| **N** | Sequential number (1, 2, 3...)
|
|
85
|
+
| **N** | Sequential number (1, 2, 3...) - used in trazabilidad matrix |
|
|
86
86
|
| **TC-ID** | `TC-{MODULE}-{SUB}-{NNN}` from specs; or assign sequentially if new |
|
|
87
87
|
| **Suite / Área Funcional** | Suite name from Step 3 |
|
|
88
|
-
| **Título** | `[ETIQUETA][P#] Descripción concisa`
|
|
88
|
+
| **Título** | `[ETIQUETA][P#] Descripción concisa` - etiquetas: CONFIRMACION, SMOKE, REGRESION, EXPLORATORIA |
|
|
89
89
|
| **Descripción** | What scenario this validates (1-2 sentences) |
|
|
90
90
|
| **Steps** | Numbered, separated by `<br>`. Use concrete UI verbs from `00-inventory.md`: "Navegar a", "Ingresar", "Hacer click en", "Verificar que", "Seleccionar". Reference env vars as `{ENV_VAR}` |
|
|
91
91
|
| **Resultado Esperado** | Observable outcome: specific text, state change, notification. Not vague ("works correctly") |
|
|
@@ -99,9 +99,9 @@ Each row in the table is one test case. Columns:
|
|
|
99
99
|
- Reference test data by env var name (`{QA_USER_EMAIL}`) or pattern (`EXEC_IDX`)
|
|
100
100
|
- Exploratory charters: steps = "Timebox N min" + charter goal + "Registrar hallazgos"
|
|
101
101
|
|
|
102
|
-
### Step 5
|
|
102
|
+
### Step 5 - Update status
|
|
103
103
|
|
|
104
|
-
- Update `qa/README.md` module row (plan status
|
|
104
|
+
- Update `qa/README.md` module row (plan status -> ✅)
|
|
105
105
|
- If ADO enabled: stub the ADO Plan ID field for the ADO integration skill
|
|
106
106
|
|
|
107
107
|
---
|
|
@@ -119,68 +119,4 @@ Each row in the table is one test case. Columns:
|
|
|
119
119
|
- [ ] Resultado Esperado is measurable (specific text/state, not "works correctly")
|
|
120
120
|
- [ ] Matriz de Trazabilidad covers all Tasks mentioned in the table
|
|
121
121
|
- [ ] `Confirma` column has no blank cells (must be Task ID or `N/A`)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
> **Pipeline rule**: Do not automate TCs that are not in an approved or active test plan.
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Inputs Required
|
|
129
|
-
|
|
130
|
-
1. `qa/01-specifications/module-{name}/` — all submodule specs
|
|
131
|
-
2. Scope definition — which submodules are in this test plan (ask the user if not given)
|
|
132
|
-
3. Priority guidance (from team or implied by sprint scope)
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Process
|
|
137
|
-
|
|
138
|
-
### Step 1 — Collect TC inventory
|
|
139
|
-
|
|
140
|
-
For each in-scope submodule, read `05-test-scenarios.md` and aggregate:
|
|
141
|
-
- Total TC count by priority (P0/P1/P2/P3)
|
|
142
|
-
- TC count by automation feasibility (fully / partially / not automatable)
|
|
143
|
-
- Any TCs marked `BLOCKED-PERMISSIONS` or `PENDING-CODE` (these go in the exclusion list)
|
|
144
|
-
|
|
145
|
-
### Step 2 — Apply priority rules
|
|
146
|
-
|
|
147
|
-
Use the priority decision tree (see `references/priority-and-feasibility.md`) to assign or validate priorities. Key rules:
|
|
148
|
-
|
|
149
|
-
- **P0**: primary happy path; show-stopper risk; critical data corruption
|
|
150
|
-
- **P1**: common negative scenarios; cross-module dependencies; state machine transitions
|
|
151
|
-
- **P2**: secondary features (export, pagination, search)
|
|
152
|
-
- **P3**: edge cases, cosmetic, rare scenarios
|
|
153
|
-
|
|
154
|
-
### Step 3 — Apply automation feasibility rules
|
|
155
|
-
|
|
156
|
-
- **Fully automatable**: deterministic, observable via browser, no external system dependency
|
|
157
|
-
- **Partially automatable**: some result requires human inspection OR external system can be mocked
|
|
158
|
-
- **Not automatable**: physical access required; inherently non-deterministic; irreversible QA side effects; BLOCKED-PERMISSIONS
|
|
159
|
-
|
|
160
|
-
### Step 4 — Write the test plan document
|
|
161
|
-
|
|
162
|
-
Full document template: `references/test-plan-template.md`
|
|
163
|
-
|
|
164
|
-
Required sections:
|
|
165
|
-
1. Objective
|
|
166
|
-
2. Scope (in/out)
|
|
167
|
-
3. Automation feasibility analysis table (per submodule)
|
|
168
|
-
4. Priority distribution table
|
|
169
|
-
5. TC selection suites (P0 suite, P1 suite)
|
|
170
|
-
6. Azure DevOps mapping (if ADO enabled)
|
|
171
|
-
7. Test environment
|
|
172
|
-
8. Risks and assumptions
|
|
173
|
-
9. Excluded TCs (with reason)
|
|
174
|
-
10. Execution schedule
|
|
175
|
-
|
|
176
|
-
### Step 5 — Update status
|
|
177
|
-
|
|
178
|
-
- Update `qa/README.md` module row (plan status → ✅)
|
|
179
|
-
- If ADO enabled: stub the ADO Plan ID field for Step 6 (ADO integration)
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## Outputs
|
|
184
|
-
|
|
185
|
-
- `qa/02-test-plans/automated/{module}-test-plan.md`
|
|
186
|
-
- `qa/README.md` plan status updated
|
|
122
|
+
- [ ] Output verification run and the counts reported (see `../qa-module-analysis/references/output-verification.md`) - report the command output, never a compliance claim
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Reference: Plan de Pruebas
|
|
1
|
+
# Reference: Plan de Pruebas - Template and Conventions
|
|
2
2
|
|
|
3
3
|
> Loaded by `skills/qa-test-plan/` when generating a Plan de Pruebas document.
|
|
4
4
|
|
|
@@ -17,7 +17,7 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
17
17
|
## Complete Document Template
|
|
18
18
|
|
|
19
19
|
```markdown
|
|
20
|
-
# Plan de Pruebas
|
|
20
|
+
# Plan de Pruebas - {PROYECTO} - Sprint {NNN} - {MODULO_NOMBRE}
|
|
21
21
|
|
|
22
22
|
**Proyecto:** {PROYECTO}
|
|
23
23
|
**Sprint:** {NNN}
|
|
@@ -25,7 +25,7 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
25
25
|
**Código módulo:** {MODULO_CODE}
|
|
26
26
|
**Fecha planificación:** {YYYY-MM-DD}
|
|
27
27
|
**Ventana QA:** {YYYY-MM-DD} y {YYYY-MM-DD}
|
|
28
|
-
**ADO Test Plan:** [Plan {ADO_PLAN_ID}]({ADO_TEST_PLAN_URL})
|
|
28
|
+
**ADO Test Plan:** [Plan {ADO_PLAN_ID}]({ADO_TEST_PLAN_URL}) <- omit if ADO disabled
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -34,19 +34,19 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
34
34
|
### En alcance
|
|
35
35
|
### Fuera de alcance
|
|
36
36
|
## 3. Items del Sprint (normalizados)
|
|
37
|
-
## 4. Priorización (P0
|
|
37
|
+
## 4. Priorización (P0-P3 summary)
|
|
38
38
|
## 5. TestSuites (agrupación para ADO)
|
|
39
39
|
## 6. Precondiciones generales
|
|
40
40
|
## 7. Datos mínimos sugeridos
|
|
41
41
|
## 8. Supuestos & Faltantes críticos
|
|
42
|
-
## 9. Tabla de Pruebas
|
|
42
|
+
## 9. Tabla de Pruebas <- PRIMARY ARTIFACT
|
|
43
43
|
## 10. Matriz de Trazabilidad
|
|
44
44
|
## 11. Notas de automatización
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
## Tabla de Pruebas
|
|
49
|
+
## Tabla de Pruebas - Column Conventions
|
|
50
50
|
|
|
51
51
|
| Column | Type | Rules |
|
|
52
52
|
|--------|------|-------|
|
|
@@ -62,10 +62,10 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
62
62
|
| Prioridad | enum | `P0` \| `P1` \| `P2` \| `P3` |
|
|
63
63
|
|
|
64
64
|
### Title Etiquetas
|
|
65
|
-
- `[CONFIRMACION]`
|
|
66
|
-
- `[SMOKE]`
|
|
67
|
-
- `[REGRESION]`
|
|
68
|
-
- `[EXPLORATORIA]`
|
|
65
|
+
- `[CONFIRMACION]` - confirms a specific sprint item is implemented
|
|
66
|
+
- `[SMOKE]` - happy path end-to-end
|
|
67
|
+
- `[REGRESION]` - validates no regression in adjacent functionality
|
|
68
|
+
- `[EXPLORATORIA]` - charter-based, timeboxed, no fixed expected result
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
@@ -79,9 +79,9 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
79
79
|
- `5) Revisar bandeja de correo del usuario {QA_NOTIFY_EMAIL}`
|
|
80
80
|
|
|
81
81
|
**DO NOT:**
|
|
82
|
-
- `1) Ejecutar la funcionalidad`
|
|
83
|
-
- `2) Verificar que funciona`
|
|
84
|
-
- `3) Hacer las acciones necesarias`
|
|
82
|
+
- `1) Ejecutar la funcionalidad` <- too vague
|
|
83
|
+
- `2) Verificar que funciona` <- not measurable
|
|
84
|
+
- `3) Hacer las acciones necesarias` <- not observable
|
|
85
85
|
|
|
86
86
|
**References to test data:**
|
|
87
87
|
- Env vars: `{QA_USER_EMAIL}`, `{QA_ADMIN_EMAIL}`, `{QA_BASE_URL}`
|
|
@@ -90,7 +90,7 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
90
90
|
|
|
91
91
|
**Exploratory charters:**
|
|
92
92
|
```
|
|
93
|
-
1) Timebox: 45
|
|
93
|
+
1) Timebox: 45-60 min
|
|
94
94
|
2) Objetivo: {CHARTER_GOAL}
|
|
95
95
|
3) Explorar {AREA} variando {VARIABLES}
|
|
96
96
|
4) Registrar hallazgos con evidencia (screenshot + descripción)
|
|
@@ -101,15 +101,15 @@ Where `{modulo}` is the module code (e.g., `RCL-Casino`, `PortalProveedores`, `A
|
|
|
101
101
|
## Priority Decision Tree
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
Is it the primary happy path?
|
|
105
|
-
Is it a show-stopper risk or data corruption?
|
|
106
|
-
Is it a common negative scenario?
|
|
107
|
-
Is it a cross-module dependency?
|
|
108
|
-
Is it a state machine transition?
|
|
109
|
-
Is it a secondary feature (export/search)?
|
|
110
|
-
Is it regression in adjacent functionality?
|
|
111
|
-
Is it an edge case or low-frequency scenario?
|
|
112
|
-
Is it exploratory / cosmetic?
|
|
104
|
+
Is it the primary happy path? -> P0
|
|
105
|
+
Is it a show-stopper risk or data corruption? -> P0
|
|
106
|
+
Is it a common negative scenario? -> P1
|
|
107
|
+
Is it a cross-module dependency? -> P1
|
|
108
|
+
Is it a state machine transition? -> P1
|
|
109
|
+
Is it a secondary feature (export/search)? -> P2
|
|
110
|
+
Is it regression in adjacent functionality? -> P2
|
|
111
|
+
Is it an edge case or low-frequency scenario? -> P3
|
|
112
|
+
Is it exploratory / cosmetic? -> P3
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
---
|
|
@@ -145,4 +145,4 @@ If no ADO tasks: substitute with requirement IDs or user story references.
|
|
|
145
145
|
When a sprint covers multiple modules:
|
|
146
146
|
- Create one `Plan-de-Pruebas-{proyecto}-Sprint-{N}-{modulo}.md` per module
|
|
147
147
|
- The consolidated `Plan-de-Pruebas-{proyecto}-Sprint-{N}.md` is generated by `@keber/ado-qa consolidate-sprint`
|
|
148
|
-
- **Do not create the consolidated file manually**
|
|
148
|
+
- **Do not create the consolidated file manually** - it is a derived artifact
|
|
@@ -11,7 +11,7 @@ description: >
|
|
|
11
11
|
|
|
12
12
|
# QA Skill: Test Stabilization (Stage 5b)
|
|
13
13
|
|
|
14
|
-
**Stage**: 5b
|
|
14
|
+
**Stage**: 5b - Stabilization (parallel to / after Stage 5)
|
|
15
15
|
**Prerequisite**: Failing or flaky tests exist in `qa/07-automation/e2e/`
|
|
16
16
|
**Output**: Stable passing tests + `STABILIZATION-REPORT.md`
|
|
17
17
|
**Next stage**: Return to Stage 5 to continue automation, or Stage 6 if all tests pass
|
|
@@ -22,16 +22,16 @@ description: >
|
|
|
22
22
|
|
|
23
23
|
## Inputs Required
|
|
24
24
|
|
|
25
|
-
1. Failure output
|
|
26
|
-
2. `qa/07-automation/e2e/{file}.spec.ts`
|
|
27
|
-
3. `qa/01-specifications/{module}/`
|
|
28
|
-
4. `qa/07-automation/playwright.config.ts`
|
|
25
|
+
1. Failure output - CI log, local run output, or list of failing test names
|
|
26
|
+
2. `qa/07-automation/e2e/{file}.spec.ts` - failing spec files
|
|
27
|
+
3. `qa/01-specifications/{module}/` - ground truth for expected behavior
|
|
28
|
+
4. `qa/07-automation/playwright.config.ts` - current runner config
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
32
|
## Process
|
|
33
33
|
|
|
34
|
-
### Step 1
|
|
34
|
+
### Step 1 - Reproduce locally
|
|
35
35
|
|
|
36
36
|
Run failing tests in isolation:
|
|
37
37
|
```
|
|
@@ -39,42 +39,52 @@ npx playwright test {file}.spec.ts --project={project} --reporter=list
|
|
|
39
39
|
```
|
|
40
40
|
Do not trust CI-only failures until reproduced, or classify immediately as Category H (CI environment).
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Any finding produced by a standalone script - Node + Playwright run outside the project's test
|
|
43
|
+
runner, such as an ad-hoc diagnosis script - must be confirmed through `npx playwright test` before
|
|
44
|
+
it decides anything about a defect's status. A standalone script and the official suite have
|
|
45
|
+
produced opposite, independently reproducible results for the same scenario: a polling diagnostic
|
|
46
|
+
saw a toast 4/4 times while the official suite saw none, 6/6 across two runs. The defect had already
|
|
47
|
+
been closed on the standalone evidence and had to be reopened. Standalone output is diagnostic
|
|
48
|
+
input, never a verdict.
|
|
49
|
+
|
|
50
|
+
### Step 2 - Classify each failure
|
|
43
51
|
|
|
44
52
|
Use the classification protocol: `references/classification-protocol.md`
|
|
45
53
|
|
|
46
54
|
Category summary:
|
|
47
|
-
- **A
|
|
48
|
-
- **B
|
|
49
|
-
- **C
|
|
50
|
-
- **D
|
|
51
|
-
- **E
|
|
52
|
-
- **F
|
|
53
|
-
- **G
|
|
54
|
-
- **H
|
|
55
|
-
- **I
|
|
56
|
-
to match spec
|
|
55
|
+
- **A - Selector broken**: locator no longer matches; fix selector
|
|
56
|
+
- **B - Timing/flaky**: async operation not awaited correctly; replace with proper wait
|
|
57
|
+
- **C - Data conflict**: parallel test data collision; apply `EXEC_IDX`
|
|
58
|
+
- **D - Auth/session**: session expired or role mismatch; repair fixture
|
|
59
|
+
- **E - Spec mismatch**: behavior changed; update spec first, then test
|
|
60
|
+
- **F - Network dependency**: external call not mocked; add mock or skip
|
|
61
|
+
- **G - Environment**: missing env var or wrong base URL; fix config
|
|
62
|
+
- **H - CI environment**: OS/browser difference; add retry or tag as `@ci-skip`
|
|
63
|
+
- **I - Logic error**: test assertion does not match the spec; fix assertion
|
|
64
|
+
to match spec - **not** to match wrong app behavior. If the app is at fault,
|
|
57
65
|
use `test.fail()` instead of correcting the assertion direction.
|
|
58
66
|
|
|
59
|
-
### Step 3
|
|
67
|
+
### Step 3 - Apply fixes in priority order
|
|
60
68
|
|
|
61
|
-
Fix category priorities: A
|
|
69
|
+
Fix category priorities: A -> C -> D -> B -> I -> E -> F -> G -> H
|
|
62
70
|
|
|
63
71
|
For each fix:
|
|
64
|
-
1. Apply minimal change
|
|
72
|
+
1. Apply minimal change - do not refactor surrounding code
|
|
65
73
|
2. Re-run the specific TC to verify fix
|
|
66
74
|
3. Re-run the full describe block to verify no regression
|
|
67
75
|
4. Note confidence score (0-100) for each fix
|
|
68
76
|
|
|
69
|
-
**Category I special rule
|
|
77
|
+
**Category I special rule - assertion polarity:**
|
|
70
78
|
Before flipping or weakening an assertion, confirm its direction against the
|
|
71
|
-
spec. If the spec says the condition should hold and the app violates it
|
|
72
|
-
the original assertion was *correct* and the app is broken
|
|
79
|
+
spec. If the spec says the condition should hold and the app violates it ->
|
|
80
|
+
the original assertion was *correct* and the app is broken -> use `test.fail()`
|
|
73
81
|
+ open a defect. Do NOT invert the assertion.
|
|
74
82
|
A test flipped from failing to passing by inverting its assertion is masking
|
|
75
|
-
a defect - which is worse than a failing test.
|
|
83
|
+
a defect - which is worse than a failing test.
|
|
84
|
+
The confirmation that the app violates the spec must come from the official
|
|
85
|
+
suite, not from an isolated or standalone script.
|
|
76
86
|
|
|
77
|
-
### Step 4
|
|
87
|
+
### Step 4 - Confidence scoring
|
|
78
88
|
|
|
79
89
|
Calculate composite confidence:
|
|
80
90
|
- Consistent pass ×3 locally: +40
|
|
@@ -84,17 +94,35 @@ Calculate composite confidence:
|
|
|
84
94
|
|
|
85
95
|
Target: ≥ 90 before marking TC as stable.
|
|
86
96
|
|
|
87
|
-
### Step 5
|
|
97
|
+
### Step 5 - Handle unresolvable failures
|
|
88
98
|
|
|
89
99
|
If a failure cannot be fixed without application code change:
|
|
90
100
|
- Add `test.skip(true, 'PENDING-CODE: {ADO item or description}')` annotation
|
|
91
101
|
- Update `qa/01-specifications/{module}/05-test-scenarios.md` with `PENDING-CODE` note
|
|
92
102
|
|
|
93
|
-
|
|
103
|
+
**BLOCKING - before creating any defect file under `qa/06-defects/open/`:**
|
|
104
|
+
|
|
105
|
+
1. Search the project's known-issues record for this module. Where a defect tracker is integrated,
|
|
106
|
+
that means the tracker's already-filed items; where the project keeps a local known-issues file,
|
|
107
|
+
search that too. Use the symptom, not the TC ID - the same defect reaches different TCs.
|
|
108
|
+
2. Record the search inside the defect file itself: source consulted, terms searched, matches found
|
|
109
|
+
(or "none"). A defect file without that section is not ready to be filed.
|
|
110
|
+
3. If a match exists in an open state: do **not** create a new defect. Reference the existing item
|
|
111
|
+
in the test's `test.fail()` / `test.skip()` note instead.
|
|
112
|
+
4. If a match exists in a closed state: this is a regression, not a new defect. File it as such and
|
|
113
|
+
say which item it reopens - a defect closed three times and refiled as new each time reads as
|
|
114
|
+
three unrelated bugs.
|
|
115
|
+
5. Only with no match, create a new defect using the project's `defectIdPattern`.
|
|
116
|
+
|
|
117
|
+
This gate exists because it was skipped: four defects were filed in one session without it, and a
|
|
118
|
+
later manual check found one of them sharing its exact symptom with three already-closed tracker
|
|
119
|
+
items.
|
|
120
|
+
|
|
121
|
+
### Step 6 - Update spec if behavior changed (Category E)
|
|
94
122
|
|
|
95
123
|
Follow `qa-maintenance` skill for mid-sprint spec updates. Do not change spec to match wrong behavior.
|
|
96
124
|
|
|
97
|
-
### Step 7
|
|
125
|
+
### Step 7 - Re-run full suite
|
|
98
126
|
|
|
99
127
|
After all fixes applied, run the full module suite:
|
|
100
128
|
```
|
|
@@ -102,7 +130,7 @@ npx playwright test --project={module} --reporter=list
|
|
|
102
130
|
```
|
|
103
131
|
All previously failing TCs should pass or be explicitly skipped.
|
|
104
132
|
|
|
105
|
-
### Step 8
|
|
133
|
+
### Step 8 - Produce stabilization report
|
|
106
134
|
|
|
107
135
|
Template: `references/classification-protocol.md` (STABILIZATION-REPORT section)
|
|
108
136
|
|
|
@@ -121,8 +149,9 @@ Required sections:
|
|
|
121
149
|
| No `waitForTimeout` | Use `waitForSelector` or `waitForResponse` |
|
|
122
150
|
| No app code changes | Fix tests only, not application |
|
|
123
151
|
| Spec is ground truth | Never change spec to match wrong behavior |
|
|
124
|
-
| Unresolvable
|
|
152
|
+
| Unresolvable -> skip | With PENDING-CODE annotation |
|
|
125
153
|
| Report required | Every stabilization session produces a report |
|
|
154
|
+
| Official suite is source of truth | Only `npx playwright test`, run with the project's real config and fixtures, determines a test's or a defect's status. Standalone diagnostic scripts provide complementary evidence only - never grounds to close a defect or flip a `test.fail()` |
|
|
126
155
|
|
|
127
156
|
---
|
|
128
157
|
|