@torus-engineering/tas-kit 1.13.0 → 2.1.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/.tas/_platform/claude-code/settings.json +58 -46
- package/.tas/_platform/hooks/code-quality.js +127 -127
- package/.tas/_platform/hooks/session-end.js +111 -111
- package/.tas/agents/architect.md +53 -53
- package/.tas/agents/aws-reviewer.md +71 -71
- package/.tas/agents/build-resolver.md +89 -59
- package/.tas/agents/code-explorer.md +63 -63
- package/.tas/agents/csharp-reviewer.md +62 -62
- package/.tas/agents/database-reviewer.md +73 -73
- package/.tas/agents/doc-updater.md +68 -66
- package/.tas/agents/python-reviewer.md +67 -67
- package/.tas/agents/security-reviewer.md +79 -79
- package/.tas/agents/software-engineer.md +53 -0
- package/.tas/agents/typescript-reviewer.md +65 -65
- package/.tas/commands/ado-create.md +33 -28
- package/.tas/commands/ado-delete.md +26 -22
- package/.tas/commands/ado-get.md +24 -20
- package/.tas/commands/ado-status.md +22 -18
- package/.tas/commands/ado-update.md +31 -27
- package/.tas/commands/tas-adr.md +37 -33
- package/.tas/commands/tas-apitest-plan.md +177 -173
- package/.tas/commands/tas-apitest.md +147 -143
- package/.tas/commands/tas-brainstorm.md +23 -19
- package/.tas/commands/tas-brd.md +50 -0
- package/.tas/commands/tas-bug.md +127 -113
- package/.tas/commands/tas-checklist.md +180 -0
- package/.tas/commands/tas-debug.md +103 -0
- package/.tas/commands/tas-design.md +41 -37
- package/.tas/commands/tas-dev.md +225 -125
- package/.tas/commands/tas-e2e-mobile.md +146 -155
- package/.tas/commands/tas-e2e-web.md +150 -163
- package/.tas/commands/tas-e2e.md +289 -102
- package/.tas/commands/tas-feature.md +181 -47
- package/.tas/commands/tas-fix.md +72 -51
- package/.tas/commands/tas-functest-mobile.md +138 -144
- package/.tas/commands/tas-functest-web.md +176 -192
- package/.tas/commands/tas-functest.md +225 -76
- package/.tas/commands/tas-init.md +22 -17
- package/.tas/commands/tas-master-plan.md +300 -0
- package/.tas/commands/tas-orchestrate.md +159 -0
- package/.tas/commands/tas-plan.md +152 -117
- package/.tas/commands/tas-prd.md +57 -37
- package/.tas/commands/tas-review-pr.md +174 -0
- package/.tas/commands/tas-review.md +115 -113
- package/.tas/commands/tas-sad.md +47 -43
- package/.tas/commands/tas-security.md +91 -87
- package/.tas/commands/tas-spec.md +54 -50
- package/.tas/commands/tas-status.md +25 -16
- package/.tas/project-status-example.yaml +3 -1
- package/.tas/rules/ado-integration.md +67 -65
- package/.tas/rules/common/api-design.md +517 -517
- package/.tas/rules/common/build-debug-loop.md +233 -0
- package/.tas/rules/common/code-review.md +4 -0
- package/.tas/rules/common/feature-done.md +42 -0
- package/.tas/rules/common/post-implementation-review.md +4 -0
- package/.tas/rules/common/project-status.md +33 -16
- package/.tas/rules/common/sad-impact.md +81 -0
- package/.tas/rules/common/tdd.md +104 -89
- package/.tas/rules/csharp/api-testing.md +2 -2
- package/.tas/rules/csharp/torus-core-framework.md +128 -0
- package/.tas/tas-example.yaml +9 -32
- package/.tas/templates/AGENTS.md +13 -0
- package/.tas/templates/API-Test-Spec.md +5 -4
- package/.tas/templates/BRD.md +133 -0
- package/.tas/templates/Bug.md +15 -0
- package/.tas/templates/E2E-Execution-Report.md +8 -8
- package/.tas/templates/E2E-Mobile-Spec.md +6 -8
- package/.tas/templates/E2E-Report.md +2 -2
- package/.tas/templates/E2E-Scenario.md +22 -22
- package/.tas/templates/E2E-Test-Spec.md +274 -0
- package/.tas/templates/E2E-Web-Spec.md +4 -4
- package/.tas/templates/Feature-Technical-Part.md +69 -0
- package/.tas/templates/Feature-Technical-Stack.md +74 -0
- package/.tas/templates/Feature-Technical.md +329 -0
- package/.tas/templates/Feature.md +50 -26
- package/.tas/templates/Func-Test-Script.md +29 -56
- package/.tas/templates/Func-Test-Spec.md +144 -142
- package/.tas/templates/PRD.md +173 -142
- package/.tas/templates/TestChecklist.md +96 -0
- package/.tas/templates/torus-dotnet-bootstrap.md +223 -0
- package/.tas/tools/tas-ado-readme.md +24 -27
- package/.tas/tools/tas-ado.py +328 -25
- package/.tas/tools/tas-github.py +339 -0
- package/README.md +142 -57
- package/bin/cli.js +90 -90
- package/lib/adapters/antigravity.js +131 -131
- package/lib/adapters/claude-code.js +71 -35
- package/lib/adapters/codex.js +157 -157
- package/lib/adapters/cursor.js +80 -80
- package/lib/adapters/index.js +20 -20
- package/lib/adapters/utils.js +81 -81
- package/lib/deleted-files.json +7 -0
- package/lib/install.js +546 -543
- package/package.json +2 -2
- package/.tas/README.md +0 -334
- package/.tas/commands/tas-epic.md +0 -35
- package/.tas/commands/tas-story.md +0 -91
- package/.tas/rules/common/story-done.md +0 -30
- package/.tas/templates/Epic.md +0 -46
- package/.tas/templates/Story.md +0 -90
|
@@ -1,187 +1,189 @@
|
|
|
1
1
|
---
|
|
2
|
-
created_date:
|
|
3
|
-
updated_date:
|
|
4
|
-
executor:
|
|
2
|
+
created_date: YYYY-MM-DD
|
|
3
|
+
updated_date: YYYY-MM-DD
|
|
4
|
+
executor: ""
|
|
5
|
+
reviewer: ""
|
|
5
6
|
status: Draft
|
|
6
|
-
story_id:
|
|
7
|
-
feature_id:
|
|
8
|
-
epic_id:
|
|
9
|
-
platform:
|
|
7
|
+
story_id: ""
|
|
8
|
+
feature_id: ""
|
|
9
|
+
epic_id: ""
|
|
10
|
+
platform: web
|
|
11
|
+
tags: []
|
|
12
|
+
locator_ref: /docs/NAMING_CONVENTION.md
|
|
13
|
+
ver: 1.0
|
|
10
14
|
---
|
|
11
15
|
|
|
12
16
|
# Functional Test Specification: {Story Name}
|
|
13
17
|
|
|
14
|
-
**Epic**: [{Epic_ID}]
|
|
15
|
-
**
|
|
16
|
-
**Story**: [{Story_ID}]({STORY_LINK})
|
|
17
|
-
**Platform**: {{platform}}
|
|
18
|
-
**Author**: @[executor]
|
|
19
|
-
**Created**: [created_date]
|
|
20
|
-
**Status**: [status] (Draft | Ready | Implemented | Verified)
|
|
18
|
+
**Epic**: [{Epic_ID}] | **Feature**: [{Feature_ID}] | **Story**: [{Story_ID}]
|
|
19
|
+
**Author**: @{executor} | **Reviewer**: @{reviewer} | **Status**: {status}
|
|
21
20
|
|
|
22
21
|
---
|
|
23
22
|
|
|
24
|
-
##
|
|
23
|
+
## 1. Story Context
|
|
25
24
|
|
|
26
|
-
>
|
|
25
|
+
> 📌 Provide a brief summary of the User Story being tested. This helps QC understand **why** these test cases exist.
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
| **Field** | **Detail** |
|
|
28
|
+
| ----------------- | --------------------------------- |
|
|
29
|
+
| **Story Summary** | As a [user], I want to [action] so that [benefit] |
|
|
30
|
+
| **Scope** | What IS covered in this spec |
|
|
31
|
+
| **Out of Scope** | What is NOT covered |
|
|
32
|
+
| **Dependencies** | Upstream stories / APIs / mocks |
|
|
33
|
+
| **Test Strategy** | Manual → Automation |
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
AL_E002_F002_S001_FT_001_H - Functional Test Happy path
|
|
36
|
-
AL_E002_F002_S001_FT_002_N - Functional Test Negative
|
|
37
|
-
AL_E002_F002_S001_FT_003_E - Functional Test Edge case
|
|
38
|
-
```
|
|
35
|
+
---
|
|
39
36
|
|
|
40
|
-
|
|
37
|
+
## 2. Environment & Data Configuration
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
| N | Negative | Negative test - failure scenario |
|
|
46
|
-
| E | Edge | Edge case - boundary conditions |
|
|
47
|
-
| S | Security | Security test |
|
|
48
|
-
| P | Performance | Performance test |
|
|
39
|
+
> 🔗 **NFR Source:** This section is derived from the **Product Requirements Document (PRD) — Non-Functional Requirements** section.
|
|
40
|
+
> All platform targets, environment tiers, and access constraints defined here must align with the PRD NFR.
|
|
41
|
+
> Reference: [PRD – Non-Functional Requirements](/docs/PRD.md#non-functional-requirements)
|
|
49
42
|
|
|
50
|
-
|
|
43
|
+
### 2.1 Execution Environment Matrix
|
|
51
44
|
|
|
52
|
-
|
|
45
|
+
> 📌 *Derived from PRD NFR — Platform & Compatibility requirements. Do not add platforms not listed in the PRD.*
|
|
53
46
|
|
|
54
|
-
|
|
47
|
+
| **Platform / View** | **OS Version** | **Browser / Viewport** | **PRD NFR Ref** |
|
|
48
|
+
| ------------------- | -------------- | ---------------------- | ------------------------- |
|
|
49
|
+
| Desktop Web | Windows 11 | Chrome latest / 1440px | `NFR-COMPAT-01` |
|
|
50
|
+
| Desktop Web | macOS 14 | Safari latest / 1440px | `NFR-COMPAT-02` |
|
|
51
|
+
| Mobile Web | iOS 17 | Safari / 390px | `NFR-COMPAT-03` |
|
|
52
|
+
| Mobile Web | Android 14 | Chrome / 390px | `NFR-COMPAT-04` |
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
**Target Users**: {Clinical / Organic / Both}
|
|
54
|
+
### 2.2 JSON Test Data Configuration
|
|
58
55
|
|
|
59
|
-
|
|
56
|
+
> 📌 *Environment tiers derived from PRD NFR — Deployment & Data Isolation requirements.*
|
|
60
57
|
|
|
61
|
-
|
|
58
|
+
| **Environment** | **JSON Data File ID / Path** | **PRD NFR Ref** | **Description** |
|
|
59
|
+
| --------------- | -------------------------------- | ----------------- | ------------------------------------------ |
|
|
60
|
+
| **TEST** | `data_test_S{STORY_ID}.json` | `NFR-ENV-01` | Internal test data (mock / seeded DB) |
|
|
61
|
+
| **STAG** | `data_stag_S{STORY_ID}.json` | `NFR-ENV-02` | Integration data for UAT |
|
|
62
|
+
| **PROD** | `data_prod_S{STORY_ID}.json` | `NFR-ENV-03` | Production data — Secret, read-only access |
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
> When AC changes, grep by AC-ID to know which FTs need update.
|
|
64
|
+
### 2.3 Test Account & Role Matrix
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|-------|----------------------------------|------------|---------------|----------|----------|--------|
|
|
68
|
-
| AC-1 | {Given...When...Then...} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_001_H | {Happy path description} | Happy | P0 | Draft |
|
|
69
|
-
| AC-1 | {Given...When...Then...} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_002_N | {Negative scenario} | Negative | P0 | Draft |
|
|
70
|
-
| AC-1 | {Given...When...Then...} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_003_E | {Edge case} | Edge | P1 | Draft |
|
|
71
|
-
| AC-2 | {Given...When...Then...} | {PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_004_H | {Happy path description} | Happy | P0 | Draft |
|
|
66
|
+
> 📌 *Derived from PRD NFR — Security & Access Control requirements.*
|
|
72
67
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
| **Role** | **Username** | **Access Level** | **PRD NFR Ref** | **Notes** | **JSON Data Source** |
|
|
69
|
+
| ------------- | ------------------- | ---------------- | ----------------- | ------------------ | ------------------- |
|
|
70
|
+
| Admin | `{admin_username}` | Full | `NFR-SEC-01` | | `data_{env}_S{STORY_ID}.json#admin` |
|
|
71
|
+
| Standard User | `{standard_username}` | Limited | `NFR-SEC-02` | | `data_{env}_S{STORY_ID}.json#standard_user` |
|
|
72
|
+
| Guest | N/A | None / Public | `NFR-SEC-03` | | `data_{env}_S{STORY_ID}.json#guest` |
|
|
77
73
|
|
|
78
74
|
---
|
|
79
75
|
|
|
80
|
-
##
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- {Credentials: from .env via process.env}
|
|
90
|
-
- **Steps**:
|
|
91
|
-
1. **Given** {initial state}
|
|
92
|
-
2. **When** {user action}
|
|
93
|
-
3. **Then** {expected outcome}
|
|
94
|
-
- **Expected Result**: {Detailed expected behavior}
|
|
95
|
-
|
|
96
|
-
### FT_002_N: {Title - Negative Scenario}
|
|
97
|
-
- **AC Reference**: AC-1
|
|
98
|
-
- **Preconditions**:
|
|
99
|
-
- {List preconditions}
|
|
100
|
-
- **Test Data**:
|
|
101
|
-
- {Invalid/error data}
|
|
102
|
-
- **Steps**:
|
|
103
|
-
1. **Given** {initial state}
|
|
104
|
-
2. **When** {user performs invalid action}
|
|
105
|
-
3. **Then** {expected error handling}
|
|
106
|
-
- **Expected Result**: {Error message, recovery option}
|
|
107
|
-
|
|
108
|
-
### FT_003_E: {Title - Edge Case}
|
|
109
|
-
- **AC Reference**: AC-1
|
|
110
|
-
- **Preconditions**:
|
|
111
|
-
- {Boundary condition setup}
|
|
112
|
-
- **Test Data**:
|
|
113
|
-
- {Boundary values}
|
|
114
|
-
- **Steps**:
|
|
115
|
-
1. **Given** {boundary state}
|
|
116
|
-
2. **When** {boundary action}
|
|
117
|
-
3. **Then** {graceful handling}
|
|
118
|
-
- **Expected Result**: {Handled gracefully without crash}
|
|
76
|
+
## 3. Acceptance Criteria Summary
|
|
77
|
+
|
|
78
|
+
> 🗒️ List each AC from the User Story. Each AC maps directly to one or more test cases below.
|
|
79
|
+
|
|
80
|
+
| **AC ID** | **Acceptance Criteria (Given / When / Then)** | **Priority** |
|
|
81
|
+
| -------------- | ------------------------------------------------------------------------ | ------------ |
|
|
82
|
+
| `{USName}-AC01` | Given … / When … / Then … | P1 – Must |
|
|
83
|
+
| `{USName}-AC02` | Given … / When … / Then … | P2 – Should |
|
|
84
|
+
| `{USName}-AC03` | Given … / When … / Then … | P3 – Nice |
|
|
119
85
|
|
|
120
86
|
---
|
|
121
87
|
|
|
122
|
-
## Test
|
|
88
|
+
## 4. Test Cases
|
|
89
|
+
|
|
90
|
+
> **🎯 Workflow Execution Guide (For QC Team):**
|
|
91
|
+
>
|
|
92
|
+
> * **Step 1 (Manual Testing):** Human QC reads `Logical Steps (Human)` and executes against the build. Fill in `Test Result` after each run.
|
|
93
|
+
> * **Step 2 (Automation Evaluation):** Set `Autoable` to `Yes` when UI/logic is stable and the TC is feasible to automate. Leave as `None` if this TC must always remain manual.
|
|
94
|
+
> * **Step 3 (Agent Handoff):** Use the *QC Agent UI Mapping* command. Agent scans TCs where `Autoable = Yes` and fills in `Execution Locators (Agent)`.
|
|
95
|
+
>
|
|
96
|
+
> **TC ID Format:** `[Epic_ID]-[Feat_ID]-[Story_ID]-[AC_ID]-[###]`
|
|
97
|
+
> **Test Types:** `Happy Path` | `Negative` | `Edge Case` | `Boundary` | `Permission` | `UI/UX` | `Performance` | `Security`
|
|
98
|
+
> **Test Result values:** `—` *(not run)* | `✅ Pass` | `❌ Fail` | `⛔ Blocked` | `N/A`
|
|
99
|
+
> **Priority values:** `🔴 High – P0` | `🟡 Med – P1` | `🟢 Low – P2`
|
|
100
|
+
> **Autoable values:**
|
|
101
|
+
> * `None` — TC is **human-only** (exploratory, visual, subjective). `Test Data` is described **inline** in this column and in `Logical Steps`. `Execution Locators` stays blank permanently.
|
|
102
|
+
> * `Yes` — TC **should be converted** to automation script. `Test Data` references a JSON file: `data_{env}_S{STORY_ID}.json#case_###`. Agent will fill `Execution Locators`.
|
|
103
|
+
|
|
104
|
+
### 4.1 Happy Path Test Cases
|
|
105
|
+
|
|
106
|
+
| **TC ID** | **Test Type** | **Description** | **Pre-Condition** | **Logical Steps (Human)** | **Test Data** | **Execution Locators (Agent)** | **Expected Result** | **Test Result** | **Priority** | **Autoable** | **Traceability** |
|
|
107
|
+
| --------- | ------------- | --------------- | ----------------- | ------------------------- | ------------- | ------------------------------ | ------------------- | --------------- | ------------ | ------------ | ---------------- |
|
|
108
|
+
| `E01-F01-US01-AC01-001` | Happy Path | [Automatable — standard flow] | 1. User is logged in<br>2. Page X is loaded | 1. Navigate to …<br>2. Click …<br>3. Verify … | `data_test_S{STORY_ID}.json#case_001` | *Leave blank — Agent fills* | 1. Element Y is visible<br>2. Toast shows "…"<br>3. DB state updated | — | `🔴 High – P0` | `Yes` | `{USName}-AC01` |
|
|
109
|
+
| `E01-F01-US01-AC01-002` | Happy Path | [Human only — visual / exploratory check] | 1. User is logged in | 1. Open page<br>2. Visually verify layout matches Figma design<br>3. Data used: any valid account | `Any valid account — entered manually by QC at runtime` | — | Layout matches Figma spec | — | `🟡 Med – P1` | `None` | `{USName}-AC01` |
|
|
110
|
+
|
|
111
|
+
### 4.2 Negative / Error Test Cases
|
|
112
|
+
|
|
113
|
+
| **TC ID** | **Test Type** | **Description** | **Pre-Condition** | **Logical Steps (Human)** | **Test Data** | **Execution Locators (Agent)** | **Expected Result** | **Test Result** | **Priority** | **Autoable** | **Traceability** |
|
|
114
|
+
| --------- | ------------- | --------------- | ----------------- | ------------------------- | ------------- | ------------------------------ | ------------------- | --------------- | ------------ | ------------ | ---------------- |
|
|
115
|
+
| `E01-F01-US01-AC01-003` | Negative | [Automatable — invalid input] | 1. User is logged in | 1. Navigate to …<br>2. Submit empty form | `data_test_S{STORY_ID}.json#case_002` | *Leave blank — Agent fills* | 1. Inline error message shown<br>2. Form not submitted | — | `🟡 Med – P1` | `Yes` | `{USName}-AC01` |
|
|
116
|
+
| `E01-F01-US01-AC01-004` | Negative | [Human only — subjective error UX review] | 1. User is logged in | 1. Trigger error state<br>2. Assess error message clarity and tone<br>3. Data used: any invalid input as judged by QC | `Any invalid input — described and entered by QC during run` | — | Error message is clear, actionable, and matches UX copy spec | — | `🟢 Low – P2` | `None` | `{USName}-AC01` |
|
|
117
|
+
|
|
118
|
+
### 4.3 Edge Case / Boundary Test Cases
|
|
123
119
|
|
|
124
|
-
|
|
|
125
|
-
|
|
126
|
-
|
|
|
127
|
-
| User Password | (from .env) | process.env.TEST_USER_PASSWORD | Yes | NEVER hardcode |
|
|
128
|
-
| {Entity} ID | {value} | test-data.{env}.json | Yes | Pre-seeded |
|
|
129
|
-
| {Static Data} | {value} | Hardcoded in test | No | Same all envs |
|
|
120
|
+
| **TC ID** | **Test Type** | **Description** | **Pre-Condition** | **Logical Steps (Human)** | **Test Data** | **Execution Locators (Agent)** | **Expected Result** | **Test Result** | **Priority** | **Autoable** | **Traceability** |
|
|
121
|
+
| --------- | ------------- | --------------- | ----------------- | ------------------------- | ------------- | ------------------------------ | ------------------- | --------------- | ------------ | ------------ | ---------------- |
|
|
122
|
+
| `E01-F01-US01-AC02-001` | Edge Case / Boundary | [Automatable — max length input] | — | 1. Enter 256-char string<br>2. Submit | `data_test_S{STORY_ID}.json#case_003` | *Leave blank — Agent fills* | Field truncated or error shown | — | `🟢 Low – P2` | `Yes` | `{USName}-AC02` |
|
|
130
123
|
|
|
131
|
-
###
|
|
132
|
-
- **Dev**: `apps/{platform}/e2e/data/test-data.dev.json`
|
|
133
|
-
- **Staging**: `apps/{platform}/e2e/data/test-data.staging.json`
|
|
134
|
-
- **Prod**: `apps/{platform}/e2e/data/test-data.prod.json` (smoke tests only)
|
|
124
|
+
### 4.4 Permission / Role-Based Test Cases
|
|
135
125
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
>
|
|
126
|
+
| **TC ID** | **Test Type** | **Description** | **Pre-Condition** | **Logical Steps (Human)** | **Test Data** | **Execution Locators (Agent)** | **Expected Result** | **Test Result** | **Priority** | **Autoable** | **Traceability** |
|
|
127
|
+
| --------- | ------------- | --------------- | ----------------- | ------------------------- | ------------- | ------------------------------ | ------------------- | --------------------------- | ------------ | ------------ | ---------------- |
|
|
128
|
+
| `E01-F01-US01-AC03-001` | Permission | [Human only — access role verified manually] | User is Guest | 1. Log in as Guest (see Role Matrix §2.3 for credentials)<br>2. Navigate to /protected<br>3. Observe redirect<br>4. Data used: Guest credentials from Role Matrix | `Guest credentials — refer to Role Matrix §2.3; entered manually by QC` | — | Redirected to login page with 401 | — | `🔴 High – P0` | `None` | `{USName}-AC03` |
|
|
129
|
+
|
|
130
|
+
### 4.5 UI / UX & Responsive Test Cases
|
|
131
|
+
|
|
132
|
+
| **TC ID** | **Test Type** | **Description** | **Pre-Condition** | **Logical Steps (Human)** | **Test Data** | **Execution Locators (Agent)** | **Expected Result** | **Test Result** | **Priority** | **Autoable** | **Traceability** |
|
|
133
|
+
| --------- | ------------- | --------------- | ----------------- | ------------------------- | ------------- | ------------------------------ | ------------------- | --------------- | ------------ | ------------ | ---------------- |
|
|
134
|
+
| `E01-F01-US01-AC01-005` | UI/UX | [Human only — responsive layout check] | Mobile 390px viewport | 1. Open page on 390px device or emulator<br>2. Scroll through full page<br>3. Check element stacking and tap targets<br>4. No specific input data required | `No data required — visual inspection only` | — | No horizontal scroll; buttons full-width; tap targets ≥ 44px | — | `🟢 Low – P2` | `None` | `{USName}-AC01` |
|
|
139
135
|
|
|
140
136
|
---
|
|
141
137
|
|
|
142
|
-
##
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
{{#if platform === "web"}}
|
|
153
|
-
### Web (Playwright)
|
|
154
|
-
- **Script Location**: `apps/web/e2e/features/{epic-slug}/{feature-slug}/{story-slug}.func.spec.ts`
|
|
155
|
-
- **Selectors**: Use `data-testid` attributes
|
|
156
|
-
- **Data Loader**: Import from `apps/web/e2e/helpers/data-loader.ts`
|
|
157
|
-
- **Test Helpers**: Import from `apps/web/e2e/helpers/test-utils.ts`
|
|
158
|
-
- **Run Command**: `yarn functest:web:{feature-slug}`
|
|
159
|
-
- **Viewports**: Test mobile (375px), tablet (768px), desktop (1280px)
|
|
160
|
-
{{/if}}
|
|
138
|
+
## 5. Non-Functional Test Notes
|
|
139
|
+
|
|
140
|
+
> ⚡ NFT items are tracked here for visibility. Full NFR specs live in [TEST_ENVIRONMENT_MATRIX.md](/docs/TEST_ENVIRONMENT_MATRIX.md).
|
|
141
|
+
|
|
142
|
+
| **NFT Area** | **Criteria** | **Tool / Method** | **Linked TC or Epic** |
|
|
143
|
+
| --------------- | ----------------------------------------------------- | --------------------- | --------------------- |
|
|
144
|
+
| Performance | Page load ≤ 2s on 4G / LCP ≤ 2.5s | Lighthouse / k6 | |
|
|
145
|
+
| Accessibility | WCAG 2.1 AA – keyboard nav, ARIA labels, contrast | axe / manual | |
|
|
146
|
+
| Security | No PII in URL params; XSS inputs sanitized | Manual / OWASP ZAP | |
|
|
147
|
+
| Localization | All strings from i18n keys; no hard-coded text | Manual review | |
|
|
161
148
|
|
|
162
149
|
---
|
|
163
150
|
|
|
164
|
-
##
|
|
151
|
+
## 6. Requirement Coverage Matrix
|
|
152
|
+
|
|
153
|
+
| **Requirement ID** | **Acceptance Criteria Summary** | **Covered by TC IDs** | **Status** |
|
|
154
|
+
| ------------------ | ------------------------------- | ------------------------------------------------------------- | ----------- |
|
|
155
|
+
| `{USName}-AC01` | | `E01-F01-US01-AC01-001`, `E01-F01-US01-AC01-002`, `…` | Not Started |
|
|
156
|
+
| `{USName}-AC02` | | `E01-F01-US01-AC02-001` | Not Started |
|
|
157
|
+
| `{USName}-AC03` | | `E01-F01-US01-AC03-001` | Not Started |
|
|
158
|
+
|
|
159
|
+
**Coverage Summary:**
|
|
165
160
|
|
|
166
|
-
|
|
161
|
+
| **Total ACs** | **Covered** | **Not Covered** | **Coverage %** |
|
|
162
|
+
| ------------- | ----------- | --------------- | -------------- |
|
|
163
|
+
| 0 | 0 | 0 | 0% |
|
|
167
164
|
|
|
168
|
-
|
|
169
|
-
1. Note the AC-ID that changed (e.g., AC-1)
|
|
170
|
-
2. Search this document's "AC to Functional Test Mapping" table
|
|
171
|
-
3. All FT Test IDs in rows matching that AC-ID need review
|
|
172
|
-
4. Find corresponding script files using the FT Test ID as describe block name
|
|
165
|
+
**Test Run Summary:**
|
|
173
166
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
// AC Reference: AC-1
|
|
178
|
-
describe('{PROJECT}_E{EPIC}_F{FEATURE}_S{STORY}_FT_001_H', () => { ... });
|
|
179
|
-
```
|
|
167
|
+
| **Total TCs** | **✅ Pass** | **❌ Fail** | **⛔ Blocked** | **N/A** | **— Not Run** | **Pass Rate** |
|
|
168
|
+
| ------------- | ---------- | ---------- | ------------- | ------- | ------------- | ------------- |
|
|
169
|
+
| 0 | 0 | 0 | 0 | 0 | 0 | 0% |
|
|
180
170
|
|
|
181
171
|
---
|
|
182
172
|
|
|
183
|
-
##
|
|
173
|
+
## 7. Risk & Assumption Log
|
|
174
|
+
|
|
175
|
+
| **ID** | **Type** | **Description** | **Impact** | **Mitigation** |
|
|
176
|
+
| ------- | -------------- | ------------------------------------------- | ------------ | -------------------------------- |
|
|
177
|
+
| `RSK-01` | Risk | API not stable during test window | High | Use mock server fallback |
|
|
178
|
+
| `ASM-01` | Assumption | Feature flag is ON in TEST environment | Medium | Confirm with dev before run |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 8. Change log
|
|
183
|
+
|
|
184
|
+
> **Note:** Changes are summarized daily (Daily Summary format).
|
|
184
185
|
|
|
185
|
-
| Date | Changes
|
|
186
|
-
|
|
187
|
-
|
|
|
186
|
+
| **Date** | **Ver** | **Daily Summary of Changes** | **Author** |
|
|
187
|
+
| ----------------- | ------- | ------------------------------------------------------------------------- | ------------- |
|
|
188
|
+
| {created_date} | 1.0 | Initial functional test spec created | @{executor} |
|
|
189
|
+
| {updated_date} | 1.0 | Initial functional test spec created | @{executor} |
|