---
# Auto-extracted from Func-Test.md + tas.yaml (read-only, prevent drift)
project: ""              # from tas.yaml
feature_name: ""         # from Func-Test.md
platform: ""             # web | app | all (from Func-Test.md frontmatter)

# Execution context (manual input)
execution_mode: ""       # Manual | Automation (see GLOSSARY)
test_framework: ""       # Playwright | Detox | Manual (which framework/tool)
generated_by: ""         # git user or CI trigger (e.g., /tas-functest-web)
environment: "staging"   # local | dev | staging | prod
ci_run_id: ""            # CI job ID (if automation)
status: Draft            # Draft → In Progress → Completed → Approved

# Autonomous execution tracking
autonomous_run: false
autonomous_run_date:
---

<!-- PROTOCOL: .tas/rules/common/test-report-protocol.md
  AI: Read that file FIRST — it defines execution status, metric formulas, defect triage, and merge gate algorithm.
  This template does NOT redefine those rules.

  USAGE:
  § 1: Executive Summary — fill AFTER test execution (metrics, coverage)
  § 2: Test Results — fill DURING execution (TC outcomes, failures, defects)
  § 3: Merge Gate Decision — auto-calc from § 1–2 data (algorithm → protocol § 4)
  § 4: Sign-Off — fill AT END (PE + SE approval)

  SOURCES OF TRUTH (this report READS these — never redefine them here):
  - TC ID / Priority / Category / Depends On → Func-Test.md § 4 (TC ID F{NNN}_AC{N}_{CAT}_{NNN} carries category in {CAT})
  - AC ID / AC Description / flow priority → TestChecklist.md § 2.1
  - Category meaning (BL/VAL/SEC/GUI/EXC/INT) + ISTQB technique → test-design.md "TP Category → Test Approach Mapping (ISTQB)" (CANONICAL)
  - Execution status / metric formulas / severity scale → protocol above
  - Merge gate → § 3 (§ 3.1 escalation → § 3.2 release gate → § 3.3 risk)
-->

# FeatureTestReport: {Feature Name}

**Feature:** `{Feature_ID}` | **Version:** {v} | **Date:** {YYYY-MM-DD} | **Time:** {HH:MM UTC}

---

## § 1.1 Test Report Status — Metrics & Execution Context

| Metric | Value | Status |
|--------|-------|--------|
| **Total Test Cases** | N | — |
| **Passed** | N | ✅ |
| **Failed** | N | ❌ |
| **Skipped** | N | ⏭️ |
| **Blocked** | N | ⛔ |
| **Hold** | N | 🔴 |
| **Test Coverage Rate** | N% | 🟢/🟡/🔴 |
| **Overall Pass Rate** | N% | 🟢/🟡/🔴 |
| **P0 Pass Rate** | N% | 🟢/🔴 |
| **P1 Pass Rate** | N% | 🟢/🔴 |
| **P2 Pass Rate** | N% | 🟢/🟡 |
| **HIGH Severity Defects** | N | 🔴 |
| **MEDIUM Severity Defects** | N | 🟠 |
| **Flaky Tests** | N | ⚠️ |
| **Execution Time** | [N]h [N]m | ⏱️ |
| **Automation Coverage** | N/N (N%) | — |
| **Execution Mode** | Manual / Automation | — |
| **Executor** | [Tester Name] / CI Job#[N] *(auto-only)* | — |
| **Framework** | Playwright / Detox / Manual | — |
| **Logs/Evidence** | CI URL / Screenshots *(auto)* | — |

> **Formulas + status legend → protocol § 2.** Data sources: counts/rates from § 2.1 (Status + Priority); defects from § 2.3 (Severity per protocol § 3); Total TCs + Automation Coverage from Func-Test § 4.
> **N/A fields by mode — Manual:** Flaky Tests = N/A, Execution Time = N/A, CI Run ID = N/A, Logs/Evidence = N/A. **Automation:** Executor = CI Job# (no name).

**Execution Rules — Manual:** (1) P0 fail → stop. (2) Setup/env fail → escalate. (3) Any P0/P1 TC not-PASS → stop, set § 3 gate = 🔴 FAIL, update frontmatter status = Completed, log in § 5 if autonomous. (4) ≥3 consecutive retries → defer. **Automation:** runs all tests, no stop rules.

---

## § 1.2 Acceptance Criteria Traceability & Coverage

<!-- AI: SSoT — AC ID/Priority/Description from TestChecklist §2.1; TC categories from Func-Test §4 TC IDs.
     Layers Tested/Missed: extract {CAT} segment from TC IDs already in § 2.1 (F{NNN}_AC{N}_{CAT}_{NNN} — BL/VAL/SEC/GUI/EXC/INT). Cross-reference Func-Test §4 to find TCs planned for this AC but absent from § 2.1 — those are Layers Missed. Category meanings → test-design.md "TP Category → Test Approach Mapping (ISTQB)" (CANONICAL); do NOT redefine here.
     Coverage % = (distinct layers with TC results in § 2.1) / (distinct layers planned for this AC in Func-Test §4).
     Layers Missed notation — use the lookup below:
     | Scenario | Notation | Example |
     |----------|----------|---------|
     | TC exists in Func-Test § 4, status = SKIP in § 2.1 (intentional) | ⏭️ | SEC ⏭️ = feature flag OFF |
     | No TC planned for this layer (coverage gap) | ❌ | SEC ❌ = no SEC test written |
-->

| AC ID | Priority | AC Description | Layers Tested | Layers Missed | Layer Coverage % | Pass Rate | Status |
|-------|----------|---|---|---|---|---|---|
| AC-1 | 🔴 P0 | *(from TestChecklist §2.1)* | BL ✅, VAL ✅, SEC ✅ | — | 100% | 100% (3/3) | ✅ |
| AC-2 | 🟡 P1 | *(from TestChecklist §2.1)* | BL ✅, VAL ✅ | SEC ⏭️ | 67% | 100% (2/2) | ⏳ Partial |

> **Layer Coverage %** = (layers with results) / (layers planned for this AC in Func-Test §4) — distinct from § 1.1 Test Coverage Rate (which is TC-execution-based). **Pass Rate %** ≠ Layer Coverage % — high coverage with low pass rate = risky. **Priority mismatch:** If TC priority ≠ AC priority → note in § 2.1 Notes. **Layers Missed:** ⏭️ = SKIP (intentional, e.g., flag OFF); ❌ = gap (no TC written for this layer).

**Summary:**
- **Total ACs:** N | **Fully Covered:** N | **Partially Covered:** N | **Pass Rate (all ACs):** N%
- **P0+P1 Coverage:** N/N (100%) ✅ | **P2 Coverage:** N/N (N%)

---

## § 1.3 Test Case Priority Distribution

> **Fill order: § 1.3 first** (raw counts from § 2.1), then derive § 1.1 pass rates from those counts. Aggregate pass rates live in § 1.1 only — this table does NOT repeat them.

| Priority | Total | Passed | Failed | Skipped | Blocked | Hold |
|----------|-------|--------|--------|---------|---------|------|
| **P0 (Critical Path)** | N | N | N | 0 | N | 0 |
| **P1 (Required)** | N | N | N | 0 | N | 0 |
| **P2 (Edge Cases)** | N | N | N | N | N | N |
| **Total** | N | N | N | N | N | N |

---

## § 1.4 Multi-Viewport/Platform Coverage

> **Data Source:** Group § 2.1 TC rows by Viewport/Device, sum PASS/FAIL counts per viewport. Device/viewport list → test-design.md Platform NFR Baselines (canonical).

#### **If Platform = Web (or All)**

> One row per viewport in **test-design.md Platform NFR baselines** (Desktop 1440 / Tablet 768 / Mobile 375 iOS+Android). Do NOT re-list devices here — use that SSoT.

| Viewport | Device / Browser | Tests Run | Passed | Failed | Pass Rate | Status |
|----------|------------------|-----------|--------|--------|-----------|--------|
| [per test-design NFR baseline] | … | N | N | N | N% | — |

---

#### **If Platform = App (or All)**

> One row per device in **test-design.md Platform NFR baselines** (iOS / Android).

| Platform | Device / OS | Tests Run | Passed | Failed | Pass Rate | Status |
|----------|-------------|-----------|--------|--------|-----------|--------|
| [per test-design NFR baseline] | … | N | N | N | N% | — |

---

## § 2. Test Results Detail

### § 2.1 Detailed Test Results Table

<!-- TC ID / Category / Priority / Depends On: all from Func-Test.md § 4 (SSoT) — do NOT re-derive. Defect Link: Manual→ADO#XXXX | Automation→DEF-001 (→§2.3)
     TC Blast-Radius = blast-radius of THIS TC failing (BLAST-CRITICAL/MAJOR/MINOR/TRIVIAL) — lookup → protocol § 2 (canonical).
     ⚠️ TC Blast-Radius ≠ Defect Severity. Blast-Radius is a TC-impact label. Defect Severity (HIGH/MEDIUM/LOW) lives in § 2.3 and is assigned via protocol § 3 Defect Triage Matrix.
     Fill TC Blast-Radius only when status = FAIL; leave "—" for all other statuses.
     Execution status definitions → protocol § 1. -->

