diff --git a/docs/gitlab/drupal/index.md b/docs/gitlab/drupal/index.md
index d1abda2ce6ba5ec9e3b1433dd4252baa07672ec5..c378463973577d80cff132ba27bbffcfc82760fb 100644
--- a/docs/gitlab/drupal/index.md
+++ b/docs/gitlab/drupal/index.md
@@ -12,14 +12,14 @@ tags:
 This project contains a number of pre-configured tasks for GitLab CI/CD that
 allow to run very powerful pipelines which contain the following stages:
 
-- .pre (predefined)
-- validate
-- execute
-- build (predefined)
-- buildprod
-- prepare
-- test (predefined)
-- deploy (predefined)
+- [.pre (predefined)](#pre)
+- [validate](#validate)
+- [execute](#execute)
+- [build (predefined)](#build)
+- [buildprod](#build-prod)
+- [prepare](#prepare)
+- [test (predefined)](#test)
+- [deploy (predefined)](#deploy)
 - release
 - finalize
 - postprocess
@@ -29,26 +29,26 @@ We have a predefined `execute` job called `LakeDrops`, which looks like this:
 
 - execute
     - LakeDrops
-        - buildprod
-            - Build Prod Site
-            - Build Prod Site NG
-        - build
-            - Build Site
-            - Build Theme
-            - Check 4 Outdated Packages
-            - Check 4 Security Vulnerability Advisories
-            - Download DB
-            - Download DB NG
-        - prepare
-            - Import DB
-            - Import DB NG
-            - Import Local DB
-            - Update DB 
-        - test
-            - Test Code Style
-            - Test PHPUnit
-            - Test Backstop
-            - Test Cypress E2E
+        - [buildprod](#build-prod)
+            - [Build Prod Site](#build-prod-site)
+            - [Build Prod Site NG](#build-prod-site-ng)
+        - [build (predefined)](#build)
+            - [Build Site](#build-site)
+            - [Build Theme](#build-theme)
+            - [Check 4 Outdated Packages](#check-4-outdated-packages)
+            - [Check 4 Security Vulnerability Advisories](#check-4-security-vulnerability-advisories)
+            - [Download DB](#download-db)
+            - [Download DB NG](#download-db-ng)
+        - [prepare](#prepare)
+            - [Import DB](#import-db)
+            - [Import DB NG](#import-db-ng)
+            - [Import Local DB](#import-local-db)
+            - [Update DB](#update-db) 
+        - [test](#test)
+            - [Test Code Style](#test-code-style)
+            - [Test PHPUnit](#test-phpunit)
+            - [Test Backstop](#test-backstop)
+            - [Test Cypress E2E](#test-cypress-e2e)
         - finalize
             - Shut Down Docker Project
 
@@ -193,7 +193,11 @@ The following jobs must run before successfully:
 
 - [Build Prod Site](#build-prod-site)
 
+#### Check 4 Outdated Packages
+
+
 
+#### Check 4 Security Vulnerability Advisories
 
 #### Download DB
 
@@ -266,7 +270,7 @@ Rules, when the job should run:
 
 ##### Import DB Default Anchor
 
-We start a docker image for php with the specifies versions:
+We start a docker image for `php` with the specifies versions:
 
 - `PHP_MAJOR_VERSION`
 - `PHP_MINOR_VERSION`
@@ -345,6 +349,63 @@ Rules, when the job should run:
 
 - the tests are enabled by `$DISABLE_CI_TESTS` != "1"
 
+### Test
+
+After the preparation and the setup of a Drupal database, we can execute tests. This happens in this stage.
+
+All tests use the two [Internal Test Stages](#internal-test-stages).
+
+#### Test Code Style
+
+This job uses [PHP Code Sniffer](../../dev_tools/test.md#php-code-sniffer) and stores the artefacts in `phpcs`.
+
+Rules, when the job should run:
+
+- the code style tests are enabled by `$DISABLE_CI_TEST_CODESTYLE` != "1"
+
+#### Test PHPUnit
+
+
+#### Test Backstop
+
+
+#### Test Cypress E2E
+
+#### Internal Test Stages
+
+Every test stage needs internal reoccurring definitions.
+
+**.test_lakedrops_default**
+
+We start a docker image for `php` with the specifies versions:
+
+- `PHP_MAJOR_VERSION`
+- `PHP_MINOR_VERSION`
+
+The following jobs must run before successfully:
+
+- [Build Site](#build-site)
+
+But this job can start running when the [Build Site](#build-site) has finished, so other
+test jobs can run in parallel.
+
+After running, we copy the logs from the `php` container to the current directory.
+
+
+**.test_lakedrops_theme**
+
+The following jobs must run before successfully:
+
+- [Build Site](#build-site)
+- [Build Theme](#build-theme)
+
+In the `before_script` part, we copy the `$THEME_CSS_PATH` into the `php` container, if the
+`$THEME_BUILD` variable ist set to "yes".
+
+In `after_script` we remove `$THEME_CSS_PATH` again.
+
+####
+
 ### Deploy
 
 This stage handles the deployment of the produced build artefact.
@@ -410,7 +471,7 @@ This internal job, you find in [mixins.yml](https://gitlab.lakedrops.com/gitlab-
 
 Mainly, we care about getting access to:
 
-- the host `${CI_SERVER_HOST}` with `ssh` via `$SSH_PRIVATE_KEY`
+- the host `$CI_SERVER_HOST` with `ssh` via `$SSH_PRIVATE_KEY`
 - GitLab Login via `$GITLAB_ACCESS_TOKEN` and `$GITLAB_PRIVATE_TOKEN`
 - Docker configuration via `$DOCKER_AUTH_CONFIG`