integrate it into the ci

This commit is contained in:
kharhamel 2020-04-14 20:16:51 +02:00
parent a2ed7164e4
commit 56093201fb
3 changed files with 29 additions and 3 deletions

View File

@ -65,3 +65,21 @@ jobs:
- name: "Jasmine"
run: yarn test
working-directory: "back"
e2e:
name: "End to end testing with cypress"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2.0.0"
- name: "Init .env"
run: "cp .env.template .env"
- name: "Init containers"
run: "docker-compose -f docker-compose.yaml -f docker-compose.ci.yml run --rm wait_app" #start the containers and then wait for the website to be online
- name: "Run cypress"
run: "docker-compose -f docker-compose.yaml -f docker-compose.ci.yml up --exit-code-from cypress cypress" # run cypress in docker-compose and get its exit code

View File

@ -1,17 +1,17 @@
version: '3.3'
version: '3'
services:
wait_app:
image: dadarek/wait-for-dependencies
depends_on:
- traefik
- reverse-proxy
command: front:8080
cypress:
# the Docker image to use from https://github.com/cypress-io/cypress-docker-images
image: "cypress/included:3.2.0"
depends_on:
- traefik
- reverse-proxy
environment:
# pass base url to test pointing at the web application
- CYPRESS_baseUrl=http://front:8080

View File

@ -3,6 +3,8 @@
This project use [cypress](https://www.cypress.io/) to do functional testing of the website.
Unfortunately we cannot integrate it with docker-compose for the moment, so you will need to install some packages locally on your pc.
## Getting Started
You will need to install theses dependancies on linux (don't know about mac):
```bash
@ -26,3 +28,9 @@ npm run cy:open
The first command will run all tests in the terminal, while the second will open the interactive task runner which allow you to easily manage the test workflow
[More details here](https://docs.cypress.io/guides/getting-started/testing-your-app.html#Step-1-Start-your-server)
## How to test a game
Cypress cannot "see" and so cannot directly manipulate the canva created by Phaser.
This means we have to do workarounds such as exposing core objects in the window so that cypress can manipulate them or doing console that cypress can catch.