1.7 KiB
Manual QA — NEO-32 (CooldownSnapshot + slot HUD)
Prereq: game server running (NeonSprawl.Server), client pointed at same base_url / dev_player_id as dev player with position + hotbar seed.
-
Cooling HUD after accept — Tab-lock a prototype target in range, bind slot 0 to
prototype_pulseif needed, press1to cast. ExpectCast: acceptedand Cooldowns: line to showslot 0: ~3.0s(counts down). After ~3s expectCooldowns: (ready). -
Server deny on spam — Immediately double-tap cast during cooling (or remove client guard temporarily): second attempt should show
ability_cast_denied: on_cooldown(server) on the cast feedback line when POST completes. -
Client guard — While slot 0 shows cooling, press
1repeatedly. Expectability_cast_denied: on_cooldown (client guard)onCastFeedbackLabelon most presses (local mirror blocks the POST). Optional: run the server withNEON_SPRAWL_API_LOG=1(or launch profilehttp+apiLog) — each cast that reaches the server and returns JSON prints[ability-cast] ability_cast_denied …orability_cast_requestedto the process console, so rapid1with the guard on should produce fewer lines than without the guard. Optional proof the server still enforces cooldown: in Bruno (orcurl), sendPOST …/ability-casttwice in a row with the same valid body while the snapshot still shows slot 0 cooling — second responseaccepted": false,reasonCode": "on_cooldown"(same contract as step 2). -
Reconnect / rehydrate — With slot 0 mid-cooldown, restart the client (or reload scene) while server keeps running; after boot expect cooldown line to match server within one GET cycle (same dev player id).