Team 1 Enemies and Bosses Test Plan - UQcsse3200/2026-studio-4 GitHub Wiki

Team 1 Enemies and Bosses Test Plan

Testing is divided into automated unit tests and manual gameplay tests.

This plan covers Team 1 enemies, minibosses, the Final Boss and ordinary-drop magnetic pickup. Shared systems are checked where they interact with these features.

Tested revision: 88c3393, merged into main through PR #388. Reports generated on 21 October 2026.

Automated Unit Testing

Run from the repository root with JDK 21:

cd source
./gradlew :core:clean spotlessCheck :core:test :core:jacocoTestReport --console=plain

On Windows, use .\gradlew.bat in place of ./gradlew.

Files

The expanded inventory below combines the locally inspected test files with the new Snake dust-anchor test documented in PR #388. Paths are relative to source/core/src/test/com/csse3200/game/. This is 137 test source files, not 137 executed test cases. The supplied results and coverage below remain tied to tested revision 88c3393. The expanded list is not a new test execution.

The previous local inventory was inspected at HEAD bf987adb7c768e32aff59adcf13851aef293192b; the new dust-anchor entry and updated report figures come from the supplied latest plan. These sources are distinguished rather than treating the old local inspection as verification of the new commit.

PR #388 regression additions: SnakeBurrowDustAnchorTest.java checks dust alignment with the enlarged ground collider; SnakeBurrowVisualComponentTest.java adds dust clearance from walls and room boundaries, slow-frame checks and cleanup. The supplied latest report records 3/3 and 10/10 passing tests respectively.

Enemy creation and shared combat

Factory assembly, variants, health display, contact damage, splitting, hitboxes and disposal. Shared-system tests are regression dependencies, not a claim of sole Team 1 ownership.

  • entities/enemy/BombEnemyTest.java
  • entities/enemy/ChaseEnemyTest.java
  • components/CombatStatsComponentTest.java
  • components/CombatStatsImmobilisedAttackerTest.java
  • components/npc/EnemyAnimationDisposalTest.java
  • components/EnemyDeathComponentTest.java
  • components/npc/EnemyStatDisplayTest.java
  • entities/enemy/FloatingDemonTest.java
  • entities/enemy/GiantEnemyTest.java
  • physics/HitboxComponentTest.java
  • entities/factories/HitboxFactoryTest.java
  • entities/factories/HitboxSpecTest.java
  • components/weapons/LifetimeComponentTest.java
  • entities/factories/NPCFactoryTest.java
  • components/SplitComponentTest.java
  • components/TouchAttackComponentTest.java

EnemyManager, resources and achievements

Room ownership, spawn rejection, split children, scaling, loot, repeated death events and disposal. EnemyManagerComponentTest checks Cerberus reporting only after all heads die; AchievementsTest checks configured miniboss achievements against matching kills. RoomAssetsTest uses mocked loading and does not prove every atlas/PNG path exists.

  • components/achievements/AchievementReportersTest.java
  • services/AchievementServiceTest.java
  • components/achievements/AchievementsTest.java
  • components/rooms/EnemyManagerComponentTest.java
  • components/rooms/EntityManagerComponentTest.java
  • components/rooms/RoomAssetsTest.java

Navigation and Minotaur/Medusa

Movement and navigation; Medusa recovery; Minotaur attack timing and rendering.

  • components/tasks/ChaseTaskTest.java
  • components/tasks/GroundChaseTaskTest.java
  • components/tasks/LungeAttackTaskTest.java
  • components/npc/MedusaHitRecoveryComponentTest.java
  • components/npc/MinotaurAnimationControllerTest.java
  • rendering/MinotaurAttackRenderComponentTest.java
  • entities/enemy/MinotaurCombatIntegrationTest.java
  • rendering/MinotaurDashTrailComponentTest.java
  • components/tasks/MovementTaskTest.java
  • ai/movement/ObstacleNavigationTest.java
  • components/tasks/WaitTaskTest.java
  • components/tasks/WanderTaskTest.java

Flying enemies

