Adding end-to-end tests
The first test is testing a tricky cache scenario with the back when testing variables. The end-to-end package used is testcafe.
This commit is contained in:
parent
d8ecae64f0
commit
a82f4e1813
17 changed files with 9243 additions and 5 deletions
1
tests/.gitignore
vendored
Normal file
1
tests/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/node_modules
|
12
tests/.testcaferc.js
Normal file
12
tests/.testcaferc.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
const BROWSER = process.env.BROWSER || "chrome --use-fake-device-for-media-stream";
|
||||
|
||||
module.exports = {
|
||||
"browsers": BROWSER,
|
||||
"hostname": "localhost",
|
||||
"skipJsErrors": true,
|
||||
"src": "tests/",
|
||||
"screenshots": {
|
||||
"path": "screenshots/",
|
||||
"takeOnFails": true
|
||||
}
|
||||
}
|
18
tests/README.md
Normal file
18
tests/README.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
End-to-end tests
|
||||
|
||||
This directory contains automated end to end tests.
|
||||
|
||||
To run them locally:
|
||||
|
||||
```console
|
||||
$ npm install
|
||||
$ npm test
|
||||
```
|
||||
|
||||
Alternatively, you can use docker-compose to run the tests:
|
||||
|
||||
```console
|
||||
$ docker-compose -f docker-compose.testcafe.yml up
|
||||
```
|
||||
|
||||
Note: by default, tests are running in Chrome locally and in Chromium in the Docker image.
|
8915
tests/package-lock.json
generated
Normal file
8915
tests/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
8
tests/package.json
Normal file
8
tests/package.json
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"devDependencies": {
|
||||
"testcafe": "^1.17.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "testcafe"
|
||||
}
|
||||
}
|
1
tests/screenshots/.gitignore
vendored
Normal file
1
tests/screenshots/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*
|
41
tests/tests/test.ts
Normal file
41
tests/tests/test.ts
Normal file
|
@ -0,0 +1,41 @@
|
|||
const fs = require('fs')
|
||||
|
||||
fixture `Variables`
|
||||
.page `http://play.workadventure.localhost/_/global/maps.workadventure.localhost/tests/Variables/Cache/variables_tmp.json`;
|
||||
|
||||
test("Test that variables cache in the back don't prevent setting a variable in case the map changes", async t => {
|
||||
// Let's start by visiting a map that DOES not have the variable.
|
||||
fs.copyFileSync('../maps/tests/Variables/Cache/variables_cache_1.json', '../maps/tests/Variables/Cache/variables_tmp.json');
|
||||
|
||||
await t
|
||||
.typeText('input[name="loginSceneName"]', 'foo')
|
||||
.click('button.loginSceneFormSubmit')
|
||||
.click('button.selectCharacterButtonRight')
|
||||
.click('button.selectCharacterButtonRight')
|
||||
.click('button.selectCharacterSceneFormSubmit')
|
||||
.click('button.letsgo');
|
||||
//.takeScreenshot('before_switch.png');
|
||||
|
||||
// Let's REPLACE the map by a map that has a new variable
|
||||
// At this point, the back server contains a cache of the old map (with no variables)
|
||||
fs.copyFileSync('../maps/tests/Variables/Cache/variables_cache_2.json', '../maps/tests/Variables/Cache/variables_tmp.json');
|
||||
await t.openWindow('http://play.workadventure.localhost/_/global/maps.workadventure.localhost/tests/Variables/Cache/variables_tmp.json');
|
||||
|
||||
await t.resizeWindow(960, 800);
|
||||
|
||||
await t
|
||||
.typeText('input[name="loginSceneName"]', 'foo')
|
||||
.click('button.loginSceneFormSubmit')
|
||||
.click('button.selectCharacterButtonRight')
|
||||
.click('button.selectCharacterButtonRight')
|
||||
.click('button.selectCharacterSceneFormSubmit')
|
||||
.click('button.letsgo');
|
||||
//.takeScreenshot('after_switch.png');
|
||||
|
||||
const messages = await t.getBrowserConsoleMessages();
|
||||
|
||||
const logs = messages['log'];
|
||||
const lastMessage = logs.pop();
|
||||
// Let's check we successfully manage to save the variable value.
|
||||
await t.expect(lastMessage).eql('SUCCESS!');
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue