# Browser QA Report: {TARGET_NAME}

| Field | Value |
| --- | --- |
| **Date** | {YYYY-MM-DD} |
| **Target** | {URL_OR_BROWSER_SURFACE} |
| **Branch** | {BRANCH_OR_NA} |
| **Commit** | {COMMIT_SHA_OR_NA} |
| **PR / Issue / Plan** | {LINK_OR_NA} |
| **Mode** | report-only / acceptance-gate / fix-loop |
| **Scope** | {SCENARIOS_OR_ROUTES_CHECKED} |
| **Driver** | Browser / Chrome / Playwright / agent-browser / web-evidence |
| **Duration** | {DURATION_OR_NA} |
| **Pages / states checked** | {COUNT_OR_LIST} |
| **Screenshots** | {COUNT_AND_PATHS} |
| **Session record** | `{BROWSER_SESSION_JSON_PATH}` |
| **Session verification** | pass / fail / blocked (`browser-session verify`) |

## Health Score: {SCORE}/100

Scores summarize observed evidence only. Use `N/A` for categories not checked
and explain the gap under `Untested or blocked coverage`.

| Category | Score |
| --- | --- |
| Console | {0-100_OR_NA} |
| Links | {0-100_OR_NA} |
| Visual | {0-100_OR_NA} |
| Functional | {0-100_OR_NA} |
| UX | {0-100_OR_NA} |
| Performance | {0-100_OR_NA} |
| Accessibility | {0-100_OR_NA} |

## Ship Readiness

| Metric | Value |
| --- | --- |
| Verdict | ship / ship-with-notes / hold / blocked |
| Health score | {BEFORE_OR_NA} -> {AFTER_OR_CURRENT} ({DELTA_OR_NA}) |
| Critical issues | {COUNT} |
| High issues | {COUNT} |
| Medium issues | {COUNT} |
| Low issues | {COUNT} |
| Fixes applied | {COUNT} (verified: {N}, best-effort: {N}, reverted: {N}) |
| Deferred items | {COUNT} |
| Blocked coverage | {NONE_OR_SUMMARY} |

**PR Summary:** QA checked {SCOPE}; found {N} issue(s), fixed {M}, and health
score is {SCORE_SUMMARY}.

## Top Findings

1. **{ISSUE-NNN}: {title}** - {severity}; {one-line impact}
2. **{ISSUE-NNN}: {title}** - {severity}; {one-line impact}
3. **{ISSUE-NNN}: {title}** - {severity}; {one-line impact}

## Evidence Index

| Artifact | Path | Notes |
| --- | --- | --- |
| Browser session | `{path/to/browser-session.json}` | verify: pass / fail / blocked |
| Screenshot | `{path/to/screenshot.png}` | redacted if needed |
| DOM observation | `{path/to/dom-observation.txt}` | redacted summary |
| Console summary | `{path/to/console-summary.txt}` | summarized, no secrets |
| Network summary | `{path/to/network-summary.txt}` | summarized, no auth headers |
| Playwright output | `{out/playwright/...}` | screenshot / trace / snapshot |
| Static evidence | `{path/to/web-evidence/summary.json}` | static HTTP only |

## Console Health

| Error / warning | Count | First seen | Impact |
| --- | --- | --- | --- |
| {message_or_none} | {N} | {URL_OR_STATE} | critical / high / medium / low |

## Issues

### ISSUE-001: {Short title}

| Field | Value |
| --- | --- |
| **Severity** | critical / high / medium / low |
| **Category** | console / links / visual / functional / ux / performance / accessibility |
| **Target state** | {URL_OR_STATE} |
| **Evidence** | `{artifact_path}` |

**Description:** {What is wrong, expected vs actual.}

**Repro Steps:**

1. Navigate to {URL_OR_STATE}.
2. {Action}.
3. Observe {actual_result}; expected {expected_result}.

**Screenshot:** `{screenshots/issue-001-result.png}`

## Fixes Applied

| Issue | Fix Status | Commit | Files Changed | Validation |
| --- | --- | --- | --- | --- |
| ISSUE-NNN | verified / best-effort / reverted / deferred | {SHA_OR_NA} | {files_or_NA} | {command_or_artifact} |

### Before/After Evidence

#### ISSUE-NNN: {title}

| State | Screenshot | Notes |
| --- | --- | --- |
| Before | `screenshots/issue-NNN-before.png` | {before_summary} |
| After | `screenshots/issue-NNN-after.png` | {after_summary} |

## Regression Tests

| Issue | Test File / Command | Status | Description |
| --- | --- | --- | --- |
| ISSUE-NNN | `{path_or_command}` | committed / deferred / skipped | {description} |

### Deferred Tests

#### ISSUE-NNN: {title}

**Precondition:** {setup state that triggers the bug}
**Action:** {what the user does}
**Expected:** {correct behavior}
**Why deferred:** {reason}

## Untested Or Blocked Coverage

| Area | Reason | Follow-up |
| --- | --- | --- |
| {area_or_none} | {credential/tool/safety/scope reason} | {next action} |

## Regression Baseline

| Metric | Baseline | Current | Delta |
| --- | --- | --- | --- |
| Health score | {N_OR_NA} | {N_OR_NA} | {+/-N_OR_NA} |
| Issues | {N_OR_NA} | {N_OR_NA} | {+/-N_OR_NA} |

**Fixed since baseline:** {list_or_none}

**New since baseline:** {list_or_none}
