diff options
Diffstat (limited to 'doc/en_US/tests.markdown')
-rw-r--r-- | doc/en_US/tests.markdown | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/doc/en_US/tests.markdown b/doc/en_US/tests.markdown new file mode 100644 index 00000000..59177f87 --- /dev/null +++ b/doc/en_US/tests.markdown @@ -0,0 +1,154 @@ +Automated tests +=============== + +[PHPUnit](https://phpunit.de/) is used to run automated tests on Kanboard. + +You can run tests across different databases (Sqlite, Mysql and Postgresql) to be sure that the result is the same everywhere. + +Requirements +------------ + +- Linux/Unix machine +- PHP +- PHPUnit installed +- Mysql and Postgresql (optional) +- Selenium (optional) +- Firefox (optional) + +Unit Tests +---------- + +### Test with Sqlite + +Sqlite tests use a in-memory database, nothing is written on the file system. + +The PHPUnit config file is `tests/units.sqlite.xml`. +From your Kanboard directory, run the command `phpunit -c tests/units.sqlite.xml`. + +Example: + +```bash +phpunit -c tests/units.sqlite.xml + +PHPUnit 5.0.0 by Sebastian Bergmann and contributors. + +............................................................... 63 / 649 ( 9%) +............................................................... 126 / 649 ( 19%) +............................................................... 189 / 649 ( 29%) +............................................................... 252 / 649 ( 38%) +............................................................... 315 / 649 ( 48%) +............................................................... 378 / 649 ( 58%) +............................................................... 441 / 649 ( 67%) +............................................................... 504 / 649 ( 77%) +............................................................... 567 / 649 ( 87%) +............................................................... 630 / 649 ( 97%) +................... 649 / 649 (100%) + +Time: 1.22 minutes, Memory: 151.25Mb + +OK (649 tests, 43595 assertions) +``` + +### Test with Mysql + +You must have Mysql or MariaDb installed on localhost. + +By default, those credentials are used: + +- Hostname: **localhost** +- Username: **root** +- Password: none +- Database: **kanboard_unit_test** + +For each execution the database is dropped and created again. + +The PHPUnit config file is `tests/units.mysql.xml`. +From your Kanboard directory, run the command `phpunit -c tests/units.mysql.xml`. + +### Test with Postgresql + +You must have Postgresql installed on localhost. + +By default, those credentials are used: + +- Hostname: **localhost** +- Username: **postgres** +- Password: none +- Database: **kanboard_unit_test** + +Be sure to allow the user `postgres` to create and drop databases. +The database is recreated for each execution. + +The PHPUnit config file is `tests/units.postgres.xml`. +From your Kanboard directory, run the command `phpunit -c tests/units.postgres.xml`. + +Integration Tests +----------------- + +Integration tests are mainly used to test the API. +The test suites are making real HTTP calls to the application that run inside a container. + +### Requirements + +- PHP +- Composer +- Unix operating system (Mac OS or Linux) +- Docker +- Docker Compose + +### Running integration tests + +Integration tests are using Docker containers. +There are 3 different environment available to run tests against each supported database. + +You can use these commands to run each test suite: + +```bash +# Run tests with Sqlite +make integration-test-sqlite + +# Run tests with Mysql +make integration-test-mysql + +# Run tests with Postgres +make integration-test-postgres +``` + +Acceptance Tests +---------------- + +Acceptance tests (also sometimes known as end-to-end tests, and functional tests) test the actual functionality of the UI in a browser using Selenium. + +In order to run these tests you must have [Selenium Standalone Server](http://www.seleniumhq.org/download/) installed, and a compatible version of Firefox. + +The PHPUnit config file is `tests/acceptance.xml`. +With Selenium and the Kanboard app running, from your Kanboard directory, run the command `make test-browser`. This will initiate the testing suite and you will see Firefox open automatically and perform the actions specified in the acceptance tests. + +Example: + +```bash +$ make test-browser +PHPUnit 4.8.26 by Sebastian Bergmann and contributors. + +.. + +Time: 5.59 seconds, Memory: 5.25MB + +OK (2 tests, 5 assertions) +``` + + +Continuous Integration with Travis-CI +------------------------------------- + +After each commit pushed on the main repository, unit tests are executed across 5 different versions of PHP: + +- PHP 7.0 +- PHP 5.6 +- PHP 5.5 +- PHP 5.4 +- PHP 5.3 + +Each version of PHP is tested against the 3 supported database: Sqlite, Mysql and Postgresql. + +The Travis config file `.travis.yml` is located on the root directory of Kanboard. |