74 lines
1.7 KiB
Markdown
74 lines
1.7 KiB
Markdown
# Build
|
|
|
|
**Authelia** is written in Typescript and built with [Grunt](https://gruntjs.com/).
|
|
|
|
In order to build **Authelia**, you need to make sure Node v8 and NPM is
|
|
installed on your machine.
|
|
|
|
Then, run the following command install the node modules:
|
|
|
|
npm install
|
|
|
|
And, this command to build **Authelia** under dist/:
|
|
|
|
./node_modules/.bin/grunt build
|
|
|
|
## Details
|
|
|
|
### Build
|
|
|
|
**Authelia** is made of two components: the client and the server.
|
|
|
|
The client is written in Typescript and uses jQuery. It is built as part of
|
|
the global `build` Grunt command.
|
|
|
|
The server is written in Typescript. It is also built as part of the global `build`
|
|
Grunt command.
|
|
|
|
### Tests
|
|
|
|
Grunt also handles the commands to run the tests. There are several type of
|
|
tests for **Authelia**: unit tests for the server, the client and a shared
|
|
library and an integration test suite testing both components together.
|
|
|
|
The unit tests are written with Mocha while integration tests are using
|
|
Cucumber and Mocha.
|
|
|
|
### Unit tests
|
|
|
|
To run the client unit tests, run:
|
|
|
|
./node_modules/.bin/grunt test-client
|
|
|
|
To run the server unit tests, run:
|
|
|
|
./node_modules/.bin/grunt test-server
|
|
|
|
To run the shared library unit tests, run:
|
|
|
|
./node_modules/.bin/grunt test-shared
|
|
|
|
### Integration tests
|
|
|
|
Integration tests are mainly based on Selenium so they
|
|
need a complete environment to be run.
|
|
|
|
You can start by making sure **Authelia** is built with:
|
|
|
|
grunt build
|
|
|
|
and the docker image is built with:
|
|
|
|
./scripts/example-commit/dc-example.sh build
|
|
|
|
Then, start the environment with:
|
|
|
|
./scripts/example-commit/dc-example.sh up -d
|
|
|
|
And run the tests with:
|
|
|
|
./node_modules/.bin/grunt test-int
|
|
|
|
Note: the Cucumber tests are hard to maintain and will therefore
|
|
be refactored to use Mocha instead.
|