SkyWars Function Testing

This file overviews all the features of SkyWars that need to be tested manually.

This is for use if you want to submit a Pull Request to SkyWars and confirm that it doesn't break anything, or you want to test a development build for yourself.

This basically just lists all the things that are required to consider a SkyWars build "working".

Some things here aren't listed, but are implied by other steps. For instance, there is no reason to test Confirm you win a game after killing everyone if you're already testing Confirm your score is increased when you win a game

I may do this differently in the future, but it seems a bit redundant for now.

Before testing:

  • Completely wipe all configuration files and worlds
  • Install craftbukkit build you're testing for
  • Run server once, then stop
  • Set online-mode to false in server.properties
  • Set allow-nether to false in server.properties
  • Set allow-end to false in bukkit.yml
  • Delete world_nether and world_the_end
  • Install Vault of the version you're testing for
  • Install a test economy.
    • BOSEconomy works for pre-1.9 minecraft versions, and is simple to test and work with.
    • RoyalEconomy requires manual compilation, as it isn't a released plugin. However, it's an open source project, and it works well.
  • Set economy.enabled to true in plugins/SkyWars/main-config.yml
  • Update permissions.yml to enable usage of /sw kit and /sw kitgui by non-ops:
player.basics:
    default: true
    children:
        skywars.kit: true
        skywars.kitgui: true

And now, testing!

  • Start two arenas, confirm /sw cancelall works
  • Start two arenas, confirm /sw cancel works on each
  • Confirm /sw cancel fails with no arenas started
  • Confirm /sw report works
  • Add one person to queue, confirm /sw forcestart doesn't work
  • Add two people to queue, confirm /sw forcestart works
  • Join the queue using both the /sw join command, and a join portal
  • Confirm /sw kit lists both available and unavailable kits.
  • Apply a kit using /sw kit, and confirm it's applied
  • Confirm the kit is still applied next game
  • Confirm /sw kit shows you've applied a kit
  • Confirm /sw kit remove removes your kit
  • Confirm /sw kit won't let you apply a kit you don't have permission for
  • Confirm /sw kit won't let you apply a kit you don't have money for
  • Confirm /sw kit will apply a kit that does require permission
  • Confirm /sw kit will apply a kit that doesn't require permissions or money
  • Confirm /sw kit will apply a kit that costs money, and that your money decreases
  • Confirm kit is removed after you run out of money (when you join, not just when the game starts)
  • Confirm permission kit isn't applied if you loose the permission (when you join, not just when the game starts)
  • Kits (/sws createkit and /sw testkit):
    • Create and apply a kit with named items
    • Create and apply a kit with colored leather armor both in inventory and in armor slots
    • Create and apply a kit with damaged items
    • Create and apply a kit with different spawn eggs.
    • Confirm kit with all of the above works after restarting the server (testing serialization/deserialization)
  • Confirm /me isn't blocked in-game
  • Confirm /gamemode is blocked in-game
  • Confirm /sw leave works from the queue
  • Confirm /sw leave works from in-game
  • Confirm /sw lobby works
  • Confirm /sw lobby is blocked in-game
  • Confirm /sw setlobby works, and changes are reflected in /sw lobby
  • Confirm respawn location after leaving game reflects new lobby
  • Confirm /sw setportal sets a portal that works
  • Confirm /sw delportal removes the portal
  • Confirm /sw status accurately displays both people in queue and running games
  • Confirm /sw status doesn't display games after they have ended
  • Confirm /sw version accurately displays plugin version
  • Create a join sign, and confirm the sign is formatted
    • Confirm clicking on the sign enters you into the queue
    • Confirm the sign is updated when /sw join is used to enter the queue.
  • Confirm /sw kitgui opens a kit GUI.
    • Confirm nothing happens and no errors occur when clicking on an empty spot and when clicking on an item in your inventory.
    • Confirm clicking on an available kit selects it and closes the window.
    • Confirm clicking on an unavailable kit gives an error message in chat and closes the window.
  • Confirm in-game death messages display correctly when someone is directly killed
  • Confirm in-game death messages display correctly when someone is pushed into the void
  • Confirm in-game death messages display correctly when someone kills themself through drowning
  • Confirm your score is increased when you win a game
  • Confirm your score is increased when you kill someone
  • Confirm your score is decreased when you die in a game
  • Confirm your score is unaffected when you die outside of a game
  • Confirm enderpearls don't cause you to kill yourself
    • It isn't a problem to get damage from enderpearls, only if you receive points from killing yourself.
  • Confirm you can't hit someone on your team
  • Confirm after you kill everyone the game ends
  • Confirm someone disconnecting from the server removes them from a game they're playing
  • Confirm it's always daylight in the game
  • Config testing:
    • Confirm you keep your inventory after dying with save-inventory: true
    • Confirm you loose your inventory after dying with save-inventory: false
    • Confirm the /sw help message changes after setting locale: es (or any other language)
    • Confirm SkyWars starts up correctly with locale set to cn, cz, de, dk, en, es, fa, fr, nl, pl, pt and ru
    • Confirm messages.yml updates after changing locale when auto-update is set to true
    • Confirm messages.new.yml is created after changing locale when auto-update is set to false
    • Confirm messages.yml does not update after changing locale when auto-update is set to false
    • Confirm /sw kit does not display economy-cost kits after setting economy.enabled: false
    • Confirm points are not altered with enable-points: false
    • Confirm games start correctly with enable-points: true and use-sql: false
    • Confirm games start correctly with enable-points: true and use-sql: true
    • Confirm games start correctly with enable-points: false
    • Confirm position, game mode, health and hunger are all saved with save-position-gamemode-health.
    • Confirm allowFlight is reset when joining game
    • Confirm all team members are given economy and point rewards when using teams.
    • TODO: More encompassing config testing overview
  • TODO: Setup testing overview
  • Arena creation testing:
    • Create an arena?
    • Confirm the following are correctly stored in chests:
    • Colored leather armor
    • Different spawn eggs
    • Potions with and without custom effects
    • Ensure chests are filled when random chests are enabled for a custom arena
    • Ensure double chests are filled with random chests enabled for both parts.
  • Test starting up from a fresh server on Linux and Windows to ensure there are no OS dependencies
    • No need to do a full test on both, just be sure to test that there are no immediate crashes when first loading arenas.