diff --git a/docs/dev/03_run_tests.rst b/docs/dev/03_run_tests.rst new file mode 100644 index 0000000000000000000000000000000000000000..4a265e041f1c877af72ee79c7f48a2f15a586008 --- /dev/null +++ b/docs/dev/03_run_tests.rst @@ -0,0 +1,72 @@ +Running tests and reports +========================= + +Running default test suite +-------------------------- + +The test suite can be run using the `tox` tool:: + + poetry run tox + + +Enabling Selenium browser tests +------------------------------- + +The test suite contains tests that use Selenium to do browser based tests. +They need to be enabled when running the test suite, which can be done by +setting certain environment variables: + ++------------------------+------------------------------------------------------+------------------------------+ +| Variable | Meaning | Example | ++========================+======================================================+==============================+ +| TEST_SELENIUM_BROWSERS | List of webdrivers to test against, comma-separated. | chrome,firefox | +| TEST_SELENIUM_HUB | Address of Selenium hub if using remote grid | http://127.0.0.1:4444/wd/hub | +| TEST_HOST | Hostname reachable from Selenium for live server | 172.17.0.1 | +| TEST_SCREENSHOT_PATH | Path to directory to create screenshots in | ./screenshots | ++------------------------+------------------------------------------------------+------------------------------+ + +Selenium tests are enabled if `TEST_SELENIUM_BROWSERS` is non-empty. + +To set variables, use env to wrap the tox ommand:: + + poetry run env TEST_SELENIUM_BROWSERS=chrome,firefox tox + + +Using a Selenium hub on local Docker host +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +One way to setup Selenium is to use the official images on the local +machine. + +First, get Selenium Hub and one or more browser nodes up and running:: + + docker run -d -p 4444:4444 --name selenium-hub selenium/hub + docker run -d --link selenium-hub:hub selenium/node-chrome + docker run -d --link selenium-hub:hub selenium/node-firefox + +After that, you can run the test suite, setting the needed variables to use +Docker Hub:: + + poetry run env \ + TEST_SELENIUM_BROWSERS=chrome,firefox \ + TEST_SELENIUM_HUB=http://127.0.0.1:4444 \ + TEST_HOST=172.17.0.1 \ + tox + +The `TEST_HOST` variable is set to the Docker host's IP address, where the +Selenium nodes can access DJango's live server. Django automatically +configures the live server to be reachable if a Selenium hub is used. + + +Taking screenshots +~~~~~~~~~~~~~~~~~~ + +The browser test suites automatically take screenshots at certain steps if +enabled in the test run. This can be used to visually verify that views +look like they should or for documentation purposes. + +To enable screenshots, add the `TEST_SCREENSHOT_PATH` environment variable +when running the tests. + +If runnin multiple browsers, screenshots are placed in separate directories +per browser.