Menus Test Plan - UQcsse3200/2026-studio-2 GitHub Wiki

Manual/visual test cases for UI work that JUnit can't meaningfully assert on (layout, animation, colour, texture swap-in). Covers: Main Menu, Pause Menu, HUD (health bar + hotbar), Backpack, and the Game End screen.

Setup: run ./gradlew desktop:run from source/.


1. Settings Menu

ID Steps Expected Result
SM-1 Launch the game. Main menu loads with the Odysseus logo, a background image, and 5 buttons: Play and Continue in a left column, Minigames and Settings in a right column, Exit centred at the bottom.
SM-2 Click the "Settings" button. The background changes to a similar image without the foreground elements. The settings menu contains a box with the heading "SETTINGS" and has options to change the FPS cap, fullscreen & window size, Vsync, UI scale, and resolution.
SM-3 Interact with the "Resolution" dropdown menu When clicked, the menu displays a dropdown of different screen resolutions, and on selecting one the resolution changes appropriately, with the background image and UI elements matching the new resolution.
SM-4 Click "Fullscreen". The window resizes again, this time to fullscreen, and the background and UI elements resize accordingly.
SM-5 Click Exit. The game returns to the main menu and remains in fullscreen.

2. Pause Menu

ID Steps Expected Result
PM-1 From the main menu, click "Play" and click through any cutscenes. Once in the game, press the ESC key. The game pauses (player and enemies stop moving), and a menu appears with "Resume", "Settings", "Controls" and Exit buttons, with the game behind the menu being blurred.
PM-2 Click "Resume" The menu closes and gameplay resumes as normal, with player and enemies being able to move.
PM-3 Repeat steps 1 & 2, but close the menu using ESC instead of clicking "Resume". Gameplay pauses as in step PM-1 when ESC is pressed for the first time, and then resumes as in step PM- 2 when ESC is pressed again
PM-4 Re-open the pause menu, click **
Controls**. A graphic showing the control scheme appears, with a Back button.
PM-5 Click Back on the controls graphic. Returns to the normal pause menu (Resume/Settings/Controls/Exit), still paused/blurred.
PM-6 Click Settings from pause. Settings screen opens; exiting it returns to the paused game (not the main menu).
PM-7 Click Exit from pause. Returns to the main menu.

3. HUD — Health Bar

ID Steps Expected Result
HB-1 Start a game and observe the top-left HUD. A row of hearts is shown over a health-bar background image, aligned with no gaps/overlaps between hearts.
HB-2 Take damage (fight an enemy or use the debug terminal — see GE-1 below for how to force state changes). Hearts update to reflect lost health (full → damaged → empty/last-health art) in real time.
HB-3 Reduce health to exactly 1 heart remaining. The "last health" heart art is shown distinctly (different from a normal full heart) as a low-health warning.
HB-4 Heal back up (potion/full heal, if available). Hearts refill correctly, no leftover damaged/empty heart art from before.

4. HUD — Inventory Bar (Hotbar)

ID Steps Expected Result
IB-1 Start a game and look at the bottom hotbar. A row of slots is shown, each drawn as a rounded box (dark teal-green fill, dark border) — not an image-based slot.
IB-2 Press number keys 1–9. The slot matching the pressed number gets a visibly different border colour (brown) while all other slots keep the normal dark border — only one slot selected at a time.
IB-3 Pick up an item. It appears in the next open hotbar slot with its icon and a quantity label if stackable.
IB-4 Press . / ,. Selection moves to the next/previous slot (border highlight moves accordingly).
IB-5 Select an empty slot. Slot still renders the rounded-box style (no broken/missing texture) with the selected border colour, just no item icon inside.

5. Backpack

ID Steps Expected Result
BP-1 Press B. Backpack panel opens, styled to match the hotbar's rounded-box slots.
BP-2 Press B again. Backpack closes.
BP-3 Click-and-drag an item from the backpack onto a hotbar slot. A drag icon follows the cursor during the drag; releasing over a hotbar slot moves the item there and it disappears from its old backpack slot.
BP-4 Drag an item and release it somewhere invalid (outside any slot). Item returns to its original slot — nothing is lost or duplicated.

6. Game End Screen (Win / Lose)

Shortcut for testing without a full playthrough: press F1 to open the debug terminal, type win or lose, press Enter — this fires the same event a real win/death would.

ID Steps Expected Result
GE-1 Trigger lose via the terminal (or die in-game). A panel appears over gameplay: title "GAME OVER!", a message that types out letter-by-letter (typewriter effect), and 3 buttons: Restart, Main Menu, Exit Game.
GE-2 Trigger win via the terminal (or complete the level). Same panel, title "YOU WIN!", victory message.
GE-3 Look at the 3 buttons' size relative to the panel. Each button is a reasonably sized rectangle (roughly 200×70px) — not stretched to fill/overflow the whole panel or screen.
GE-4 Click each of the 3 buttons in turn (re-trigger lose between tests). Restart: logged as requested (no crash — full reset isn't wired up yet). Main Menu: returns to the main menu. Exit Game: closes the application.
GE-5 Let the typewriter finish, then check the message is fully readable and doesn't overflow/clip the panel. Full result text visible, wrapped correctly, no cut-off text.

Notes for testers

  • Recently fixed bugs worth double-checking regressions on: the game-over screen used to crash on death (missing texture load) and its buttons used to render full-screen-sized — both fixed; GE-1/GE-3 above specifically guard against these coming back.
  • If any getAsset(...) call throws on screen load, check that the texture path was added to that screen's createTextures()/texture-loading array — this has been the root cause of two bugs already.