@keber/qa-framework 1.0.4

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 (51) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +233 -0
  3. package/agent-instructions/00-module-analysis.md +263 -0
  4. package/agent-instructions/01-spec-generation.md +278 -0
  5. package/agent-instructions/02-test-plan-generation.md +202 -0
  6. package/agent-instructions/03-test-case-generation.md +147 -0
  7. package/agent-instructions/04-automation-generation.md +310 -0
  8. package/agent-instructions/04b-test-stabilization.md +306 -0
  9. package/agent-instructions/05-ado-integration.md +244 -0
  10. package/agent-instructions/06-maintenance.md +125 -0
  11. package/docs/architecture.md +227 -0
  12. package/docs/comparison-matrix.md +131 -0
  13. package/docs/final-report.md +279 -0
  14. package/docs/folder-structure-guide.md +291 -0
  15. package/docs/generalization-decisions.md +203 -0
  16. package/docs/installation.md +239 -0
  17. package/docs/spec-driven-philosophy.md +170 -0
  18. package/docs/usage-with-agent.md +203 -0
  19. package/examples/module-example/README.md +34 -0
  20. package/examples/module-example/suppliers/00-inventory.md +56 -0
  21. package/examples/module-example/suppliers/suppliers-create.spec.ts +148 -0
  22. package/integrations/ado-powershell/README.md +75 -0
  23. package/integrations/ado-powershell/pipelines/azure-pipeline-qa.yml +133 -0
  24. package/integrations/ado-powershell/scripts/create-testplan-from-mapping.ps1 +114 -0
  25. package/integrations/ado-powershell/scripts/inject-ado-ids.ps1 +96 -0
  26. package/integrations/ado-powershell/scripts/sync-ado-titles.ps1 +93 -0
  27. package/integrations/playwright/README.md +68 -0
  28. package/integrations/playwright-azure-reporter/README.md +88 -0
  29. package/package.json +57 -0
  30. package/qa-framework.config.json +87 -0
  31. package/scripts/cli.js +74 -0
  32. package/scripts/generate.js +92 -0
  33. package/scripts/init.js +322 -0
  34. package/scripts/validate.js +184 -0
  35. package/templates/automation-scaffold/.env.example +56 -0
  36. package/templates/automation-scaffold/fixtures/auth.ts +77 -0
  37. package/templates/automation-scaffold/fixtures/test-helpers.ts +85 -0
  38. package/templates/automation-scaffold/global-setup.ts +106 -0
  39. package/templates/automation-scaffold/package.json +24 -0
  40. package/templates/automation-scaffold/playwright.config.ts +85 -0
  41. package/templates/defect-report.md +101 -0
  42. package/templates/execution-report.md +116 -0
  43. package/templates/session-summary.md +73 -0
  44. package/templates/specification/00-inventory.md +81 -0
  45. package/templates/specification/01-business-rules.md +90 -0
  46. package/templates/specification/02-workflows.md +114 -0
  47. package/templates/specification/03-roles-permissions.md +49 -0
  48. package/templates/specification/04-test-data.md +104 -0
  49. package/templates/specification/05-test-scenarios.md +226 -0
  50. package/templates/test-case.md +81 -0
  51. package/templates/test-plan.md +130 -0