| TC ID | Test Category | Description | Viewport/Device | Execution Status | TC Priority | TC Blast-Radius | Defect Link | Notes |
|-------|---------------|---|---|---------|---|---|---|---|
| F001_AC1_BL_001 | HP | Valid credentials grant dashboard access | Desktop 1440px | ✅ PASS | 🔴 P0 | — | — | Chrome, 2.3s ✅ |
| F001_AC2_BL_001 | HP | After login, access settings panel | Mobile 375px (iOS) | ❌ FAIL | 🔴 P0 | BLAST-CRITICAL | DEF-001 | Missing CSS media query; iPhone 15 Safari |
| F001_AC2_EXC_001 | Neg | Handle invalid session gracefully | Desktop 1440px | ⏭️ SKIP | 🟡 P1 | — | — | Feature flag [FEATURE_SETTINGS_V2] not enabled |
| F001_AC2_BL_002 | HP | Save settings changes | Desktop 1440px | ⛔ BLOCKED | 🔴 P0 | — | — | Blocked by F001_AC2_BL_001 FAIL (panel unreachable) |
| F001_AC3_GUI_001 | Visual | Settings panel layout responsive | Tablet 768px | 🔴 HOLD | 🟢 P2 | — | — | Fixture not implemented yet (Draft) |

---

