update docs and remove references to testcafe

This commit is contained in:
Lukas Hass 2022-02-18 16:11:26 +01:00
parent 3d86204db6
commit ed0e49d16e
No known key found for this signature in database
GPG Key ID: 7C8CEF72C4039178
7 changed files with 51 additions and 61 deletions

View File

@ -67,46 +67,20 @@ $ docker-compose exec back yarn run pretty
WorkAdventure is based on a video game engine (Phaser), and video games are not the easiest programs to unit test.
Nevertheless, if your code can be unit tested, please provide a unit test (we use Jasmine), or an end-to-end test (we use Testcafe).
Nevertheless, if your code can be unit tested, please provide a unit test (we use Jasmine), or an end-to-end test (we use Playwright).
If you are providing a new feature, you should setup a test map in the `maps/tests` directory. The test map should contain
some description text describing how to test the feature.
* if the features is meant to be manually tested, you should modify the `maps/tests/index.html` file to add a reference
to your newly created test map
* if the features can be automatically tested, please provide a testcafe test
* if the features can be automatically tested, please provide an end-to-end test
#### Running testcafe tests
#### Running end-to-end tests
End-to-end tests are available in the "/tests" directory.
To run these tests locally:
```console
$ LIVE_RELOAD=0 docker-compose up -d
$ cd tests
$ npm install
$ npm run test
```
Note: If your tests fail on a Javascript error in "sockjs", this is due to the
Webpack live reload. The Webpack live reload feature is conflicting with testcafe. This is why we recommend starting
WorkAdventure with the `LIVE_RELOAD=0` environment variable.
End-to-end tests can take a while to run. To run only one test, use:
```console
$ npm run test -- tests/[name of the test file].ts
```
You can also run the tests inside a container (but you will not have visual feedbacks on your test, so we recommend using
the local tests).
```console
$ LIVE_RELOAD=0 docker-compose up -d
# Wait 2-3 minutes for the environment to start, then:
$ PROJECT_DIR=$(pwd) docker-compose -f docker-compose.testcafe.yml up
```
More information on running end-to-end tests can be found in the [`/tests/README`](/tests/README.md).
### A bad wording or a missing language

View File

@ -40,7 +40,7 @@
{
"fontfamily":"Sans Serif",
"pixelsize":11,
"text":"Test:\nThis test is to be run automatically using testcafe",
"text":"Test:\nThis test is to be run automatically using playwright",
"wrap":true
},
"type":"",
@ -79,4 +79,4 @@
"type":"map",
"version":1.5,
"width":10
}
}

View File

@ -40,7 +40,7 @@
{
"fontfamily":"Sans Serif",
"pixelsize":11,
"text":"Test:\nThis test is to be run automatically using testcafe\n\n(2nd file)",
"text":"Test:\nThis test is to be run automatically using playwright\n\n(2nd file)",
"wrap":true
},
"type":"",
@ -123,4 +123,4 @@
"type":"map",
"version":1.5,
"width":10
}
}

View File

@ -1,5 +0,0 @@
FROM testcafe/testcafe:1.18.2
USER root
RUN apk add docker-compose
USER user

View File

@ -1,20 +1,52 @@
End-to-end tests
# End-to-end tests
This directory contains automated end to end tests.
To run them locally:
## Installation
```console
$ npm install
$ ADMIN_API_TOKEN=123 npm test
```bash
npm install
npx playwright install --with-deps
```
## Run on development environment
Start WorkAdventure with:
```bash
docker-compose up -d
```
Wait 2-3 minutes for the environment to start, then:
Start the tests with:
```bash
ADMIN_API_TOKEN=123 npm run test
```
You'll need to adapt the `ADMIN_API_TOKEN` to the value you use in your `.env` file.
Alternatively, you can use docker-compose to run the tests:
## Run on production like environment
```console
$ PROJECT_DIR=$(pwd) docker-compose -f docker-compose.testcafe.yml up --exit-code-from testcafe
Start WorkAdventure with:
```bash
docker-compose -f docker-compose.yaml -f docker-compose.e2e.yml up -d --build
```
Note: by default, tests are running in Chrome locally and in Chromium in the Docker image.
Start the tests with:
```bash
ADMIN_API_TOKEN=123 npm run test-prod-like
```
You'll need to adapt the `ADMIN_API_TOKEN` to the value you use in your `.env` file.
## Run selected tests
End-to-end tests can take a while to run. To run only one test in one browser, use:
```bash
ADMIN_API_TOKEN=123 npm run test -- [name of the test file] --project=[chromium|firefox|webkit]
```

View File

@ -6,7 +6,7 @@
"dockerode": "^3.3.1"
},
"scripts": {
"test": "ADMIN_API_TOKEN=123 playwright test",
"test": "playwright test",
"test-prod-like": "OVERRIDE_DOCKER_COMPOSE=docker-compose.e2e.yml npm run test"
}
}

View File

@ -8,23 +8,12 @@ const path = require("path");
const fs = require('fs');
/**
* Execute Docker compose, passing the correct host directory (in case this is run from the TestCafe container)
* Execute Docker compose, passing the correct host directory
*/
export function dockerCompose(command: string): void {
let param = '';
const projectDir = process.env.PROJECT_DIR;
const overrideDockerCompose = process.env.OVERRIDE_DOCKER_COMPOSE;
if (!projectDir && fs.existsSync('/project')) {
// We are probably in the docker-image AND we did not pass PROJECT_DIR env variable
throw new Error('Incorrect docker-compose command used to fire testcafe tests. You need to add a PROJECT_DIR environment variable. Please refer to the CONTRIBUTING.md guide');
}
if (projectDir) {
const dirName = path.basename(projectDir);
param = '--project-name '+dirName+' --project-directory '+projectDir;
}
if (overrideDockerCompose) {
param += ' -f docker-compose.yaml -f '+overrideDockerCompose;
}