This is a documentation for Board Game Arena: play board games online !

Testing by developer: Difference between revisions

From Board Game Arena
Jump to navigation Jump to search
Line 21: Line 21:


* Install php-cli (you need a verson that bga runs - consulet https://en.doc.boardgamearena.com/Studio#Software_Versions)
* Install php-cli (you need a verson that bga runs - consulet https://en.doc.boardgamearena.com/Studio#Software_Versions)
* Install phpunit, if you use composer DO not use game directory - install it somewhere else  
* Install phpunit matching this php version (the latest is not), if you use composer DO not use game directory - install it somewhere else  
* Create directory modules/tests
* Create directory modules/tests
** If you do file sync - add this dir to exclude list
** If you do file sync - add this dir to exclude list
* Checkout/get stubs from github (see https://en.doc.boardgamearena.com/Setting_up_BGA_Development_environment_using_VSCode)
* Checkout/get stubs from github (see https://en.doc.boardgamearena.com/Setting_up_BGA_Development_environment_using_VSCode), i.e
** git clone git@github.com:elaskavaia/bga-sharedcode.git
** git clone git@github.com:elaskavaia/bga-sharedcode.git
* So main issue it needs to find the parts of bga, in this example we will use stubs above
* So main issue it needs to find the parts of bga, in this example we will use stubs above
* Create autoload.php
* Create autoload.php in modules/ directory
<pre>
<pre>
<?php
<?php
Line 49: Line 49:
?>
?>
</pre>
</pre>
* Set env var APP_GAMEMODULE_PATH to point where stubs are in this case
* Set env var APP_GAMEMODULE_PATH to point where stubs are in this case, i.e APP_GAMEMODULE_PATH=$HOME/git/bga-sharedcode/misc
* Create a test in tests/ folder (see phpunit examples)
* Create a test in tests/ folder (see phpunit examples)
* Run phpunit --bootstrap autoload.php tests/
<pre>
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
 
require_once "../mygame.game.php";
 
class GameUT extends MyGame {
    function __construct() {
        parent::__construct();
        include "../material.inc.php";
    }
    // override/stub methods here that access db and stuff
}
 
final class GameTest extends TestCase {
    public function testGameProgression() {
        $m = new GameUT();
        $this->assertEquals(0,$m->getGameProgression());
    }
    // more tests
}
 
 
</pre>
* Run this from modules/ dir (this assumes env var above already set globally)
phpunit --bootstrap autoload.php tests/


== Play testing on studio ==
== Play testing on studio ==

Revision as of 18:11, 7 April 2023

--- this page is under consructon ---

When you develop a game yuo obviously need to test it, this page collects the info about testing in one place

Manual Testing on BGA

For manual testing most important things to know is

  • how to start/stop game in one click
  • how to switch between players in one click
  • how to save/restore the game state
  • how to construct the game state automatically

All of these described here https://en.doc.boardgamearena.com/Tools_and_tips_of_BGA_Studio

Manual Testing locally

Automated Testing

You can hook up phpunit and write unit tests for php, for that you need stubs for framework functions and classes

<?php

define("APP_GAMEMODULE_PATH", getenv('APP_GAMEMODULE_PATH')); 

spl_autoload_register(function ($class_name) {
  
    switch ($class_name) {
        case "APP_GameClass":
            //var_dump($class_name);
            //var_dump(APP_GAMEMODULE_PATH);
            include APP_GAMEMODULE_PATH."/module/table/table.game.php";
            break;
        default:
            include $class_name . ".php";
            break;
    }
});

?>
  • Set env var APP_GAMEMODULE_PATH to point where stubs are in this case, i.e APP_GAMEMODULE_PATH=$HOME/git/bga-sharedcode/misc
  • Create a test in tests/ folder (see phpunit examples)
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

require_once "../mygame.game.php";

class GameUT extends MyGame {
    function __construct() {
        parent::__construct();
        include "../material.inc.php";
    }
    // override/stub methods here that access db and stuff
}

final class GameTest extends TestCase {
    public function testGameProgression() {
        $m = new GameUT();
        $this->assertEquals(0,$m->getGameProgression());
    }
    // more tests
}


  • Run this from modules/ dir (this assumes env var above already set globally)
phpunit --bootstrap autoload.php tests/

Play testing on studio

To play test on studio you can use your test accounts dev0... dev9. You can give some of these account to other people just make sure you change the password. You should not encourage other people who are not developers to create studio account, this is against bga policy.