# Gradido End-to-End Testing with [Cypress](https://www.cypress.io/) (CI-ready via Docker)

A setup to show-case Cypress as an end-to-end testing tool for Gradido running in a Docker container.
The tests are organized in feature files written in Gherkin syntax.


## Features under test

So far these features are initially tested
- [User authentication](https://github.com/gradido/gradido/blob/master/e2e-tests/cypress/tests/cypress/e2e/User.Authentication.feature)
- [User profile - change password](https://github.com/gradido/gradido/blob/master/e2e-tests/cypress/tests/cypress/e2e/UserProfile.ChangePassword.feature)
- [User registration]((https://github.com/gradido/gradido/blob/master/e2e-tests/cypress/tests/cypress/e2e/User.Registration.feature)) (WIP)


## Precondition

Before running the tests, change to the repo's root directory (gradido).

### Boot up the system under test

```bash
docker-compose up
```

### Seed the database

The database has to be seeded upfront to every test run.

```bash
# change to the backend directory 
cd /path/to/gradido/gradido/backend

# install all dependencies
yarn 

# seed the database (everytime before running the tests)
yarn seed
```

## Execute the test

This setup will be integrated in the Gradido Github Actions to automatically support the CI/CD process.
For now the test setup can only be used locally in two modes.

### Run Cypress directly from the code

```bash
# change to the tests directory 
cd /path/to/gradido/e2e-tests/cypress/tests

# install all dependencies
yarn install

# a) run the tests on command line
yarn cypress run

# b) open the Cypress GUI to run the tests in interactive mode
yarn cypress open
```


### Run Cyprss from a separate Docker container

```bash
# change to the cypress directory 
cd /path/to/gradido/e2e-tests/cypress/

# build a Docker image from the Dockerfile
docker build -t gradido_e2e-tests-cypress .

# run the Docker image and execute the given tests
docker run -it --network=host gradido_e2e-tests-cypress yarn cypress-e2e
```