**Execution Summary:**
- **Automation:** Total runtime = Σ[duration from Notes above] = [N]h [N]m | CI: [job#XYZ](url)
- **Manual:** Elapsed time = [N]h [N]m | Tester: [Name]

> Anchor § 1.1 "Execution Time" + § 2.1 Notes durations for AI context validation.

---

### § 2.2 Failed Test Details & Root Cause Analysis (RCA)

<!-- AI:
     - Automation mode only. Manual mode: RCA lives in the ADO/JIRA ticket (§ 2.3 link sufficient) — leave this section empty (do not delete the heading).
     - Severity: assign via protocol § 3 Defect Triage Matrix (canonical). Do NOT infer from TC Priority or TC Blast-Radius.
     - Infra flake (ECONNREFUSED, Staging down, flaky deploy): classify as Infrastructure → defer to Infra backlog, does not gate merge. Mark Owner = Ops, Branch = N/A. -->

**Show only if failures exist in § 2.1.** Required fields: TC ID, Priority, Severity, Expected, Actual, Error Message, Root Cause, Impact, Owner, Fix ETA. Optional: Fix Proposed, Branch, Evidence, Follow-up.

<!-- EXAMPLE: remove if no failures -->
#### **DEF-001: Settings panel button missing on mobile (iOS)**

| Field | Value |
|-------|-------|
| **TC ID** | F001_AC2_BL_001 |
| **Priority** | 🔴 P0 (Critical Path) |
| **Severity** | 🔴 HIGH (Business Logic defect per protocol § 3) |
| **Device/Viewport** | iPhone 15 / 375px (Safari mobile) |
| **Expected** | Settings panel button visible in header, clickable |
| **Actual** | ❌ Button not rendered on mobile view |
| **Error Message** | Element not found after 5s wait: `data-testid="settings-btn"` |
| **Root Cause** | Missing CSS media query for mobile viewport (min-width: 768px condition on desktop only) |
| **Impact** | Users on mobile cannot access settings (P0 AC blocker) |
| **Owner** | SE (Frontend) |
| **Fix Proposed** | Add CSS rule: `@media (max-width: 767px) { .settings-btn { display: flex } }` |
| **Fix ETA** | 30 minutes |
| **Branch** | feature/AL-XXX |
| **Evidence** | [CI log](url) |
| **Follow-up** | Retest after SE fixes, update Defect Status below |

---

### § 2.3 Defect Registry & Remediation Tracking

> **Column schema by execution_mode → protocol § 5.** Severity → protocol § 3 Defect Triage Matrix (canonical). Do NOT use TC Priority or TC Blast-Radius.
> ⚠️ **"BLOCKED" has two meanings:** (A) § 2.1 ⛔ BLOCKED = TC could not run (dependency failed). (B) § 2.3 BLOCKED = defect fix awaiting external blocker — escalate to PE, does not count toward deferred threshold.

#### Manual Mode

| Defect ID | TC ID | Severity | ADO/JIRA Link |
|-----------|-------|----------|---------------|
| ADO#5678 | F001_AC2_BL_001 | 🔴 HIGH | [ADO#5678](url) |
| ADO#5679 | F001_AC1_BL_002 | 🟠 MEDIUM | [ADO#5679](url) |

#### Automation Mode

| Defect ID | TC ID | Severity | Root Cause | Owner | Fix ETA | Status | Fixed By Commit | Verified By | Date Verified | Notes |
|-----------|-------|----------|-----------|-------|---------|--------|-----------------|-------------|---------------|-------|
| DEF-001 | F001_AC2_BL_001 | 🔴 HIGH | Missing CSS media query (mobile) | FE SE | 30min | 🔧 Fixed | commit#abc123 | QA | 2026-06-24 | Settings button mobile ✅ |
| DEF-002 | F001_AC1_BL_002 | 🟠 MEDIUM | Staging API intermittent (Ops issue) | Backend Ops | 2h | ⏳ Pending | — | — | — | Ops investigating |

> **Status column:** ✅ Fixed+Verified | ⏳ Pending (deferred) | 🔧 In Progress (fix started, not verified) | ⛔ BLOCKED (escalate to PE).
> **Gate counting:** ⏳ + 🔧 = deferred (counts toward Step 2 threshold). ✅ = not counted. ⛔ = escalate (blocks merge independently, not counted in threshold). Gate decision → § 3.

---

## § 3 Merge Gate Decision

> **Full algorithm → `.tas/rules/common/test-report-protocol.md` § 4** (Step 1 escalation check → Step 2 release gate → Step 3 risk validation). Read that file — do not rely on summaries below.
> **Severity SSoT → protocol § 3 Defect Triage Matrix** (canonical). § 2.3 and § 1.1 read Severity from there only.
> **Deferred counts → § 2.3 gate counting note** (⏳ + 🔧 count; ✅ and ⛔ do not).

### § 3.1 Escalation Check (Apply FIRST)

> Full conditions → **protocol § 4 Step 1** (authoritative). Source columns: § 2.1 (TC status) + § 2.3 (deferred bug severity via protocol § 3).
> **Key:** SKIP = intentional (never proven); BLOCKED = dependency failed (involuntary). Both count as not-PASS for Step 1.

### § 3.2 Release Decision Gate (Calculated from § 1.1 + § 2.3)

> **Full algorithm → protocol § 4 Step 2 (authoritative).** Read that table directly for ✅ / 🟡 / 🔴 thresholds — do not redefine here.

### § 3.3 Risk Validation (🟡 PASS WITH RISK only)

> Full checklist → **protocol § 4 Step 3** (authoritative). Any check fails → escalate to 🔴 FAIL or PE for risk acceptance.

---

## § 4. Sign-Off & Approval

| Role | Name | Approval | Signed | Risk Acknowledgment | Notes |
|------|------|----------|--------|-------------------|-------|
| **PE** (Product) | [Name] | ✅ Approve / 🟡 Conditional / 🔴 Reject | YYYY-MM-DD (Automation: +HH:MM UTC) | [AC coverage OK? UX acceptable? Risk ETA confirmed?] | [Comments] |
| **SE** (Engineering) | [Name] | ✅ Approve / 🟡 Conditional / 🔴 Reject | YYYY-MM-DD (Automation: +HH:MM UTC) | [Code quality OK? RCA complete? Fix ETA realistic? Defect Registry tracked?] | [Comments] |

> **Approval conditions:** § 3 gate outcome. **Signed column:** Manual = YYYY-MM-DD; Automation = YYYY-MM-DD HH:MM UTC.

### § 4.2 Risk Acceptance (if Conditional Merge)

| Risk | Condition | Owner | ETA |
|------|-----------|-------|-----|
| DEF-002 Staging API flaky | Ops re-test + fix | Backend Ops | 2h |
| P2 pass 85% | Defer if PE approves | PM | N/A |

> **Conditional:** Defects tracked (§ 2.3), ETAs realistic, re-test scheduled, stakeholders notified.

---

## § 5. Autonomous Decisions Log

> Populated only when `autonomous_run: true`. If `autonomous_run: false` (human-led run) — leave this table with a single `—` row (do not delete the section).

| Timestamp | Section | Decision | Rationale |
|-----------|---------|----------|-----------|
| — | — | — | — |

---

**Report Status:** {{ status }} | **Last Updated:** {{ created_date }} {{ created_time }}  
**Data Sources** — _external:_ Func-Test § 4 (TC ID/category/priority/depends) · TestChecklist § 2.1 (AC defs) · test-design.md "TP Category → Test Approach Mapping (ISTQB)" (category→technique) · protocol § 3 (severity). _internal:_ § 2.1 (results).
