@keber/qa-framework 1.10.0 → 1.12.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 +63 -18
- package/README.md +2 -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 +106 -80
- package/docs/installation.md +35 -7
- package/docs/skills-architecture.md +23 -23
- package/docs/spec-driven-philosophy.md +9 -9
- package/docs/usage-with-agent.md +83 -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/pipelines/azure-pipeline-qa.yml +92 -25
- package/integrations/ado-powershell/scripts/sync-ado-titles.ps1 +2 -2
- package/integrations/playwright/README.md +128 -4
- package/package.json +9 -6
- package/qa-framework.config.json +24 -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 +108 -45
- package/scripts/lib/claude-agents.js +78 -0
- package/scripts/lib/claude-commands.js +56 -0
- package/scripts/sync-version.js +36 -0
- package/scripts/upgrade.js +461 -30
- package/scripts/validate.js +17 -17
- 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 +234 -0
- package/templates/agents/qa-plan.md +131 -0
- package/templates/automation-scaffold/.env.example +52 -3
- package/templates/automation-scaffold/fixtures/auth.ts +27 -5
- package/templates/automation-scaffold/fixtures/base.ts +130 -0
- package/templates/automation-scaffold/fixtures/test-helpers.ts +1 -1
- package/templates/automation-scaffold/global-setup.ts +196 -37
- package/templates/automation-scaffold/playwright.config.ts +74 -10
- 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 +18 -4
- package/templates/execution-report.md +9 -9
- package/templates/integration-scaffold/.env.example +40 -0
- package/templates/integration-scaffold/README.md +77 -0
- package/templates/integration-scaffold/global-setup.ts +119 -0
- package/templates/integration-scaffold/package.json +15 -0
- package/templates/integration-scaffold/playwright.config.ts +92 -0
- package/templates/integration-scaffold/tests/example.spec.ts +43 -0
- package/templates/memory/ci-pipeline-findings.md +36 -0
- package/templates/memory/data-volatility-strategies.md +70 -0
- package/templates/memory/e2e-stabilization-patterns.md +54 -0
- package/templates/qa-framework.instructions.md +16 -7
- package/templates/qa-framework.rules.md +53 -0
- package/templates/qa-readme.md +26 -5
- 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
package/templates/qa-readme.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# QA
|
|
1
|
+
# QA - {PROJECT_DISPLAY_NAME}
|
|
2
2
|
|
|
3
3
|
> Framework: `@keber/qa-framework` v{VERSION}
|
|
4
4
|
> Language: {LANGUAGE} | Base URL: `{QA_BASE_URL}`
|
|
5
|
+
> ADO Project: `{ADO_ORG} / {ADO_PROJECT}` _(optional - remove line if not using Azure DevOps)_
|
|
5
6
|
|
|
6
7
|
---
|
|
7
8
|
|
|
@@ -9,7 +10,7 @@
|
|
|
9
10
|
|
|
10
11
|
| Module | Submodule | TCs Total | TCs Automated | Plan | ADO Suite | Status | Last Run |
|
|
11
12
|
|---|---|---|---|---|---|---|---|
|
|
12
|
-
| {MODULE_NAME} | {SUBMODULE_NAME} |
|
|
13
|
+
| {MODULE_NAME} | {SUBMODULE_NAME} | - | - | ⬜ | - | 🔲 Not started | - |
|
|
13
14
|
|
|
14
15
|
**Legend**: ✅ Done · ⚠️ Partial · 🔲 Not started · ⛔ Blocked
|
|
15
16
|
|
|
@@ -43,15 +44,35 @@ npx playwright test --last-failed
|
|
|
43
44
|
|
|
44
45
|
| ID | Description | Affects | Opened | Status |
|
|
45
46
|
|---|---|---|---|---|
|
|
46
|
-
|
|
|
47
|
+
| - | No active blockers | - | - | - |
|
|
47
48
|
|
|
48
49
|
---
|
|
49
50
|
|
|
51
|
+
## Last Run
|
|
52
|
+
|
|
53
|
+
| Suite | Date | Pass | Fail | Skip | CI Link |
|
|
54
|
+
|---|---|---|---|---|---|
|
|
55
|
+
| E2E | - | - | - | - | - |
|
|
56
|
+
| API | - | - | - | - | - |
|
|
57
|
+
|
|
58
|
+
> Update this table after each significant run. The CI Link can be an ADO TestRun URL, a
|
|
59
|
+
> GitHub Actions run URL, or a path to a local report file.
|
|
60
|
+
|
|
50
61
|
## Last Execution
|
|
51
62
|
|
|
52
63
|
| Date | Suite | Pass | Skip | Fail | Duration | Report |
|
|
53
64
|
|---|---|---|---|---|---|---|
|
|
54
|
-
|
|
|
65
|
+
| - | - | - | - | - | - | - |
|
|
66
|
+
|
|
67
|
+
## Flaky Tests
|
|
68
|
+
|
|
69
|
+
> Mark known flaky tests with this inline annotation directly in the table or spec file.
|
|
70
|
+
> Format: `[flaky] <test-id-or-name> - <root cause> - last seen <YYYY-MM-DD>`
|
|
71
|
+
>
|
|
72
|
+
> Example:
|
|
73
|
+
> `[flaky] TC-MOD-012 - timing issue on slow CI agents - last seen 2026-01-15`
|
|
74
|
+
>
|
|
75
|
+
> Remove the annotation once the test has been stable for 2+ consecutive CI runs.
|
|
55
76
|
|
|
56
77
|
---
|
|
57
78
|
|
|
@@ -60,7 +81,7 @@ npx playwright test --last-failed
|
|
|
60
81
|
<!-- Completed sprint checklists are moved here from AGENT-NEXT-STEPS.md -->
|
|
61
82
|
<!-- Format per sprint: -->
|
|
62
83
|
<!--
|
|
63
|
-
### Sprint N
|
|
84
|
+
### Sprint N - {SPRINT_NAME} ({YYYY-MM-DD})
|
|
64
85
|
|
|
65
86
|
**Submodules**: {list}
|
|
66
87
|
**TCs automated**: {N} P0 + {M} P1
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Session Summary
|
|
1
|
+
# Session Summary - {{SESSION_TITLE}}
|
|
2
2
|
|
|
3
3
|
**Date**: YYYY-MM-DD
|
|
4
4
|
**Session type**: Module Analysis / Spec Generation / Test Plan / Automation / ADO Sync / Maintenance
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
| DEF-ID | Title | Severity | File opened? |
|
|
46
46
|
|--------|-------|----------|--------------|
|
|
47
|
-
| DEF-{{NNN}} | {{title}} | {{severity}} | Yes
|
|
47
|
+
| DEF-{{NNN}} | {{title}} | {{severity}} | Yes - `qa/06-defects/open/DEF-{{NNN}}.md` |
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MODULE: {{MODULE_NAME}}
|
|
1
|
+
# MODULE: {{MODULE_NAME}} - Submodule: {{SUBMODULE_NAME}}
|
|
2
2
|
|
|
3
3
|
> **Template version**: 1.0 | Replace all `{{...}}` with actual values before committing.
|
|
4
4
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
| Level | Label | URL |
|
|
20
20
|
|-------|-------|-----|
|
|
21
|
-
| 1 | {{TOP_MENU}} |
|
|
21
|
+
| 1 | {{TOP_MENU}} | - |
|
|
22
22
|
| 2 | {{SUBMENU}} | `{{URL}}` |
|
|
23
23
|
|
|
24
24
|
---
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
| Submodule | Relationship | Notes |
|
|
72
72
|
|-----------|-------------|-------|
|
|
73
73
|
| {{submodule}} | Provides data to this module | Dropdown populated from {{API}} |
|
|
74
|
-
| {{submodule}} | Depends on data from this module |
|
|
74
|
+
| {{submodule}} | Depends on data from this module | - |
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Business Rules
|
|
1
|
+
# Business Rules - {{MODULE_NAME}}: {{SUBMODULE_NAME}}
|
|
2
2
|
|
|
3
3
|
> **Module code**: {{MODULE_CODE}} | **Submodule code**: {{SUBMODULE_CODE}}
|
|
4
4
|
> **Last updated**: YYYY-MM-DD
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
- **Type**: Access Control
|
|
33
33
|
- **Trigger**: When user with role {{role}} navigates to {{URL}}
|
|
34
34
|
- **Behavior**: {{redirect / error / empty page}}
|
|
35
|
-
- **Notes**:
|
|
35
|
+
- **Notes**: -
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
- **Trigger**: When {{action}} is performed on a record with status {{STATUS_A}}
|
|
43
43
|
- **Behavior**: Record transitions from {{STATUS_A}} to {{STATUS_B}}
|
|
44
44
|
- **Invalid state**: Attempting this action on status {{STATUS_C}} results in {{error}}
|
|
45
|
-
- **Notes**:
|
|
45
|
+
- **Notes**: -
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
- **Type**: Calculation
|
|
52
52
|
- **Trigger**: When {{field}} or {{field}} changes
|
|
53
53
|
- **Behavior**: {{calculated_field}} = {{formula}}
|
|
54
|
-
- **Notes**:
|
|
54
|
+
- **Notes**: -
|
|
55
55
|
|
|
56
56
|
---
|
|
57
57
|
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
|
|
60
60
|
- **Type**: Integration
|
|
61
61
|
- **Trigger**: When {{action}} completes successfully
|
|
62
|
-
- **Behavior**: {{external system}} is notified/called
|
|
62
|
+
- **Behavior**: {{external system}} is notified/called - {{what happens}}
|
|
63
63
|
- **Fallback**: {{what happens if external system fails}}
|
|
64
|
-
- **Notes**:
|
|
64
|
+
- **Notes**: -
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Test Data
|
|
1
|
+
# Test Data - {{MODULE_NAME}}: {{SUBMODULE_NAME}}
|
|
2
2
|
|
|
3
3
|
> **Module code**: {{MODULE_CODE}} | **Submodule code**: {{SUBMODULE_CODE}}
|
|
4
4
|
> **Last updated**: YYYY-MM-DD
|
|
@@ -23,13 +23,13 @@ The following data must exist in the QA environment before tests run:
|
|
|
23
23
|
|
|
24
24
|
## Data Shapes for Key Scenarios
|
|
25
25
|
|
|
26
|
-
### Scenario: Happy path
|
|
26
|
+
### Scenario: Happy path - create record
|
|
27
27
|
|
|
28
28
|
| Field | Value / Rule |
|
|
29
29
|
|-------|-------------|
|
|
30
|
-
| {{name-field}} | `Test-{EXEC_IDX}`
|
|
30
|
+
| {{name-field}} | `Test-{EXEC_IDX}` - unique per run via EXEC_IDX pattern |
|
|
31
31
|
| {{select-field}} | Any valid option (first option is acceptable) |
|
|
32
|
-
| {{date-field}} | `${2120 + (EXEC_IDX % 10)}-01-01`
|
|
32
|
+
| {{date-field}} | `${2120 + (EXEC_IDX % 10)}-01-01` - future date, collision-resistant |
|
|
33
33
|
| User | `{{Role 1}}`, credentials from `QA_USER_{{ROLE1_UPPER}}_EMAIL` |
|
|
34
34
|
|
|
35
35
|
### Scenario: Required field validation
|
|
@@ -49,7 +49,7 @@ The following data must exist in the QA environment before tests run:
|
|
|
49
49
|
|
|
50
50
|
**Expected**: System error message: "{{exact duplicate error text}}"
|
|
51
51
|
|
|
52
|
-
### Scenario: State transition
|
|
52
|
+
### Scenario: State transition - {{action}}
|
|
53
53
|
|
|
54
54
|
| Field | Value |
|
|
55
55
|
|-------|-------|
|
|
@@ -82,8 +82,8 @@ const testDate = `${year}-${month}-${day}`;
|
|
|
82
82
|
|
|
83
83
|
## Data Isolation Rules
|
|
84
84
|
|
|
85
|
-
1. Each test creates its own data
|
|
86
|
-
2. `beforeAll` creates records for the entire suite
|
|
85
|
+
1. Each test creates its own data - no shared mutable state between tests
|
|
86
|
+
2. `beforeAll` creates records for the entire suite - provision ≥ N records for N consuming tests
|
|
87
87
|
3. No test teardown required when EXEC_IDX-based names are used (future-dated records do not collide across runs)
|
|
88
88
|
4. If a test modifies shared data (approve/reject), it must create its own record in `beforeAll`
|
|
89
89
|
|
|
@@ -93,7 +93,7 @@ const testDate = `${year}-${month}-${day}`;
|
|
|
93
93
|
|
|
94
94
|
| Item | Reason for retirement | Replaced by |
|
|
95
95
|
|------|-----------------------|-------------|
|
|
96
|
-
| {{item}} | Real employee data
|
|
96
|
+
| {{item}} | Real employee data - PII risk | EXEC_IDX-generated test record |
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Test Scenarios
|
|
1
|
+
# Test Scenarios - {{MODULE_NAME}}: {{SUBMODULE_NAME}}
|
|
2
2
|
|
|
3
3
|
> **Module code**: {{MODULE_CODE}} | **Submodule code**: {{SUBMODULE_CODE}}
|
|
4
4
|
> **Last updated**: YYYY-MM-DD
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
78
|
-
### TC-{{M}}-{{S}}-004: Create new record
|
|
78
|
+
### TC-{{M}}-{{S}}-004: Create new record - happy path
|
|
79
79
|
|
|
80
80
|
| Field | Value |
|
|
81
81
|
|-------|-------|
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
-
### TC-{{M}}-{{S}}-005: Required field validation
|
|
100
|
+
### TC-{{M}}-{{S}}-005: Required field validation - name empty
|
|
101
101
|
|
|
102
102
|
| Field | Value |
|
|
103
103
|
|-------|-------|
|
|
@@ -213,9 +213,9 @@
|
|
|
213
213
|
|
|
214
214
|
| TC ID | Business Rules | Workflow |
|
|
215
215
|
|-------|---------------|---------|
|
|
216
|
-
| TC-{{M}}-{{S}}-001 |
|
|
216
|
+
| TC-{{M}}-{{S}}-001 | - | - |
|
|
217
217
|
| TC-{{M}}-{{S}}-004 | RN-{{M}}-001 | FL-{{M}}-001 |
|
|
218
|
-
| TC-{{M}}-{{S}}-005 | RN-{{M}}-001 |
|
|
218
|
+
| TC-{{M}}-{{S}}-005 | RN-{{M}}-001 | - |
|
|
219
219
|
|
|
220
220
|
---
|
|
221
221
|
|
package/templates/test-case.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Test Case
|
|
1
|
+
# Test Case - TC-{{MODULE}}-{{SUB}}-{{NNN}}: {{Title}}
|
|
2
2
|
|
|
3
3
|
| Field | Value |
|
|
4
4
|
|-------|-------|
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
| Type | Functional / Integration / Regression / Smoke |
|
|
12
12
|
| Execution | Manual / Automated / Both |
|
|
13
13
|
| Automation file | `qa/07-automation/e2e/{{module}}/{{submodule}}.spec.ts` (if automated) |
|
|
14
|
-
| Preconditions | {{List required setup
|
|
15
|
-
| Author | (agent output
|
|
14
|
+
| Preconditions | {{List required setup - see 04-test-data.md}} |
|
|
15
|
+
| Author | (agent output - reviewed by human) |
|
|
16
16
|
| Last updated | YYYY-MM-DD |
|
|
17
17
|
|
|
18
18
|
---
|
|
@@ -16,7 +16,7 @@ All user emails, passwords, API keys, and tokens must come from environment vari
|
|
|
16
16
|
const email = process.env.QA_USER_EMAIL!;
|
|
17
17
|
const password = process.env.QA_USER_PASSWORD!;
|
|
18
18
|
|
|
19
|
-
// ❌ WRONG
|
|
19
|
+
// ❌ WRONG - never commit credentials
|
|
20
20
|
const email = 'admin@example.com';
|
|
21
21
|
const password = 'secret123';
|
|
22
22
|
```
|
|
@@ -25,7 +25,7 @@ Document env var names in `qa/04-test-data/users.md`. Use `<PLACEHOLDER>` for va
|
|
|
25
25
|
|
|
26
26
|
### 2. Use EXEC_IDX for unique values per run
|
|
27
27
|
|
|
28
|
-
Never create records with static names
|
|
28
|
+
Never create records with static names - they collide between runs and can leave leftover data.
|
|
29
29
|
|
|
30
30
|
```typescript
|
|
31
31
|
const EXEC_IDX = Math.floor(Date.now() / 60_000) % 100_000;
|
|
@@ -42,7 +42,7 @@ const date = `${year}-${month}-${day}`;
|
|
|
42
42
|
|
|
43
43
|
### 3. Provision in `beforeAll`, not `beforeEach`
|
|
44
44
|
|
|
45
|
-
Create required records once per suite, not once per test. Each test that **consumes** a record needs its own provisioned record
|
|
45
|
+
Create required records once per suite, not once per test. Each test that **consumes** a record needs its own provisioned record - never share a single record among multiple tests.
|
|
46
46
|
|
|
47
47
|
```typescript
|
|
48
48
|
test.beforeAll(async ({ browser }) => {
|
|
@@ -61,10 +61,10 @@ Complex setup that cannot be done via the UI goes in a seeder script, not inside
|
|
|
61
61
|
|
|
62
62
|
```
|
|
63
63
|
qa/04-test-data/
|
|
64
|
-
├── users.md
|
|
65
|
-
├── fixtures/
|
|
66
|
-
├── factories/
|
|
67
|
-
└── seeders/
|
|
64
|
+
├── users.md <- Role catalog + env var names (no real values)
|
|
65
|
+
├── fixtures/ <- Static JSON/Markdown for reference data
|
|
66
|
+
├── factories/ <- Dynamic data generation patterns
|
|
67
|
+
└── seeders/ <- DB/API seed scripts for complex prerequisites
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### 5. Add `.env` and `.auth/` to `.gitignore`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Plan de Pruebas
|
|
1
|
+
# Plan de Pruebas - {{PROYECTO}} - Sprint {{NNN}} - {{MODULO_NOMBRE}}
|
|
2
2
|
|
|
3
3
|
**Proyecto:** {{PROYECTO}}
|
|
4
4
|
**Sprint:** {{NNN}}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
**Código módulo:** {{MODULO_CODE}}
|
|
7
7
|
**Fecha planificación:** {{YYYY-MM-DD}}
|
|
8
8
|
**Ventana QA:** {{YYYY-MM-DD}} y {{YYYY-MM-DD}}
|
|
9
|
-
**ADO Test Plan:** [Plan {{ADO_PLAN_ID}}
|
|
9
|
+
**ADO Test Plan:** [Plan {{ADO_PLAN_ID}} - {{PROYECTO}} Sprint {{NNN}}]({{ADO_TEST_PLAN_URL}}) *(omitir si ADO no está habilitado)*
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -37,27 +37,27 @@
|
|
|
37
37
|
> Si no hay ADO, listar los requerimientos o módulos abordados.
|
|
38
38
|
|
|
39
39
|
### {{AREA_FUNCIONAL_1}}
|
|
40
|
-
- Task {{ID}}
|
|
41
|
-
- Task {{ID}}
|
|
40
|
+
- Task {{ID}} - {{DESCRIPCION}}
|
|
41
|
+
- Task {{ID}} - {{DESCRIPCION}}
|
|
42
42
|
|
|
43
43
|
### {{AREA_FUNCIONAL_2}}
|
|
44
|
-
- Task {{ID}}
|
|
44
|
+
- Task {{ID}} - {{DESCRIPCION}}
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
48
|
## 4. Priorización
|
|
49
49
|
|
|
50
|
-
**P0
|
|
50
|
+
**P0 - Confirmación (obligatorio)**
|
|
51
51
|
- {{ESCENARIO_CRITICO_1}}
|
|
52
52
|
- {{ESCENARIO_CRITICO_2}}
|
|
53
53
|
|
|
54
|
-
**P1
|
|
54
|
+
**P1 - Smoke (camino feliz)**
|
|
55
55
|
- {{FLUJO_PRINCIPAL}}
|
|
56
56
|
|
|
57
|
-
**P2
|
|
57
|
+
**P2 - Regresión mínima adyacente**
|
|
58
58
|
- {{REGRESION_1}}
|
|
59
59
|
|
|
60
|
-
**P3
|
|
60
|
+
**P3 - Exploratoria (timeboxed)**
|
|
61
61
|
- Charter 1 ({{N}} min): {{DESCRIPCION_CHARTER}}
|
|
62
62
|
|
|
63
63
|
---
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
|
|
78
78
|
- Ambiente QA disponible en `{{QA_BASE_URL}}`
|
|
79
79
|
- Roles disponibles:
|
|
80
|
-
- Usuario **{{ROL_1}}**
|
|
81
|
-
- Usuario **{{ROL_2}}**
|
|
80
|
+
- Usuario **{{ROL_1}}** - para {{ACCION}}
|
|
81
|
+
- Usuario **{{ROL_2}}** - para {{ACCION}}
|
|
82
82
|
- Datos base:
|
|
83
83
|
- {{DATO_BASE_1}}
|
|
84
84
|
- {{DATO_BASE_2}}
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
|
|
110
110
|
> Convenciones:
|
|
111
111
|
> - **TC-ID:** `TC-{{MODULO_CODE}}-{{SUBMODULO_CODE}}-NNN` (o `N/A` si no hay ID asignado aún)
|
|
112
|
-
> - **Steps:** numerados, separados por `<br>`
|
|
112
|
+
> - **Steps:** numerados, separados por `<br>` - verbos concretos de UI (`Navegar a`, `Ingresar`, `Hacer click`, `Verificar`)
|
|
113
113
|
> - **Confirma:** `Task NNNNN` si hay tarea ADO relacionada; `N/A` si no aplica
|
|
114
114
|
> - **Tipo:** `Manual` | `Automatizado` | `Ambos`
|
|
115
115
|
> - **Prioridad:** `P0` | `P1` | `P2` | `P3`
|
|
@@ -149,4 +149,4 @@
|
|
|
149
149
|
> `qa/02-test-plans/sprints/Sprint-{{NNN}}/Plan-de-Pruebas-{{PROYECTO}}-Sprint-{{NNN}}.md`
|
|
150
150
|
>
|
|
151
151
|
> El consolidado se genera con el script `@keber/ado-qa consolidate-sprint --sprint {{NNN}}`.
|
|
152
|
-
> **No editar manualmente**
|
|
152
|
+
> **No editar manualmente** - es derivado de los archivos por módulo.
|
package/templates/test-plan.md
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
>
|
|
5
5
|
> This file is retained for reference only.
|
|
6
6
|
|
|
7
|
-
# Test Plan
|
|
7
|
+
# Test Plan - {{MODULE_NAME}}
|
|
8
8
|
|
|
9
9
|
**Plan ID**: TP-{{MODULE}}-{{VERSION}}
|
|
10
10
|
**Module**: {{MODULE_NAME}}
|
|
11
11
|
**Sprint / Release**: Sprint {{NNN}}
|
|
12
|
-
**Prepared by**: (agent output
|
|
12
|
+
**Prepared by**: (agent output - reviewed by human)
|
|
13
13
|
**Date**: YYYY-MM-DD
|
|
14
14
|
**ADO Test Plan**: #{ADO_PLAN_ID} (if ADO enabled)
|
|
15
15
|
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
|
|
75
75
|
| Scenario | Feasible? | Reason if not |
|
|
76
76
|
|----------|-----------|---------------|
|
|
77
|
-
| Happy path create | Yes |
|
|
77
|
+
| Happy path create | Yes | - |
|
|
78
78
|
| Export to PDF | No | Requires visual validation |
|
|
79
79
|
| Third-party OAuth | No | External system |
|
|
80
80
|
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Reference: Test Plan Template
|
|
2
|
-
|
|
3
|
-
> Loaded by `skills/qa-test-plan/` when generating a test plan document.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Complete Test Plan Template
|
|
8
|
-
|
|
9
|
-
Create at: `qa/02-test-plans/automated/{module}-test-plan.md`
|
|
10
|
-
|
|
11
|
-
```markdown
|
|
12
|
-
# Test Plan: {Module Display Name}
|
|
13
|
-
|
|
14
|
-
| Field | Value |
|
|
15
|
-
|-------|-------|
|
|
16
|
-
| Version | 1.0 |
|
|
17
|
-
| Date | YYYY-MM-DD |
|
|
18
|
-
| Module | {module-code} |
|
|
19
|
-
| Test plan type | Automated / Manual / Combined |
|
|
20
|
-
| Author | {agent or human name} |
|
|
21
|
-
| Status | Draft / Approved / Active |
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 1. Objective
|
|
26
|
-
|
|
27
|
-
{1-2 sentences: what this test plan covers and why}
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 2. Scope
|
|
32
|
-
|
|
33
|
-
### In scope
|
|
34
|
-
- {submodule 1}: {what is being tested}
|
|
35
|
-
|
|
36
|
-
### Out of scope
|
|
37
|
-
- {what is explicitly excluded and why}
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 3. Automation Feasibility Analysis
|
|
42
|
-
|
|
43
|
-
| Submodule | Total TCs | Fully automatable | Partially | Not automatable | Reason for exclusions |
|
|
44
|
-
|-----------|-----------|------------------|-----------|-----------------|----------------------|
|
|
45
|
-
| {name} | {N} | {N} ({%}) | {N} ({%}) | {N} ({%}) | {brief reason} |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## 4. Priority Distribution
|
|
50
|
-
|
|
51
|
-
| Priority | TCs selected | Automated | Manual |
|
|
52
|
-
|----------|-------------|-----------|--------|
|
|
53
|
-
| P0 (Critical — every build) | {N} | {N} | {N} |
|
|
54
|
-
| P1 (High — every release) | {N} | {N} | {N} |
|
|
55
|
-
| P2 (Medium — periodic regression) | {N} | {N} | {N} |
|
|
56
|
-
| P3 (Low — manual only) | {N} | 0 | {N} |
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 5. TC Selection and Automation Plan
|
|
61
|
-
|
|
62
|
-
### P0 Suite
|
|
63
|
-
|
|
64
|
-
| TC ID | Title | Type | Automation status |
|
|
65
|
-
|-------|-------|------|------------------|
|
|
66
|
-
| TC-{M}-{S}-001 | {title} | Functional | Queued |
|
|
67
|
-
|
|
68
|
-
### P1 Suite
|
|
69
|
-
|
|
70
|
-
| TC ID | Title | Type | Automation status |
|
|
71
|
-
|-------|-------|------|------------------|
|
|
72
|
-
| TC-{M}-{S}-010 | {title} | Functional | Queued |
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## 6. Azure DevOps Test Plan (if enabled)
|
|
77
|
-
|
|
78
|
-
| Item | Value |
|
|
79
|
-
|------|-------|
|
|
80
|
-
| ADO Plan ID | (populate after creation) |
|
|
81
|
-
| ADO Suite IDs | (populate after creation) |
|
|
82
|
-
| Reporter | @alex_neo/playwright-azure-reporter |
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 7. Test Environment
|
|
87
|
-
|
|
88
|
-
| Item | Value |
|
|
89
|
-
|------|-------|
|
|
90
|
-
| QA URL | {{QA_BASE_URL}} |
|
|
91
|
-
| Browser | Chromium (Playwright) |
|
|
92
|
-
| Workers (local) | {N} |
|
|
93
|
-
| Workers (CI) | {N} |
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## 8. Risks and Assumptions
|
|
98
|
-
|
|
99
|
-
| Risk | Likelihood | Impact | Mitigation |
|
|
100
|
-
|------|-----------|--------|------------|
|
|
101
|
-
| Unstable QA data | Medium | High | Use EXEC_IDX-generated data |
|
|
102
|
-
| External service unavailable | High | Medium | Use intercept / mock strategy |
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## 9. Excluded TCs
|
|
107
|
-
|
|
108
|
-
| TC ID | Reason for exclusion |
|
|
109
|
-
|-------|---------------------|
|
|
110
|
-
| TC-{M}-{S}-NNN | `BLOCKED-PERMISSIONS` |
|
|
111
|
-
| TC-{M}-{S}-NNN | `PENDING-CODE` |
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## 10. Execution Schedule
|
|
116
|
-
|
|
117
|
-
| Suite | Trigger | Frequency |
|
|
118
|
-
|-------|---------|-----------|
|
|
119
|
-
| P0 smoke | Every CI build | On push to main / PR |
|
|
120
|
-
| P1 regression | Scheduled | Nightly |
|
|
121
|
-
| P2 full regression | Manual trigger | Before each release |
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Changelog
|
|
126
|
-
|
|
127
|
-
| Version | Date | Description |
|
|
128
|
-
|---------|------|-------------|
|
|
129
|
-
| 1.0 | YYYY-MM-DD | Initial creation |
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Priority Decision Tree
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
Primary happy path of the feature?
|
|
138
|
-
YES → P0
|
|
139
|
-
Critical data corruption or show-stopper risk?
|
|
140
|
-
YES → P0
|
|
141
|
-
Common negative scenario (empty required field, duplicate)?
|
|
142
|
-
YES → P1
|
|
143
|
-
Cross-module dependency or state machine transition?
|
|
144
|
-
YES → P1
|
|
145
|
-
Secondary feature (export, pagination, search)?
|
|
146
|
-
YES → P2
|
|
147
|
-
Edge case, cosmetic, or low-frequency scenario?
|
|
148
|
-
YES → P3
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Automation Feasibility Criteria
|
|
154
|
-
|
|
155
|
-
| Feasibility | Criteria |
|
|
156
|
-
|---|---|
|
|
157
|
-
| Fully automatable | Deterministic, observable via browser, no external system dependency |
|
|
158
|
-
| Partially automatable | External system can be mocked, or some step requires human inspection |
|
|
159
|
-
| Not automatable | Physical access required; irreversible side effects; non-deterministic; BLOCKED-PERMISSIONS |
|