4.5 KiB
4.5 KiB
NEO-122 — Manual QA checklist
| Field | Value |
|---|---|
| Key | NEO-122 |
| Title | E7M1-11: Client quest progress + accept HUD (Godot) |
| Linear | https://linear.app/neon-sprawl/issue/NEO-122/e7m1-11-client-quest-progress-accept-hud-godot |
| Plan | docs/plans/NEO-122-implementation-plan.md |
| Branch | NEO-122-client-quest-progress-accept-hud |
Preconditions
- Fresh dev player: stop any running server, then start a new instance so in-memory quest progress resets.
- No Bruno/curl for this checklist — accept and progress use Godot Q / Shift+Q and gameplay actions only.
- NEO-119 quest-progress GET, NEO-120 accept POST, and NEO-115 quest-definitions GET landed on
main.
Expected quest HUD progression
| After | QuestProgressLabel |
QuestAcceptFeedbackLabel |
|---|---|---|
| Boot | All four quests not started (display names when defs loaded) |
Quest accept: — (Q gather / Shift+Q next) |
| Q accept gather | Intro: Salvage Run: active step 1 |
Quest accept: Intro: Salvage Run accepted |
| Gather scrap (R on resource node ×3) | Gather objective counter increases (e.g. gather_intro_obj_scrap=3) |
unchanged |
| Gather quest completes | Intro: Salvage Run: completed |
unchanged |
| Shift+Q after gather complete (catalog order) | Intro: Clear the Pocket: active — combat sorts before refine |
Quest accept: Intro: Clear the Pocket accepted |
Craft refine_scrap_standard (Economy HUD) |
Refine quest completes when recipe succeeds | unchanged |
| Duplicate Q on gather | Gather row stays completed |
Quest accept: denied — already_completed (or already_active) |
Checklist
- Start server:
cd server/NeonSprawl.Server && dotnet run. - Run Godot main scene (F5). Confirm
QuestProgressLabelshows fournot startedlines andQuestAcceptFeedbackLabelshows the idle hint (inHudRootScroll, below encounter loot labels). Economy panel pinned bottom-left (not off-screen). - Press Q. Verify gather intro becomes
active step 1and accept feedback shows success. - Gather scrap until gather quest completes (resource node R). Verify counter updates on
QuestProgressLabelafter each successful gather (may lag one GET). - Press Shift+Q before gather is complete — verify
Quest accept: denied — prerequisite_incompletefor refine (orno eligible questif refine is not yet eligible). - After gather completes, press Shift+Q. Verify combat intro becomes
active(catalog order — combat before refine). Component refine/craft path: complete combat first, then repeat Shift+Q for refine; see NEO-123 capstone for full four-quest order. - Open Economy HUD recipe panel — Refine Scrap (Standard) is the first row (scroll starts at top). After combat intro is
completedand refine intro isactive, craft when ≥5 scrap in bag. - Craft
refine_scrap_standardwith Economy HUD open. Verify refine questcompletedafter successful craft (requires refine introactivefrom step 6 follow-up Shift+Q). - Press Q again on already-completed gather. Verify deny feedback on
QuestAcceptFeedbackLabelwithout Bruno. - Optional: stop server while Godot running, press Q — verify
Quests: error — …orQuest accept: failed — …visible on HUD. - Optional: block
GET /game/world/quest-definitionsonly while progress GET succeeds — verifydefinitions error — …underQuestProgressLabelwith raw quest ids as fallback. - Toggle Economy HUD off/on — debug labels in
HudRootScrollremain; recipe repopulate + scroll reset still works.
Notes
- Shift+Q uses quest-definitions catalog order (ordinal
id): after gather intro completes, combat intro is offered before refine intro. Server deny is authoritative when prerequisites block accept. - Full four-quest chain capstone (supersedes partial intro path here): NEO-123 manual QA.
- Encounter progress HUD regression: NEO-110 manual QA.
Acceptance
- Steps 1–9 completable in one session without Bruno/curl.
- Quest status visible after Q accept and updates after gather/craft without manual refresh key.
- Failed GET/accept shows visible HUD error copy.
- Economy HUD craft panel visible for step 7–8 (recipes first row, no overlap with quest labels).