# QA Plan: [Sprint/Feature Name] > **Date**: [date] > **Generated by**: /qa-plan > **Scope**: [N stories across N systems] > **Engine**: [engine name and version] > **Sprint file**: [path to sprint plan] --- ## Story Coverage Summary | Story | Type | Automated Test Required | Manual Verification Required | |-------|------|------------------------|------------------------------| | [story title] | Logic | Unit test — `tests/unit/[system]/` | None | | [story title] | Integration | Integration test — `tests/integration/[system]/` | Smoke check | | [story title] | Visual/Feel | None (not automatable) | Screenshot + lead sign-off | | [story title] | UI | None (not automatable) | Manual step-through | | [story title] | Config/Data | Data validation (optional) | Spot-check in-game values | **Totals**: [N] Logic, [N] Integration, [N] Visual/Feel, [N] UI, [N] Config/Data --- ## Automated Tests Required ### [Story Title] — Logic **Test file path**: `tests/unit/[system]/[story-slug]_test.[ext]` **What to test**: - [Formula or rule from GDD Formulas section — e.g., "damage = base * multiplier where multiplier ∈ [0.5, 3.0]"] - [Each named state transition] - [Each side effect that should / should not occur] **Edge cases to cover**: - Zero / minimum input values - Maximum / boundary input values - Invalid or null input - [GDD-specified edge cases] **Estimated test count**: ~[N] unit tests --- ### [Story Title] — Integration **Test file path**: `tests/integration/[system]/[story-slug]_test.[ext]` **What to test**: - [Cross-system interaction — e.g., "applying buff updates CharacterStats and triggers UI refresh"] - [Round-trip — e.g., "save → load restores all fields"] --- ## Manual QA Checklist ### [Story Title] — Visual/Feel **Verification method**: Screenshot + [designer / art-lead] sign-off **Evidence file**: `production/qa/evidence/[story-slug]-evidence.md` **Who must sign off**: [designer / lead-programmer / art-lead] - [ ] [Specific observable condition — e.g., "hit flash appears on frame of impact, not the frame after"] - [ ] [Another falsifiable condition] ### [Story Title] — UI **Verification method**: Manual step-through **Evidence file**: `production/qa/evidence/[story-slug]-evidence.md` - [ ] [Every acceptance criterion translated into a manual check item] --- ## Smoke Test Scope Critical paths to verify before QA hand-off (run via `/smoke-check`): 1. Game launches to main menu without crash 2. New game / session can be started 3. [Primary mechanic introduced or changed this sprint] 4. [System with regression risk from this sprint's changes] 5. Save / load cycle completes without data loss (if save system exists) 6. Performance is within budget on target hardware --- ## Playtest Requirements | Story | Playtest Goal | Min Sessions | Target Player Type | |-------|--------------|--------------|-------------------| | [story] | [What question must be answered?] | [N] | [new player / experienced / etc.] | Sign-off requirement: Playtest notes → `production/session-logs/playtest-[sprint]-[story-slug].md` If no playtest sessions required: *No playtest sessions required for this sprint.* --- ## Definition of Done — This Sprint A story is DONE when ALL of the following are true: - [ ] All acceptance criteria verified — automated test result OR documented manual evidence - [ ] Test file exists for all Logic and Integration stories and passes - [ ] Manual evidence document exists for all Visual/Feel and UI stories - [ ] Smoke check passes (run `/smoke-check sprint` before QA hand-off) - [ ] No regressions introduced — previous sprint's features still pass - [ ] Code reviewed (via `/code-review` or documented peer review) - [ ] Story file updated to `Status: Complete` via `/story-done` **Stories requiring playtest sign-off before close**: [list, or "None"] --- --- *Results and sign-off are tracked in the QA sign-off report generated by `/team-qa` — not in this plan file.* *Template: `.claude/docs/templates/test-plan.md`* *Generated by: `/qa-plan` — do not edit this line*