Patrol, ranged attacks, movement and wall checks. The current FloatingDemonProjectileFactoryTest checks player-collision damage; themed-art fallback requires additional real-resource/gameplay verification.

  • entities/factories/FloatingDemonProjectileFactoryTest.java
  • components/npc/FlyingEnemyPatrolComponentTest.java
  • components/tasks/PatrolTaskTest.java
  • components/npc/ProjectileMovementComponentTest.java
  • components/tasks/RangedAttackTaskTest.java

Cerberus

Complete dedicated suite: independent heads, combined/scaled-health phases, sequential/concurrent attacks, bite, mist, queued fireballs, layered animations, enrage, chain rendering/geometry and movement restriction. Homing movement tests cover turning, range and overshoot, not wall blocking.

  • components/miniboss/cerberus/CerberusAttackCoordinationTest.java
  • components/miniboss/cerberus/CerberusAttackCoordinatorTest.java
  • components/miniboss/cerberus/CerberusBiteComponentTest.java
  • components/miniboss/cerberus/CerberusChainComponentTest.java
  • components/miniboss/cerberus/CerberusChainRenderComponentTest.java
  • components/miniboss/cerberus/CerberusDeathComponentTest.java
  • components/miniboss/cerberus/CerberusEnrageVisualComponentTest.java
  • components/miniboss/cerberus/CerberusLayeredRenderComponentTest.java
  • components/miniboss/cerberus/CerberusMistComponentTest.java
  • components/miniboss/cerberus/CerberusPhaseComponentTest.java
  • components/miniboss/cerberus/CerberusProjectileComponentTest.java
  • entities/factories/CerberusProjectileFactoryTest.java
  • entities/factories/CerberusStatusEffectsTest.java
  • entities/enemy/CerberusTest.java
  • components/ChainRestrictionComponentTest.java
  • components/HeadAttachmentComponentTest.java
  • components/miniboss/cerberus/HomingProjectileMovementComponentTest.java

Chinese Dragon

Complete dedicated suite: factory assembly, actual-max-health phases, attack scheduling, Thunder Orb tracking/lifetime/one-hit/obstacles, Cloud Dash warnings/locked direction/distance/damage/recovery, Storm Zone delays, animation and visual cleanup. The factory assembly file is DragonTest.java, not DragonFactoryTest.java.

  • components/miniboss/dragon/DragonAnimationControllerTest.java
  • components/miniboss/dragon/DragonAttackCoordinatorComponentTest.java
  • components/miniboss/dragon/DragonCloudDashComponentTest.java
  • components/miniboss/dragon/DragonCloudDashMovementComponentTest.java
  • components/miniboss/dragon/DragonCloudDashVisualComponentTest.java
  • components/miniboss/dragon/DragonEnrageVisualComponentTest.java
  • components/miniboss/dragon/DragonPhaseComponentTest.java
  • components/miniboss/dragon/DragonStormZoneComponentTest.java
  • components/miniboss/dragon/DragonStormZoneVisualComponentTest.java
  • entities/enemy/DragonTest.java
  • components/miniboss/dragon/DragonThunderOrbComponentTest.java
  • entities/factories/ThunderOrbFactoryTest.java
  • components/miniboss/dragon/ThunderOrbHitComponentTest.java
  • components/miniboss/dragon/ThunderOrbMovementComponentTest.java

Snake

Complete dedicated suite: burrow navigation/arena/room traversal, collision, warnings, visuals, poison volleys, shields and gem placement. NPCFactoryTest also contains Snake integration tests.

  • components/miniboss/snake/SnakeBurrowArenaTest.java
  • components/miniboss/snake/SnakeBurrowComponentTest.java
  • components/miniboss/snake/SnakeBurrowDustAnchorTest.java β€” Added in PR #388; the supplied latest plan reports 3/3 passing anchor tests.
  • components/miniboss/snake/SnakeBurrowNavigatorTest.java
  • components/miniboss/snake/SnakeBurrowRoomTraversalTest.java
  • components/miniboss/snake/SnakeBurrowVisualComponentTest.java
  • components/miniboss/snake/SnakeBurrowWallCollisionTest.java
  • components/miniboss/snake/SnakeGemSpawnAreaTest.java
  • components/miniboss/snake/SnakePlayerHitVisualComponentTest.java
  • components/miniboss/snake/SnakePoisonCollisionTest.java
  • components/miniboss/snake/SnakePoisonVolleyComponentTest.java
  • components/miniboss/snake/SnakeShieldComponentTest.java
  • components/miniboss/snake/SnakeShieldPickupComponentTest.java

Sleipnir

Factory and attack-task tests. SleipnirEnemyTest is under components/miniboss.

  • components/tasks/EarthquakeAttackTest.java
  • components/tasks/OneAttackTest.java
  • components/miniboss/SleipnirEnemyTest.java
  • components/tasks/StampedeTest.java

Final Boss

Complete dedicated suite for configuration, stages, movement, damage, summons, assets, ice/fire/cover/input/pickups, statues/tornadoes and ending. FinalBossAchievementComponentTest covers the Stage 1 break challenge; it does not establish coverage of all seven challenges.

  • components/boss/FinalBossAchievementComponentTest.java
  • components/boss/FinalBossDamageControllerComponentTest.java
  • components/boss/FinalBossExplosiveSummonComponentTest.java
  • components/boss/FinalBossGrandpaReturnTest.java
  • components/boss/FinalBossHealthProgressionTest.java
  • components/boss/FinalBossMovementComponentTest.java
  • components/boss/FinalBossPetrificationComponentTest.java
  • components/boss/FinalBossPhaseControllerComponentTest.java
  • components/boss/FinalBossProximityDamageComponentTest.java
  • entities/configs/FinalBossStageOneConfigTest.java
  • components/boss/FinalBossStageOneEntranceTest.java
  • components/boss/FinalBossStageThreeAssetsTest.java
  • components/boss/FinalBossStageThreeComponentTest.java
  • entities/configs/FinalBossStageThreeConfigTest.java
  • components/boss/FinalBossStageThreeSlamTest.java
  • components/boss/FinalBossStageThreeVolleyTest.java
  • components/boss/FinalBossStageTwoArenaComponentTest.java
  • components/boss/FinalBossStageTwoAssetsTest.java
  • components/boss/FinalBossStageTwoComponentTest.java
  • entities/configs/FinalBossStageTwoConfigTest.java
  • components/boss/FinalBossStageTwoFireControllerTest.java
  • components/boss/FinalBossStageTwoFireIntegrationTest.java
  • components/boss/FinalBossStageTwoIceControllerTest.java
  • components/boss/FinalBossStageTwoIceInputTest.java
  • components/boss/FinalBossStageTwoIceIntegrationTest.java
  • components/boss/FinalBossStageTwoIceVisualsTest.java
  • components/boss/FinalBossStageTwoPickupControllerTest.java
  • components/boss/FinalBossStageTwoPickupIntegrationTest.java
  • components/boss/FinalBossStageTwoPickupVisualsTest.java
  • components/boss/FinalBossStageTwoPlayerIceControllerTest.java
  • components/boss/FinalBossStageTwoPlayerIceIntegrationTest.java
  • components/boss/FinalBossStageTwoPlayerIceVisualsTest.java
  • components/boss/FinalBossStageTwoVisualComponentTest.java
  • components/boss/FinalBossStatueClusteringTest.java
  • components/boss/FinalBossStatueCollisionTest.java
  • components/boss/FinalBossStatueEvadeTest.java
  • components/boss/FinalBossStatueSpacingTest.java
  • components/boss/FinalBossSummonMovementComponentTest.java
  • components/boss/FinalBossTornadoControllerTest.java
  • components/boss/FinalBossTornadoDamageIntegrationTest.java
  • components/boss/FinalBossTornadoIntegrationTest.java
  • components/boss/FinalBossTornadoSpacingIntegrationTest.java

Ordinary drops and magnetic pickup