@@ -0,0 +1,131 @@
1
+ # docs/comparison-matrix.md
2
+
3
+ **Phase 1 Artifact** — Source: analysis of two embedded QA implementations.
4
+
5
+ > **Note**: This document covers the comparative inventory of Repo A (`redacted-repo-web`) and Repo B (`redacted-repo`). It was the primary input for Phase 2 (classification) and Phase 3 (framework design).
6
+
7
+ ---
8
+
9
+ ## Repository Profiles
10
+
11
+ | Attribute | Repo A (`redacted-repo-web`) | Repo B (`redacted-repo`) |
12
+ |---|---|---|
13
+ | **Application stack** | ASP.NET MVC 5 + Web API 2 + SQL Server | Blazor WebAssembly + .NET + Radzen |
14
+ | **UI component library** | jQuery, Select2, toastr, SweetAlert2, Metronic | Radzen Blazor components |
15
+ | **Authentication** | Form login: RUT + password, `/Seguridad/Login` | Form login: email + password, Blazor identity |
16
+ | **QA environment URL** | `https://redactedURL.com` | `https://redactedURL.com` |
17
+ | **Modules documented** | 1 module (RCL Colación Fría), 7 submodules | 4 modules (Personas, Operación, Sistema, Reportes), 17+ submodules |
18
+ | **Test cases documented** | ~160 TCs across 7 submodules | ~894 TCs across 17+ submodules |
19
+ | **ADO integration level** | Partial (Wiki tools, Plan IDs referenced) | Full (pipeline, reporter, inject-ado-ids.ps1, module-registry.json) |
20
+ | **Playwright suite** | Yes (Sprint 40: 26 P0 tests, 24 pass/2 skip) | Yes (67 automated, 53 pass/2 fail/12 skip) |
21
+ | **Standards folder** | No (`00-standards/` not present) | Yes (naming-conventions, bug-template, TC-template, test-data-guidelines) |
22
+ | **Session retrospectives** | Yes (06-defects used, 2 defects filed) | Extensive (SESSION-SUMMARY-* files at qa root) |
23
+ | **08-azure-integration** | Not present | Fully implemented |
24
+
25
+ ---
26
+
27
+ ## Item-by-Item Comparison Matrix
28
+
29
+ | Item | Repo A | Repo B | Common? | Different? | Generalizable? | Needs Param? | Out of Framework? |
30
+ |---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
31
+ | **8-folder qa/ structure (00–08)** | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
32
+ | **6-file submodule template** | ✅ | ✅ | ✅ | Minor | ✅ | ❌ | ❌ |
33
+ | `00-inventory.md` | ✅ | ✅ | ✅ | ❌ | ✅ | Module code | ❌ |
34
+ | `01-business-rules.md` | ✅ (RN-* IDs) | ✅ (RN-* IDs) | ✅ | ❌ | ✅ | Module code | ❌ |
35
+ | `02-workflows.md` (FL-* IDs) | ✅ | ✅ | ✅ | ❌ | ✅ | Module code | ❌ |
36
+ | `03-roles-permissions.md` | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
37
+ | `04-test-data.md` | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
38
+ | `05-test-scenarios.md` (TC-* IDs) | ✅ | ✅ | ✅ | ❌ | ✅ | Module code | ❌ |
39
+ | **Agent instructions: module analysis** | ✅ (766 lines) | ✅ (834 lines) | ✅ | Minor | ✅ | Project URL | ❌ |
40
+ | **Agent instructions: E2E generation** | ✅ (Sprint-specific) | ❌ | ❌ | Major | ✅ (extract pattern) | Module scope | ❌ |
41
+ | **ADO integration instructions** | ❌ | ✅ (AGENT-ADO-INTEGRATION.md) | ❌ | — | ✅ | Org/Project/IDs | ❌ |
42
+ | **QA Structure Guide** | ✅ (994 lines) | ✅ (1018 lines) | ✅ | Minor wording | ✅ | ❌ | ❌ |
43
+ | **00-standards/ folder** | ❌ | ✅ | ❌ | — | ✅ (adopt from B) | ❌ | ❌ |
44
+ | **Naming conventions doc** | Embedded in structure guide | Standalone doc | Partial | Yes | ✅ | Module codes | ❌ |
45
+ | **Bug report template** | ❌ | ✅ | ❌ | — | ✅ | ❌ | ❌ |
46
+ | **Test case template** | ❌ | ✅ | ❌ | — | ✅ | ❌ | ❌ |
47
+ | **Test data guidelines** | ❌ | ✅ | ❌ | — | ✅ | Env var names | ❌ |
48
+ | **session-summary.md pattern** | ❌ | ✅ (2 examples) | ❌ | — | ✅ | ❌ | ❌ |
49
+ | **Multi-role globalSetup (Playwright)** | ✅ (3 roles, sequential) | ✅ (1 role, single) | ✅ (pattern) | Parameters | ✅ | Role count, selectors | ❌ |
50
+ | **storageState auth reuse** | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
51
+ | **EXEC_IDX / RUN_SLOT date pattern** | ✅ | ❌ (uses Date.now() only) | ❌ | Major | ✅ (adopt from A) | ❌ | ❌ |
52
+ | **3-layer email validation strategy** | ✅ | ❌ | ❌ | — | ✅ (domain-agnostic) | ❌ | Optional |
53
+ | **playwright-azure-reporter** | ❌ | ✅ | ❌ | — | ✅ | planId, suiteId | Optional |
54
+ | **inject-ado-ids.ps1** | ❌ | ✅ | ❌ | — | ✅ | ❌ | Optional |
55
+ | **ADO pipeline (azure-pipeline-qa.yml)** | ❌ | ✅ (367 lines) | ❌ | — | ✅ | Org, project, branch | Optional |
56
+ | **module-registry.json** | ❌ | ✅ | ❌ | — | ✅ | Module paths/IDs | Optional |
57
+ | **ado-ids-mapping.json** | ❌ | ✅ | ❌ | — | ✅ | All IDs | Optional |
58
+ | **Debug artifact policy** | ❌ | ✅ (DEBUG-ARTIFACTS-POLICY.md) | ❌ | — | ✅ | ❌ | ❌ |
59
+ | **UI as source of truth principle** | Implied | ✅ (UI_COMO_FUENTE_DE_VERDAD.md) | ✅ (implicit) | Documentation | ✅ | ❌ | ❌ |
60
+ | **TC origin classification** | ❌ | ✅ (UI-OBSERVADO/PENDIENTE-CODE/BLOQUEADO-PERMISOS) | ❌ | — | ✅ | ❌ | ❌ |
61
+ | **BLAZOR_WASM_AUTOMATION.md** | ❌ | ✅ | ❌ | — | Partial | UI library | Optional |
62
+ | **RADZEN_COMPONENTS_PLAYWRIGHT.md** | ❌ | ✅ | ❌ | — | Partial | UI library | Optional (Blazor adapter) |
63
+ | **DB schema documentation pattern** | ✅ (Mermaid ER) | ❌ | ❌ | — | ✅ (pattern only) | DB naming | Optional |
64
+ | **Correctness criteria** | ✅ (≥2 passes with different EXEC_IDX) | ❌ | ❌ | — | ✅ | ❌ | ❌ |
65
+ | **5-layer debugging methodology** | ✅ | ❌ | ❌ | — | ✅ | ❌ | ❌ |
66
+ | **Page Object Model (POM) pattern** | ✅ (4 POMs) | Inline (no POMs) | Partial | Approach | ✅ (recommend POMs) | ❌ | ❌ |
67
+ | **06-defects/ directory** | ✅ (2 active DEFs used) | ✅ (folder only, no active DEFs) | ✅ | Usage | Conditional | ❌ | Optional |
68
+ | **Seed specs pattern** | ❌ | ✅ (seeds/*.spec.ts excluded from runs) | ❌ | — | ✅ | ❌ | Optional |
69
+ | **automation-feasibility-analysis.md** | ❌ | ✅ | ❌ | — | ✅ | ❌ | ❌ |
70
+ | **Coverage mapping (COVERAGE-MAPPING.md)** | ❌ | ✅ | ❌ | — | ✅ | ADO IDs | Optional |
71
+ | **Project-specific URLs** | ✅ (redacted) | ✅ (redacted) | Both | Different | ❌ (parameterize) | QA_BASE_URL | ❌ |
72
+ | **ADO org / project names** | redacted-organization / redacted-project | redacted-organization / redacted-project | Org same | Project different | ❌ (parameterize) | ADO_ORG, ADO_PROJECT | ❌ |
73
+ | **Login selectors** | `#m_login_signin_submit` (Metronic) | `#email-input`, `#password-input` (Blazor) | Different | Major | ❌ (parameterize) | LOGIN_EMAIL_SELECTOR, etc. | ❌ |
74
+ | **Application-specific form selectors** | `#tbl_redacted`, `#redacted` | `.rz-data-row`, `input.rz-textbox` | None | Major | ❌ | ❌ | Yes (project adapters) |
75
+ | **Test user DNIs / real personal data** | DNIs in test-data.ts, personas.md | None (uses env vars) | None | Major | ❌ | ❌ | Yes (project data) |
76
+ | **Module-specific business data** | redacted | redacted | None | Major | ❌ | ❌ | Yes (project data) |
77
+ | **Sprint references** | redacted sprint | No sprints (session-based) | None | Different | ❌ | ❌ | Yes (project context) |
78
+ | **Developer names** | redacted names | None | None | — | ❌ | ❌ | Yes (project context) |
79
+ | **Internal SOAP email service** | EnvioMailSoapClient | None | None | — | ❌ | ❌ | Yes |
80
+
81
+ ---
82
+
83
+ ## Summary Counts
84
+
85
+ | Category | Count |
86
+ |---|---|
87
+ | Items common to both repos | 14 |
88
+ | Items only in Repo A, generalizable | 8 |
89
+ | Items only in Repo B, generalizable | 16 |
90
+ | Items that need parameterization | 12 |
91
+ | Items that are purely project-specific (out of framework) | 10+ |
92
+ | Optional/plugin items | 9 |
93
+
94
+ ---
95
+
96
+ ## Key Differences That Create Design Tensions
97
+
98
+ ### 1. Login credential type: RUT vs email
99
+
100
+ - Repo A uses RUT (Chilean national ID) as username
101
+ - Repo B uses email as username
102
+ - **Resolution**: Parameterize via `QA_USER_EMAIL` and `QA_USER_PASSWORD` env vars; the login selector set is a project config parameter in `qa-framework.config.json`
103
+
104
+ ### 2. Single-role vs multi-role globalSetup
105
+
106
+ - Repo A: 3 roles (solicitante, encargado, admin) saved sequentially to `.auth/{role}.json`
107
+ - Repo B: 1 role saved to `.auth/session.json`
108
+ - **Resolution**: Scaffold supports both. Config parameter `testUsers[]` drives how many roles are set up. Template defaults to single-role; multi-role is documented as an extension.
109
+
110
+ ### 3. ADO integration depth
111
+
112
+ - Repo A: ADO IDs referenced in comments; no pipeline or reporter
113
+ - Repo B: Full pipeline, playwright-azure-reporter, inject-ado-ids.ps1, module-registry.json
114
+ - **Resolution**: ADO integration is a fully optional plugin (`integrations/ado-powershell/`). The framework core does not require it.
115
+
116
+ ### 4. Standards folder
117
+
118
+ - Repo B has a mature `00-standards/` folder absent from Repo A
119
+ - **Resolution**: Adopt the standards from Repo B as the framework baseline, since they are the more complete and generalized set.
120
+
121
+ ### 5. `06-defects/` directory
122
+
123
+ - Repo A: Used actively (2 bugs filed, test skips reference DEF-IDs)
124
+ - Repo B: Folder exists but no active defect files
125
+ - **Resolution**: See `docs/generalization-decisions.md` §7 for the full evaluation. Decision: **keep as optional, not required by framework core**.
126
+
127
+ ### 6. Test naming convention
128
+
129
+ - Repo A: `[Nx] Title @Pp` (sprint-relative sequential numbering)
130
+ - Repo B: `[ADO_ID] Title` (ADO Work Item ID prefix)
131
+ - **Resolution**: Framework uses `[{ID}] {title} @{priority}` where `{ID}` defaults to a local TC-ID (e.g., TC-MOD-SUB-001) and is replaced with ADO WI ID when ADO integration is enabled.
@@ -0,0 +1,279 @@
1
+ # Phase 6 — Final Report: keber/qa-framework
2
+
3
+ **Date**: 2025-01-15
4
+ **Version analyzed**: 1.0.0
5
+ **Prepared by**: GitHub Copilot (agent output)
6
+
7
+ ---
8
+
9
+ ## 1. Executive Summary
10
+
11
+ Two production QA repositories were analyzed, compared, and generalized into a single,
12
+ decoupled, npm-installable QA framework: `keber/qa-framework`.
13
+
14
+ The framework:
15
+ - Encodes all conventions shared between both source repositories
16
+ - Removes all project-specific hardcoding
17
+ - Is designed for consumption by an IDE agent (GitHub Copilot / similar)
18
+ - Provides a complete opinionated structure: docs, templates, agent instructions, integrations, CLI, and examples
19
+ - Supports both ADO-integrated and ADO-free project configurations
20
+ - Is ready for `npm publish` or local `npm link` installation
21
+
22
+ Both source repositories can migrate to this framework with minimal disruption using the
23
+ procedures documented in `MIGRATION-NOTES.md`.
24
+
25
+ ---
26
+
27
+ ## 2. Source Repository Findings
28
+
29
+ ### Repo A — redacted-repo-web
30
+
31
+ | Category | Finding |
32
+ |----------|---------|
33
+ | Stack | ASP.NET MVC 5 + Web API 2 + SQL Server |
34
+ | Frontend | jQuery + Select2 + toastr + SweetAlert2 + Metronic |
35
+ | Auth | RUT-based login (`#m_login_signin_submit`) |
36
+ | QA maturity | Medium — spec files present, standards missing |
37
+ | Automation | Sprint 40: 26 P0 tests (24 pass, 2 skip via DEF-001/DEF-002) |
38
+ | ADO | Referenced (Plan 21992/Suite 21993) but not reporter-integrated |
39
+ | Modules | 7 submodules documented (~160 TCs across 82 QA files) |
40
+ | Strengths | EXEC_IDX pattern, POM structure, multi-role auth, skip+DEF |
41
+ | Gaps | No `00-standards/`, no `08-azure-integration/`, no session summaries |
42
+
43
+ ### Repo B — redacted-repo
44
+
45
+ | Category | Finding |
46
+ |----------|---------|
47
+ | Stack | Blazor WebAssembly + .NET + Radzen components |
48
+ | Auth | Email-based (`#email-input` / `#password-input`) |
49
+ | QA maturity | High — complete standards folder, ADO fully integrated |
50
+ | Automation | 67 automated TCs (53 pass / 2 fail / 12 skip) |
51
+ | ADO | Full: Plans 22304/22794/22875, WI IDs 22957–23034, bi-directional sync |
52
+ | Modules | 4 modules × 17+ submodules (~894 TCs) |
53
+ | Strengths | `00-standards/`, `08-azure-integration/`, module-registry, ado reporter |
54
+ | Gaps | No EXEC_IDX pattern, no POM convention, no session summaries |
55
+
56
+ ---
57
+
58
+ ## 3. Common Elements (Adopted by Framework)
59
+
60
+ | Element | Source | Decision |
61
+ |---------|--------|----------|
62
+ | 6-file submodule spec pattern | Both | Core framework pattern |
63
+ | Playwright `@playwright/test` | Both | Standard automation library |
64
+ | Priority levels P0–P3 | Both | Universal tagging via `@PX` |
65
+ | `test.skip()` + DEF reference | Repo A | Adopted as standard skip convention |
66
+ | `06-defects/` folder | Repo A | Optional — recommended without ADO |
67
+ | `00-standards/` folder | Repo B | Adopted; templates included |
68
+ | `08-azure-integration/` folder | Repo B | Optional; fully documented |
69
+ | `module-registry.json` | Repo B | Included in ADO integration |
70
+ | ADO reporter integration | Repo B | Optional plugin (peer dep) |
71
+ | Multi-role globalSetup | Repo A | Default single-role; multi-role documented |
72
+ | EXEC_IDX uniqueness pattern | Repo A | Adopted; added to test-helpers.ts |
73
+ | POM page object pattern | Repo A | Recommended; not enforced |
74
+ | ADO inject-ado-ids script | Repo B | Generalized; included in integrations/ |
75
+ | Azure Pipeline QA template | Repo B | Generalized; included in integrations/ |
76
+
77
+ ---
78
+
79
+ ## 4. Project-Specific Elements (Excluded from Framework)
80
+
81
+ | Element | Source | Disposition |
82
+ |---------|--------|-------------|
83
+ | `/Seguridad/Login` route | Repo A | Parameterized via `QA_LOGIN_PATH` env var |
84
+ | `#m_login_signin_submit` selector | Repo A | Parameterized via `QA_LOGIN_SUBMIT_SELECTOR` |
85
+ | RUT-based username field | Repo A | Parameterized via `QA_LOGIN_EMAIL_SELECTOR` |
86
+ | `#email-input` / `#password-input` | Repo B | Parameterized via env vars |
87
+ | ADO Plan IDs (21992, 22304, etc.) | Both | Parameterized via `QA_ADO_PLAN_ID` |
88
+ | ADO WI IDs (22957–23034) | Repo B | Injected per-project via inject-ado-ids.ps1 |
89
+ | Specific module names/selectors | Both | Remain in project-specific spec files |
90
+ | Sprint numbers | Both | Remain in project-specific test plans |
91
+ | Metronic theme selectors | Repo A | Project-specific; documented in Repo A specs |
92
+ | Radzen component patterns | Repo B | Documented in Repo B's BLAZOR guides |
93
+ | `redacted-package` package name | Repo A | Replaced by project-configurable name |
94
+
95
+ ---
96
+
97
+ ## 5. Generalization Decisions Summary
98
+
99
+ Fifteen formal decisions were made and documented in `docs/generalization-decisions.md`:
100
+
101
+ | # | Topic | Decision |
102
+ |---|-------|----------|
103
+ | §1 | Login selectors | Fully parameterized via env vars |
104
+ | §2 | TC naming | Unified `[TC-M-S-NNN]` + inject-ado for ADO |
105
+ | §3 | Spec file structure | 6-file pattern adopted from both repos |
106
+ | §4 | Auth storageState | Single-role default; multi-role documented |
107
+ | §5 | EXEC_IDX | Adopted from Repo A; added to test-helpers.ts |
108
+ | §6 | ADO integration | Optional plugin; fully documented |
109
+ | §7 | `06-defects/` | Optional; ADO-conditional usage documented |
110
+ | §8 | POM pattern | Recommended (Repo A); inline acceptable |
111
+ | §9 | Standards folder | Adopted from Repo B (more complete) |
112
+ | §10 | Session summaries | New addition to both repos' patterns |
113
+ | §11 | Priority levels | P0–P3 universal; `@P0` grep-tag convention |
114
+ | §12 | `08-azure-integration/` | Optional; fully documented scripts |
115
+ | §13 | CI pipeline | Parameterized `azure-pipeline-qa.yml` |
116
+ | §14 | Framework distribution | npm package (`keber/qa-framework`) |
117
+ | §15 | ADO vs local defects | Decision tree documented; both patterns valid |
118
+
119
+ ---
120
+
121
+ ## 6. Final Framework Structure
122
+
123
+ ```
124
+ qa-framework/
125
+ ├── package.json ← npm package, CLI entry
126
+ ├── qa-framework.config.json ← example project config
127
+ ├── README.md
128
+ ├── CHANGELOG.md
129
+ ├── MIGRATION-NOTES.md
130
+
131
+ ├── docs/
132
+ │ ├── architecture.md ← 4-layer component map
133
+ │ ├── comparison-matrix.md ← Phase 1 artifact
134
+ │ ├── generalization-decisions.md ← Phase 2 artifact (15 decisions)
135
+ │ ├── installation.md ← 3 install options
136
+ │ ├── spec-driven-philosophy.md ← Core methodology
137
+ │ ├── folder-structure-guide.md ← Full folder reference
138
+ │ ├── usage-with-agent.md ← Agent prompt patterns
139
+ │ └── final-report.md ← This file
140
+
141
+ ├── agent-instructions/ ← Consumed by Copilot agent
142
+ │ ├── 00-module-analysis.md
143
+ │ ├── 01-spec-generation.md
144
+ │ ├── 02-test-plan-generation.md
145
+ │ ├── 03-test-case-generation.md
146
+ │ ├── 04-automation-generation.md
147
+ │ ├── 05-ado-integration.md
148
+ │ └── 06-maintenance.md
149
+
150
+ ├── templates/
151
+ │ ├── specification/ ← 6-file submodule template set
152
+ │ │ ├── 00-inventory.md
153
+ │ │ ├── 01-business-rules.md
154
+ │ │ ├── 02-workflows.md
155
+ │ │ ├── 03-roles-permissions.md
156
+ │ │ ├── 04-test-data.md
157
+ │ │ └── 05-test-scenarios.md
158
+ │ ├── test-plan.md
159
+ │ ├── test-case.md
160
+ │ ├── execution-report.md
161
+ │ ├── defect-report.md
162
+ │ ├── session-summary.md
163
+ │ └── automation-scaffold/
164
+ │ ├── package.json
165
+ │ ├── playwright.config.ts
166
+ │ ├── global-setup.ts
167
+ │ ├── .env.example
168
+ │ └── fixtures/
169
+ │ ├── auth.ts
170
+ │ └── test-helpers.ts
171
+
172
+ ├── integrations/
173
+ │ ├── playwright/README.md
174
+ │ ├── playwright-azure-reporter/README.md
175
+ │ └── ado-powershell/
176
+ │ ├── README.md
177
+ │ ├── scripts/
178
+ │ │ ├── inject-ado-ids.ps1
179
+ │ │ ├── create-testplan-from-mapping.ps1
180
+ │ │ └── sync-ado-titles.ps1
181
+ │ └── pipelines/
182
+ │ └── azure-pipeline-qa.yml
183
+
184
+ ├── examples/
185
+ │ └── module-example/
186
+ │ ├── README.md
187
+ │ └── suppliers/
188
+ │ ├── 00-inventory.md
189
+ │ └── suppliers-create.spec.ts
190
+
191
+ └── scripts/ ← CLI implementation
192
+ ├── cli.js
193
+ ├── init.js
194
+ ├── generate.js
195
+ └── validate.js
196
+ ```
197
+
198
+ **File count**: 48 files across 20 directories
199
+
200
+ ---
201
+
202
+ ## 7. Risks
203
+
204
+ | Risk | Likelihood | Impact | Mitigation |
205
+ |------|-----------|--------|------------|
206
+ | New project uses different login mechanism not covered by parameterization | Medium | Low | Add custom `QA_LOGIN_PATH`, selectors in `.env`; override `global-setup.ts` |
207
+ | ADO API version changes break ps1 scripts | Low | Medium | Scripts use `api-version=7.1`; update when needed |
208
+ | npm registry not available (intranet) | Medium | Medium | Use Option B (clone) or Option C (manual copy) from installation.md |
209
+ | Agent hallucinates selectors not in inventory | Medium | High | Always run agents with live browser access; validate every selector before commit |
210
+ | Framework version conflicts between projects | Low | Low | Each project pins its own version in `package.json` |
211
+
212
+ ---
213
+
214
+ ## 8. Assumptions
215
+
216
+ 1. Projects use Playwright `>=1.40.0` for E2E automation.
217
+ 2. CI environment supports Node.js `>=18`.
218
+ 3. ADO integration requires a PAT with `Work Items R/W` + `Test Management R/W`.
219
+ 4. QA engineers have read access to the application under test.
220
+ 5. Spec files are written by agents but reviewed and committed by humans.
221
+ 6. Login forms are HTTP/HTTPS web forms accessible from the Playwright browser context.
222
+
223
+ ---
224
+
225
+ ## 9. Open Items
226
+
227
+ | Item | Priority | Owner | Notes |
228
+ |------|----------|-------|-------|
229
+ | Add `examples/module-example/suppliers/01-business-rules.md` through `05-test-scenarios.md` | Low | QA team | Example shows inventory + spec only; add full 6-file set |
230
+ | Publish to npm registry | Medium | DevOps | Requires `npm publish` with org scope `keber` |
231
+ | Add `--watch` mode to `validate.js` | Low | Framework maintainer | Useful in local dev |
232
+ | Radzen/Blazor guide | Medium | QA team | Extract from Repo B's `BLAZOR_WASM_AUTOMATION.md` into `docs/` |
233
+ | Metronic/jQuery guide | Low | QA team | Extract from Repo A patterns into `docs/` |
234
+ | Jest unit tests for CLI scripts | Low | Framework maintainer | Add `scripts/__tests__/` |
235
+
236
+ ---
237
+
238
+ ## 10. Recommended Next Steps
239
+
240
+ ### Immediate (Week 1)
241
+
242
+ 1. **Install the package** in both source projects using `npm link` for local testing:
243
+ ```bash
244
+ cd c:\Users\keber.flores\source\repos\qa-framework
245
+ npm link
246
+ cd c:\Users\keber.flores\source\repos\redacted-repo-web\qa\07-automation
247
+ npm link keber/qa-framework
248
+ ```
249
+
250
+ 2. **Run `qa-framework validate`** in Repo A:
251
+ ```bash
252
+ npx keber/qa-framework validate
253
+ ```
254
+ Address any reported gaps (missing `00-standards/`, etc.)
255
+
256
+ 3. **Add `copilot-instructions.md`** to both repos pointing to agent instructions:
257
+ ```markdown
258
+ When generating QA artifacts, follow:
259
+ node_modules/keber/qa-framework/agent-instructions/00-module-analysis.md
260
+ ```
261
+
262
+ ### Short-term (Month 1)
263
+
264
+ 4. **Migrate Repo A** to the full framework structure using `MIGRATION-NOTES.md §Pattern A`
265
+ 5. **Migrate Repo B** using `MIGRATION-NOTES.md §Pattern B`
266
+ 6. **Add the 5 remaining example spec files** to `examples/module-example/suppliers/`
267
+ 7. **Publish to internal npm registry** (or GitHub Packages)
268
+
269
+ ### Medium-term (Quarter 1)
270
+
271
+ 8. **Add Blazor/Radzen guide** to `docs/` (extracted from Repo B)
272
+ 9. **Add Metronic/MVC guide** to `docs/` (extracted from Repo A)
273
+ 10. **Set up CI** using `integrations/ado-powershell/pipelines/azure-pipeline-qa.yml`
274
+ 11. **Version 1.1.0**: Add `--watch` validation mode and `generate spec` interactive prompts
275
+
276
+ ---
277
+
278
+ *This report was generated by GitHub Copilot as the Phase 6 deliverable of the
279
+ `keber/qa-framework` analysis and implementation project.*