summaryrefslogtreecommitdiff
path: root/docs/content/en/contributing/development/integration-suites.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/content/en/contributing/development/integration-suites.md')
-rw-r--r--docs/content/en/contributing/development/integration-suites.md83
1 files changed, 83 insertions, 0 deletions
diff --git a/docs/content/en/contributing/development/integration-suites.md b/docs/content/en/contributing/development/integration-suites.md
new file mode 100644
index 000000000..bf1a0babf
--- /dev/null
+++ b/docs/content/en/contributing/development/integration-suites.md
@@ -0,0 +1,83 @@
+---
+title: "Integration Suites"
+description: "Integration Suites."
+lead: "This section covers the build process and how to perform tests in development."
+date: 2022-05-15T13:52:27+10:00
+draft: false
+images: []
+menu:
+ contributing:
+ parent: "development"
+weight: 240
+toc: true
+aliases:
+ - /docs/contributing/suites.html
+---
+
+__Authelia__ is a single component in interaction with many others in a complete ecosystem. Consequently, testing the
+features is not as easy as we might think. In order to solve this problem, Authelia came up with the concept of suite
+which is a kind of virtual environment for Authelia and a set of tests. A suite can setup components such as NGINX,
+Redis or MariaDB in which __Authelia__ can run and be tested.
+
+This abstraction allows to prepare an environment for manual testing during development and also to craft and run
+integration tests efficiently.
+
+## Start a suite
+
+Starting a suite called *Standalone* is done with the following command:
+
+```bash
+authelia-scripts suites setup Standalone
+```
+
+This command deploys the environment of the suite.
+
+## Run tests of a suite
+
+### Run tests of running suite
+
+If a suite is already running, you can simply type the test command that will run the test related to the currently
+running suite:
+
+```bash
+authelia-scripts suites test
+```
+
+### Run tests of non-running suite
+
+However, if no suite is running yet and you just want to run the tests of a specific suite like *HighAvailability*, you
+can do so with the next command:
+
+```bash
+authelia-scripts suites test HighAvailability
+```
+
+### Run all tests of all suites
+
+Running all tests is easy. Make sure that no suite is already running and run:
+
+```bash
+authelia-scripts suites test
+```
+
+### Run tests in headless mode
+
+As you might have noticed, the tests are run using chromedriver and selenium. It means that the tests open an instance
+of Chrome that might interfere with your other activities. In order to run the tests in headless mode to avoid the
+interference, use the following command:
+
+```bash
+authelia-scripts suites test --headless
+```
+
+## Create a suite
+
+Creating a suite is as easy. Let's take the example of the __Standalone__ suite:
+
+* __suite_standalone.go__ - It defines the setup and teardown phases. It likely uses docker-compose to setup the
+ ecosystem. This file also defines the timeouts.
+* __suite_standalone_test.go__ - It defines the set of tests to run against the suite.
+* __Standalone__ directory - It contains resources required by the suite and likely mounted in the containers.
+
+A suite can also be much more complex like setting up a complete Kubernetes ecosystem. You can check the Kubernetes
+suite as example.