Shared drop, reward, pickup and magnetic-interaction regression tests.

  • components/items/EnemyLootPickupIntegrationTest.java
  • components/items/ItemDropAnimationComponentTest.java
  • entities/factories/ItemFactoryTest.java
  • components/items/ItemPickupComponentTest.java
  • items/LootTableTest.java
  • components/player/MagnetUseIntegrationTest.java
  • components/maingame/MagneticPickupHintDisplayTest.java
  • components/items/RoomMagneticPickupComponentTest.java

Coverage limits

  • Real atlas/page loading must still be checked in game; mocked loading is insufficient.
  • Solid-wall checks do not prove that black/void gaps have collision geometry.
  • Cerberus and Dragon both include scaled-health regression tests for premature enrage.
  • A listed file is not proof that its tests passed on the current revision.

Test results

The full local :core:test run at 88c3393 completed with 2,709 tests, 0 failures and 0 ignored tests in 43.766 seconds. This is the complete core test suite, including all teams' tests. The report's test-commit.txt records 88c3393741c72d66a030e25bff6c05f63a2e7014.

The Game Unit Tests run and Java Format run also passed for the same commit.

Screenshot 1 β€” Successful CI run after PR #388 was merged.

Successful CI run for main merge 88c3393

Screenshot 2 β€” Local full-suite test summary: 2,709 tests passed.

Local test summary: 2709 tests, zero failures and zero ignored

Screenshot 3 β€” Final Boss Stage 1 break achievement regression tests. The local report records 16/16 passing tests in FinalBossAchievementComponentTest; the screenshot shows the matching CI job.

Final Boss Stage 1 break achievement tests in CI

Screenshot 4 β€” Snake underground navigation regression tests. All 13 tests in SnakeBurrowNavigatorTest passed, covering wall corners, the Snake's collision footprint, unreachable targets and route updates.

Snake underground navigation tests in CI

Test coverage

The following results come from the Gradle and JaCoCo reports generated by the same local full-suite run. Package names are relative to com.csse3200.game; coverage percentages match the JaCoCo HTML display.

Package Tests passed in the matching test package Instruction coverage Branch coverage
components.boss 454 79% 62%
components.miniboss.snake 185 97% 82%
components.miniboss.cerberus 81 76% 67%
components.miniboss.dragon 111 80% 71%
components.npc 34 88% 70%
components.tasks 100 95% 83%
ai.movement 9 93% 81%

These are selected enemy and boss packages. Factory, room, item and other integration tests are also included in the full suite above.

Screenshot 5 β€” Final Boss coverage by class.

Final Boss JaCoCo coverage by class

Screenshot 6 β€” Final Boss package totals: 79% instruction coverage and 62% branch coverage.

Final Boss JaCoCo package coverage totals

Screenshot 7 β€” Snake package coverage: 97% instruction coverage and 82% branch coverage. SnakeBurrowVisualComponent reaches 100% instruction coverage and 92% branch coverage, including the dust-boundary tests added in PR #388.

Snake JaCoCo package coverage and class totals

Dragon: 3cf13909cfd5e60e1ed98e89f95f633d

Cerberus c90a89ef19b06de08082733dd7281763

Achievement coverage remains partial: FinalBossAchievementComponent has 47% instruction and 15% branch coverage, while SnakeAchievementComponent has 59% and 28%. The dedicated Final Boss achievement tests cover the Stage 1 break challenge. The other six Final Boss achievement paths and the three Snake challenge conditions remain in the manual checks below.

Local report locations:

  • Test report: source/core/build/reports/tests/test/index.html
  • Coverage report: source/core/build/reports/jacoco/test/html/index.html
  • Coverage counters: source/core/build/reports/jacoco/test/jacocoTestReport.xml

Historical coverage remains on the Snake remake and Final Boss remake pages under their original revisions.

Manual Testing

Use a fresh run or encounter for each achievement attempt. Record the commit, save state, actual result and a screenshot or short video when completing a check. The steps below describe the expected behaviour; manual results for this revision have not yet been recorded.

Keybindings

Key Action
W / A / S / D Move
Space Dash; jump when enabled during the Final Boss statue phase
J Normal attack; hold to fire collected ice in Final Boss Stage 2
K Heavy weapon attack
E Short interaction; hold for 1 second to collect ordinary drops magnetically
F1 Open or close the debug terminal

