summaryrefslogtreecommitdiff
path: root/docs/content/en/contributing/development/build-and-test.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/content/en/contributing/development/build-and-test.md')
-rw-r--r--docs/content/en/contributing/development/build-and-test.md104
1 files changed, 104 insertions, 0 deletions
diff --git a/docs/content/en/contributing/development/build-and-test.md b/docs/content/en/contributing/development/build-and-test.md
new file mode 100644
index 000000000..8c0d34735
--- /dev/null
+++ b/docs/content/en/contributing/development/build-and-test.md
@@ -0,0 +1,104 @@
+---
+title: "Building and Testing"
+description: "Building and Testing Authelia."
+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/build-and-dev.html
+---
+
+__Authelia__ is built a [React] frontend user portal bundled in a [Go] application which acts as a basic webserver for
+the [React] assets and a dedicated API.
+
+The GitHub repository comes with a CLI dedicated to developers called
+[authelia-scripts](reference-authelia-scripts.md) which can be setup by looking at
+[Reference: authelia-scripts](reference-authelia-scripts.md).
+
+In order to build and contribute to __Authelia__, you need to make sure that you have looked at the
+[Environment](environment.md) guide to configure your development environment.
+
+## Get started
+
+In order to ease development, __Authelia__ uses the concept of [suites] to run Authelia from source code so that your
+patches are included. This is a kind of virtual environment running __Authelia__ in a complete ecosystem
+(LDAP, Redis, SQL server). Note that __Authelia__ is hot-reloaded in the environment so that your patches are instantly
+included.
+
+The next command starts the suite called *Standalone*:
+
+```bash
+authelia-scripts suites setup Standalone
+```
+
+Most of the suites are using docker-compose to bootstrap the environment. Therefore, you can check the logs of all
+application by running the following command on the component you want to monitor.
+
+```bash
+docker logs authelia_authelia-backend_1 -f
+```
+
+Then, edit the code and observe how __Authelia__ is automatically reloaded.
+
+### Unit tests
+
+To run the unit tests, run:
+
+```bash
+authelia-scripts unittest
+```
+
+### Integration tests
+
+Integration tests are located under the `internal/suites` directory and are based on Selenium. A suite is a combination
+of environment and tests. Executing a suite therefore means starting the environment, running the tests and tearing down
+the environment. Each step can be run independently:
+
+```bash
+# List the available suites
+$ authelia-scripts suites list
+Standalone
+DuoPush
+LDAP
+Traefik
+
+# Start the environment of Standalone suite.
+$ authelia-scripts suites setup Standalone
+
+# Run the tests related to the currently running suite.
+$ authelia-scripts suites test
+
+# Tear down the environment
+$ authelia-scripts suites teardown Standalone
+```
+
+In order to test all suites (approx 30 minutes), you need to make sure there is no currently running sui te and then you
+should run:
+
+```bash
+authelia-scripts suites test
+```
+
+Also, you don't need to start the suite before testing it. Given you're not running any suite, just use the following
+command to test the *Standalone* suite.
+
+```bash
+authelia-scripts suites test Standalone
+```
+
+The suite will be spawned, tests will be run and then the suite will be torn down automatically.
+
+[suites]: ./integration-suites.md
+[React]: https://reactjs.org/
+[go]: https://go.dev/dl/
+[Node.js]: https://nodejs.org/en/download/
+[Docker]: https://docs.docker.com/get-docker/
+[Docker Compose]: https://docs.docker.com/compose/install/
+[golangci-lint]: https://golangci-lint.run/usage/install/
+[goimports-reviser]: https://github.com/incu6us/goimports-reviser#install