@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.
Files changed (109) hide show
  1. package/CHANGELOG.md +340 -0
  2. package/README.md +42 -2
  3. package/docs/architecture.md +30 -26
  4. package/docs/decisions/lane-heartbeat-caller.md +86 -0
  5. package/docs/final-report.md +23 -23
  6. package/docs/folder-structure-guide.md +100 -80
  7. package/docs/installation.md +42 -7
  8. package/docs/skills-architecture.md +23 -23
  9. package/docs/spec-driven-philosophy.md +9 -9
  10. package/docs/usage-with-agent.md +88 -9
  11. package/docs/visuals/diag-01-ejecutivo-1.png +0 -0
  12. package/docs/visuals/diag-02-tactico-1.png +0 -0
  13. package/docs/visuals/diag-03-tecnico-1.png +0 -0
  14. package/docs/visuals/info-01-ejecutivo-1.png +0 -0
  15. package/docs/visuals/info-02-tactico-1.png +0 -0
  16. package/docs/visuals/info-03-tecnico-1.png +0 -0
  17. package/docs/visuals/pres-01-ejecutivo-1.png +0 -0
  18. package/docs/visuals/pres-02-tactico-1.png +0 -0
  19. package/docs/visuals/pres-03-tecnico-1.png +0 -0
  20. package/docs/visuals/qa-01-problema-1.png +0 -0
  21. package/docs/visuals/qa-02-que-es-1.png +0 -0
  22. package/docs/visuals/qa-03-pipeline-1.png +0 -0
  23. package/docs/visuals/qa-04-6-archivos-1.png +0 -0
  24. package/docs/visuals/qa-05-humano-1.png +0 -0
  25. package/docs/visuals/qa-06-agente-1.png +0 -0
  26. package/docs/visuals/qa-07-skills-arch-1.png +0 -0
  27. package/docs/visuals/qa-08-traceability-1.png +0 -0
  28. package/docs/visuals/qa-en-01-problem-1.png +0 -0
  29. package/docs/visuals/qa-en-02-what-is-1.png +0 -0
  30. package/docs/visuals/qa-en-03-pipeline-1.png +0 -0
  31. package/docs/visuals/qa-en-04-6files-1.png +0 -0
  32. package/docs/visuals/qa-en-05-human-1.png +0 -0
  33. package/docs/visuals/qa-en-06-agent-1.png +0 -0
  34. package/docs/visuals/qa-en-07-skills-arch-1.png +0 -0
  35. package/docs/visuals/qa-en-08-traceability-1.png +0 -0
  36. package/examples/module-example/suppliers/00-inventory.md +1 -1
  37. package/examples/module-example/suppliers/suppliers-create.spec.ts +8 -8
  38. package/integrations/ado-powershell/README.md +1 -1
  39. package/integrations/ado-powershell/scripts/sync-ado-titles.ps1 +2 -2
  40. package/integrations/playwright/README.md +4 -4
  41. package/package.json +7 -3
  42. package/qa-framework.config.json +25 -3
  43. package/scripts/check-forbidden-chars.js +187 -0
  44. package/scripts/check-spanish-accents.js +159 -0
  45. package/scripts/cli.js +1 -1
  46. package/scripts/generate.js +2 -2
  47. package/scripts/init.js +101 -12
  48. package/scripts/lib/claude-agents.js +347 -0
  49. package/scripts/lib/claude-commands.js +56 -0
  50. package/scripts/lib/module-keys.js +54 -0
  51. package/scripts/sync-version.js +63 -0
  52. package/scripts/upgrade.js +369 -20
  53. package/scripts/validate.js +46 -21
  54. package/skills/qa-ado-integration/SKILL.md +19 -19
  55. package/skills/qa-ado-integration/references/scripts-and-config.md +6 -6
  56. package/skills/qa-automation/SKILL.md +49 -27
  57. package/skills/qa-automation/references/config-checklist.md +4 -4
  58. package/skills/qa-automation/references/dom-inspection-template.js +7 -7
  59. package/skills/qa-automation/references/patterns.md +20 -20
  60. package/skills/qa-automation/references/pom-template.md +161 -0
  61. package/skills/qa-maintenance/SKILL.md +11 -11
  62. package/skills/qa-maintenance/references/update-rules.md +8 -8
  63. package/skills/qa-module-analysis/SKILL.md +20 -19
  64. package/skills/qa-module-analysis/references/exploration-checklist.md +4 -4
  65. package/skills/qa-module-analysis/references/output-verification.md +69 -0
  66. package/skills/qa-module-analysis/references/spec-file-formats.md +14 -14
  67. package/skills/qa-spec-generation/SKILL.md +13 -7
  68. package/skills/qa-test-cases/SKILL.md +11 -81
  69. package/skills/qa-test-cases/references/test-case-template.md +5 -5
  70. package/skills/qa-test-plan/SKILL.md +22 -86
  71. package/skills/qa-test-plan/references/plan-de-pruebas-template.md +24 -24
  72. package/skills/qa-test-stabilization/SKILL.md +59 -30
  73. package/skills/qa-test-stabilization/references/classification-protocol.md +35 -35
  74. package/templates/agent-next-steps.md +10 -10
  75. package/templates/agents/qa-analisis.md +142 -0
  76. package/templates/agents/qa-asesoria.md +48 -0
  77. package/templates/agents/qa-informe-resultados.md +236 -0
  78. package/templates/agents/qa-investigador.md +143 -0
  79. package/templates/agents/qa-plan.md +131 -0
  80. package/templates/agents/qa-reporte-ejecucion.md +138 -0
  81. package/templates/automation-scaffold/.env.example +36 -6
  82. package/templates/automation-scaffold/fixtures/auth.ts +27 -5
  83. package/templates/automation-scaffold/fixtures/base.ts +23 -1
  84. package/templates/automation-scaffold/fixtures/test-helpers.ts +1 -1
  85. package/templates/automation-scaffold/global-setup.ts +117 -48
  86. package/templates/automation-scaffold/playwright.config.ts +72 -32
  87. package/templates/automation-scaffold/scripts/global-setup-guards.js +184 -0
  88. package/templates/automation-scaffold/scripts/lane-config.js +269 -0
  89. package/templates/automation-scaffold/scripts/lane-lock.js +589 -0
  90. package/templates/defect-report.md +17 -3
  91. package/templates/execution-report.md +9 -9
  92. package/templates/integration-scaffold/.env.example +1 -1
  93. package/templates/integration-scaffold/global-setup.ts +21 -1
  94. package/templates/integration-scaffold/playwright.config.ts +15 -1
  95. package/templates/qa-framework.instructions.md +9 -8
  96. package/templates/qa-framework.rules.md +53 -0
  97. package/templates/qa-readme.md +8 -8
  98. package/templates/session-summary.md +2 -2
  99. package/templates/specification/00-inventory.md +3 -3
  100. package/templates/specification/01-business-rules.md +6 -6
  101. package/templates/specification/02-workflows.md +1 -1
  102. package/templates/specification/03-roles-permissions.md +1 -1
  103. package/templates/specification/04-test-data.md +8 -8
  104. package/templates/specification/05-test-scenarios.md +5 -5
  105. package/templates/test-case.md +3 -3
  106. package/templates/test-data-guidelines.md +7 -7
  107. package/templates/test-plan-sprint.md +13 -13
  108. package/templates/test-plan.md +3 -3
  109. 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 — Test Case Steps (expand / complete Plan de Pruebas)
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 — Automation (`qa-automation`) or ADO Integration (`qa-ado-integration`)
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 — proceed to Stage 5 or ADO |
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` — 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
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 — Identify rows needing expansion
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 — Expand steps in-table
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 — Standalone TC files (only when needed)
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 — Quality gates
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 — {Module Display Name}
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 — SKIPPED: DEF-001 (ADO #21944). Switch defaults to OFF. Re-enable after fix.`
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 — no TC depends on state from a prior TC
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 → verify → update → verify → delete → verify
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 — Plan de Pruebas (test plan + detailed test case table)
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 — Expand steps (`qa-test-cases`) if steps need more detail; or Stage 5 — Automation (`qa-automation`)
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 — steps in the table become steps in ADO.
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}/` — 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
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` → `project.name`
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 — Collect TC inventory
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-CODE` → include in table but mark type as `Bloqueado`
44
+ - TCs marked `BLOCKED-PERMISSIONS`, `PENDING-CODE`, or `PENDING-BROWSER` -> include in table but mark type as `Bloqueado`
45
45
 
46
- ### Step 2 — Apply priority rules
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 — Define TestSuites (ADO grouping)
54
+ ### Step 3 - Define TestSuites (ADO grouping)
55
55
 
56
- Group TCs by functional area. Each group → one ADO Test Suite:
57
- - 3–7 suites per module is typical
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 — Write the Plan de Pruebas document
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–P3 summary)
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 ↔ N)
76
+ 11. Matriz de Trazabilidad (Task <-> N)
77
77
  12. Notas de automatización
78
78
 
79
- #### Step 4a — Tabla de Pruebas (most important section)
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...) — used in trazabilidad matrix |
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` — etiquetas: CONFIRMACION, SMOKE, REGRESION, EXPLORATORIA |
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 — Update status
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 — Template and Conventions
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 — {PROYECTO} — Sprint {NNN} — {MODULO_NOMBRE}
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}) ← omit if ADO disabled
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–P3 summary)
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 ← PRIMARY ARTIFACT
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 — Column Conventions
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]` — 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
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` ← too vague
83
- - `2) Verificar que funciona` ← not measurable
84
- - `3) Hacer las acciones necesarias` ← not observable
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–60 min
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? → 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
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** — it is a derived artifact
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 — Stabilization (parallel to / after Stage 5)
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 — 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
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 — Reproduce locally
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
- ### Step 2 — Classify each failure
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 — Selector broken**: locator no longer matches; fix selector
48
- - **B — Timing/flaky**: async operation not awaited correctly; replace with proper wait
49
- - **C — Data conflict**: parallel test data collision; apply `EXEC_IDX`
50
- - **D — Auth/session**: session expired or role mismatch; repair fixture
51
- - **E — Spec mismatch**: behavior changed; update spec first, then test
52
- - **F — Network dependency**: external call not mocked; add mock or skip
53
- - **G — Environment**: missing env var or wrong base URL; fix config
54
- - **H — CI environment**: OS/browser difference; add retry or tag as `@ci-skip`
55
- - **I — Logic error**: test assertion does not match the spec; fix assertion
56
- to match spec — **not** to match wrong app behavior. If the app is at fault,
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 — Apply fixes in priority order
67
+ ### Step 3 - Apply fixes in priority order
60
68
 
61
- Fix category priorities: A → C → D → B → I → E → F → G → H
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 — do not refactor surrounding code
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 — assertion polarity:**
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 → use `test.fail()`
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 — Confidence scoring
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 — Handle unresolvable failures
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
- ### Step 6 — Update spec if behavior changed (Category E)
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 — Re-run full suite
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 — Produce stabilization report
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 → skip | With PENDING-CODE annotation |
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