Test setup

Use room goto <roomId> in the terminal to reach a boss room:

Boss Room ID
Cerberus dungeonOneEnd
Snake dungeonTwoEnd
Sleipnir dungeonThreeEnd
Dragon dungeonFourEnd
Final Boss finalBossRoom

From outside the Final Boss room, room fb_stage 1, room fb_stage 2 or room fb_stage 3 starts a fresh encounter at that stage. Test kill and challenge conditions through normal combat; room clear bypasses those conditions. For unlock checks, use a save where the relevant achievement is still locked.

Gameplay checks

  1. Regular enemy variants β†’ Visit all four dungeon themes, including the enemy placements updated in PR #388. Check that spawn points match rooms.json and remain on walkable ground. Check skin/animation/health bar, bomb fuse and dodge, parent death producing exactly two nonrecursive children, and non-splitting chase variants. Expected: Bomb damages only eligible overlap at fuse expiry; children are tracked; room clears after all tracked enemies die.

  2. Walls, crowds and interrupted pursuit β†’ Chase around corners/doorways with several enemies; interrupt with lunge/recovery; conceal the player; test near room boundaries. Expected: No footprint clipping or waypoint overshoot; blocked enemies stop/replan/yield; chase resumes appropriately and concealment suppresses acquisition.

  3. Medusa and Minotaur β†’ Hit Medusa during lunge preparation and movement, including a child; repeat during recovery. Observe Minotaur axe and post-charge attacks. Expected: Medusa recovery refreshes without contact damage/knockback; Minotaur damage matches its attack window and each attack hits at most once.

  4. Flying enemies and resources β†’ Observe Wasp, Harpy, Crow and Jingwei in their rooms; move behind walls and watch volleys/impact animation. Expected: Patrol stays spawn-relative; three-shot spread uses the themed regions; shots cannot pass through walls. Fallback resources remain valid.

  5. Scaling and health display β†’ Enter boss rooms after different completed-dungeon counts; inspect starting/current/max health and damage to the half-health boundary. Expected: Full health at spawn, correctly filled bars and no premature phase transition. Dragon base maximum is 200; phase threshold is half actual maximum.

  6. Cerberus β†’ Kill the middle head first, then side heads; enter/leave mist, let it expire, kill its source, and observe movement/status restoration. Expected: Surviving heads keep functioning; chain/body persist while required; one complete-boss achievement after all heads die. Record mist-effect restoration, not only visual removal.

  7. Snake routes and shield β†’ Fight near solid corners; observe underground detours/warnings; enter Phase 2; collect/refill gems at health below and at 40%; consume all six blocks. Expected: No wall crossing or unsafe emergence; visible reachable pickups; refill does not stack, qualifying heal is 15% of max, and the sixth block prevents damage.

  8. Snake achievements β†’ Use separate fresh attempts for no-gem victory and first Phase 2 pickup. Hit during EXPOSED (including lethal hit), then compare poison windup/firing and blocked hits. Expected: Only the correct three challenge conditions unlock; no-gem attempt requires living player at defeat; later attempts do not inherit prior pickup/hit state.

  9. Dragon and Sleipnir β†’ Check both phases, moving/attack animations, wall interactions, skill cleanup, Sleipnir dust and each defeat achievement. Expected: Skills match phase plans, cancelled/owned effects clear on death, and one matching boss kill is reported.

  10. Final Boss Stage 1 β†’ Run both summon waves and the full break. Dodge/stay in petrification warnings. Use separate attempts for no hit, blocked hit, pre-fired projectile and damage over time during the break. Expected: Eight then sixteen summons; full 7-second break; 0.5-second petrification warning; only an uninterrupted qualifying break unlocks the achievement.

  11. Final Boss Stage 2 β†’ Collect reserves, hold/release J, fire at walls/cover/boss, exhaust reserves and complete the stage. Compare fireball avoidance with shielded contact. Expected: Four accepted 0.25 impacts remove 1 HP; normal attacks are blocked; an actual ice hit unlocks its challenge; any boss-fireball hit invalidates fireproof; phase exit clears input/hints/resources.

  12. Final Boss Stage 3 achievements β†’ Take ice hits in three separate consecutive volleys; repeat with a missed volley and multiple hits in one volley. Compare sword/dagger with ranged hits; trigger a statue evade teleport. Expected: One streak count per volley, miss resets, qualifying melee and first successful statue teleport unlock only their matching achievements.

  13. Statues, tornadoes and ending β†’ Observe five statues, wall/spacing behaviour, ground shockwaves and tornado contact including overlap/jumping; defeat the last statue. Expected: At most four tornadoes, one shared damage clock; jumping avoids ground shockwaves but does not avoid tornado contact; hazards/locks clear and peaceful Grandpa completes the room.

  14. Ordinary-drop magnetic pickup β†’ Use short E, a full 1-second hold, release during flight, then create new drops and hold again; test room exit/death and nearby boss-specific pickups. Expected: Short interaction and completed hold do not both trigger; travelling drops keep moving, new drops need a new hold, rewards are not duplicated, and boss ice/gems retain separate collection.

  15. Cleanup and repeated attempts β†’ Leave/re-enter rooms, die during warnings, and dispose encounters while projectiles/effects/spawns are pending. Expected: No lingering UI, damage, timers, frozen controls or duplicate rewards; a fresh encounter starts with fresh attempt state.

  16. Snake size, health and dust (PR #388) β†’ Start an unscaled Snake encounter, check its 250 maximum HP and enlarged sprite, then observe burrowing, movement and emergence beside walls and room edges in both phases. Expected: The enlarged collider can traverse the room; dust follows the ground contact point and stays outside walls and within the room; the warning centre and attack radius keep their combat behaviour.

  17. Cerberus detailed regression checks β†’ Use separate encounters for middle-first and side-first defeat orders. Check independent head health, head visibility and surviving attacks. Compare sequential Phase 1 attacks with concurrent Phase 2 attacks; test above, at and below half combined scaled maximum health. Dodge bite windup, observe fireball tracking/impact, and verify that the wall anchor remains fixed while the chain follows the body. Expected: No premature enrage, dead heads stop while surviving heads continue, chain restriction remains effective, and complete defeat is reported only once after all heads die. A middle-head death alone must not unlock the achievement. Confirm mist status restoration and body/chain cleanup. Homing movement tests do not establish projectile wall blocking; verify that separately in gameplay.

  18. Chinese Dragon detailed regression checks β†’ Verify full scaled health at spawn and transition at half actual maximum. Observe Phase 1 sequential skills and Phase 2 combinations/recovery windows. Test Thunder Orb tracking, lifetime, one-hit damage and solid-obstacle impact. Dodge Cloud Dash after its warning and check direction locking, distance limit, wall stopping and recovery. Leave Storm Zone circles before delayed strikes and observe separately warned Phase 2 zones. Kill the Dragon during queued shots, dash warnings and storm warnings in separate encounters. Expected: No premature enrage, phase-appropriate animations, no cancelled delayed damage, owned-effect cleanup and one matching defeat achievement. Record black/void-gap behaviour separately from solid-wall checks.

  19. EnemyManager integration β†’ Visit all dungeon themes and verify factory-created enemies and real assets. Kill split parents and verify that their two children remain tracked. Repeat Cerberus defeat orders and check for duplicate rewards/achievement notifications. Leave rooms while spawns or rewards are queued. Expected: Correct scaling, room clear only after tracked enemies die, one complete-boss report, and no stale room-owned spawns or duplicate rewards.

Related feature documentation: Enemies Β· Enemy AI and Navigation Β· Enemy Stat Display Β· Mini Boss 1: Cerberus Β· Snake Miniboss Remake Β· Miniboss 4: Sleipnir Β· Mini Boss 3: Chinese Dragon Β· Final Boss: Grandpa Β· Final Boss Stage 2 Remake and Stage 3 Improvements.

⚠️ **GitHub.com Fallback** ⚠️