Translating retry connection error message and fixing E2E tests
This commit is contained in:
parent
51c3f1d972
commit
0be77164ec
@ -1,5 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { errorStore, hasClosableMessagesInErrorStore } from "../../Stores/ErrorStore";
|
import { errorStore, hasClosableMessagesInErrorStore } from "../../Stores/ErrorStore";
|
||||||
|
import { _ } from "../../Translator/Translator";
|
||||||
|
|
||||||
function close(): boolean {
|
function close(): boolean {
|
||||||
errorStore.clearClosableMessages();
|
errorStore.clearClosableMessages();
|
||||||
@ -8,7 +9,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="error-div nes-container is-dark is-rounded" open>
|
<div class="error-div nes-container is-dark is-rounded" open>
|
||||||
<p class="nes-text is-error title">Error</p>
|
<p class="nes-text is-error title">{_("error.error")}</p>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
{#each $errorStore as error}
|
{#each $errorStore as error}
|
||||||
<p>{error.message}</p>
|
<p>{error.message}</p>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import * as rax from "retry-axios";
|
import * as rax from "retry-axios";
|
||||||
import { errorStore } from "../Stores/ErrorStore";
|
import { errorStore } from "../Stores/ErrorStore";
|
||||||
|
import { _ } from "../Translator/Translator";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This instance of Axios will retry in case of an issue and display an error message as a HTML overlay.
|
* This instance of Axios will retry in case of an issue and display an error message as a HTML overlay.
|
||||||
@ -26,10 +27,13 @@ axiosWithRetry.defaults.raxConfig = {
|
|||||||
console.log(err);
|
console.log(err);
|
||||||
console.log(cfg);
|
console.log(cfg);
|
||||||
console.log(`Retry attempt #${cfg?.currentRetryAttempt} on URL '${err.config.url}'`);
|
console.log(`Retry attempt #${cfg?.currentRetryAttempt} on URL '${err.config.url}'`);
|
||||||
errorStore.addErrorMessage("Unable to connect to WorkAdventure. Are you connected to internet?", {
|
errorStore.addErrorMessage(
|
||||||
closable: false,
|
_("error.connection-retry.unable-to-connect-to-workAdventure-are-you-connected-to-internet"),
|
||||||
id: "axios_retry",
|
{
|
||||||
});
|
closable: false,
|
||||||
|
id: "axios_retry",
|
||||||
|
}
|
||||||
|
);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -9,6 +9,10 @@
|
|||||||
"title": "Connection rejected",
|
"title": "Connection rejected",
|
||||||
"sub-title": "You cannot join the World. Try again later {{error}}.",
|
"sub-title": "You cannot join the World. Try again later {{error}}.",
|
||||||
"details": "If you want more information, you may contact administrator or contact us at: hello@workadventu.re"
|
"details": "If you want more information, you may contact administrator or contact us at: hello@workadventu.re"
|
||||||
}
|
},
|
||||||
|
"connection-retry": {
|
||||||
|
"unable-to-connect-to-workAdventure-are-you-connected-to-internet": "Unable to connect to WorkAdventure. Are you connected to internet?"
|
||||||
|
},
|
||||||
|
"error": "Error"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,10 @@
|
|||||||
"title": "Connexion rejetée",
|
"title": "Connexion rejetée",
|
||||||
"sub-title": "Vous ne pouvez pas rejoindre le monde. Réessayer plus tard {{error}}.",
|
"sub-title": "Vous ne pouvez pas rejoindre le monde. Réessayer plus tard {{error}}.",
|
||||||
"details": "Si vous souhaitez obtenir de plus amples informations, vous pouvez contacter l'administrateur ou nous contacter à l'adresse suivante: hello@workadventu.re"
|
"details": "Si vous souhaitez obtenir de plus amples informations, vous pouvez contacter l'administrateur ou nous contacter à l'adresse suivante: hello@workadventu.re"
|
||||||
}
|
},
|
||||||
|
"connection-retry": {
|
||||||
|
"unable-to-connect-to-workAdventure-are-you-connected-to-internet": "Impossible de se connecter à WorkAdventure. Etes vous connecté à Internet?"
|
||||||
|
},
|
||||||
|
"error": "Erreur"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ import {assertLogMessage} from "./utils/log";
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const Docker = require('dockerode');
|
const Docker = require('dockerode');
|
||||||
import { Selector } from 'testcafe';
|
import { Selector } from 'testcafe';
|
||||||
import {login} from "./utils/roles";
|
import {login, resetLanguage} from "./utils/roles";
|
||||||
import {findContainer, rebootBack, rebootPusher, resetRedis, startContainer, stopContainer} from "./utils/containers";
|
import {findContainer, rebootBack, rebootPusher, resetRedis, startContainer, stopContainer} from "./utils/containers";
|
||||||
|
|
||||||
fixture `Reconnection`
|
fixture `Reconnection`
|
||||||
@ -16,6 +16,8 @@ test("Test that connection can succeed even if WorkAdventure starts while pusher
|
|||||||
|
|
||||||
const errorMessage = Selector('.error-div');
|
const errorMessage = Selector('.error-div');
|
||||||
|
|
||||||
|
await resetLanguage('en-US');
|
||||||
|
|
||||||
await t
|
await t
|
||||||
.navigateTo('http://play.workadventure.localhost/_/global/maps.workadventure.localhost/tests/mousewheel.json')
|
.navigateTo('http://play.workadventure.localhost/_/global/maps.workadventure.localhost/tests/mousewheel.json')
|
||||||
.expect(errorMessage.innerText).contains('Unable to connect to WorkAdventure')
|
.expect(errorMessage.innerText).contains('Unable to connect to WorkAdventure')
|
||||||
|
29
tests/tests/translate.ts
Normal file
29
tests/tests/translate.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import { Selector } from 'testcafe';
|
||||||
|
import {login} from "./utils/roles";
|
||||||
|
|
||||||
|
fixture `Translation`
|
||||||
|
.page `http://play.workadventure.localhost/_/global/maps.workadventure.localhost/tests/mousewheel.json`;
|
||||||
|
|
||||||
|
test("Test that I can switch to French", async (t: TestController) => {
|
||||||
|
|
||||||
|
const languageSelect = Selector('.languages-switcher');
|
||||||
|
const languageOption = languageSelect.find('option');
|
||||||
|
|
||||||
|
await login(t, 'http://play.workadventure.localhost/_/global/maps.workadventure.localhost/tests/mousewheel.json');
|
||||||
|
|
||||||
|
await t.click('.menuIcon img:first-child')
|
||||||
|
.click(Selector('button').withText('Settings'))
|
||||||
|
.click('.languages-switcher')
|
||||||
|
.click(languageOption.withText('Français (France)'))
|
||||||
|
.click(Selector('button').withText('Save'))
|
||||||
|
|
||||||
|
.click('.menuIcon img:first-child')
|
||||||
|
.expect(Selector('button').withText('Paramètres').innerText).contains('Paramètres');
|
||||||
|
|
||||||
|
t.ctx.passed = true;
|
||||||
|
}).after(async t => {
|
||||||
|
if (!t.ctx.passed) {
|
||||||
|
console.log("Test failed. Browser logs:")
|
||||||
|
console.log(await t.getBrowserConsoleMessages());
|
||||||
|
}
|
||||||
|
});
|
@ -1,6 +1,11 @@
|
|||||||
import { Role } from 'testcafe';
|
import { Role, ClientFunction } from 'testcafe';
|
||||||
|
|
||||||
|
export const resetLanguage = ClientFunction((browserLanguage) => window.localStorage.setItem('language', browserLanguage));
|
||||||
|
|
||||||
|
export async function login(t: TestController, url: string, userName: string = "Alice", characterNumber: number = 2, browserLanguage: string|null = 'en-US') {
|
||||||
|
|
||||||
|
await resetLanguage(browserLanguage);
|
||||||
|
|
||||||
export function login(t: TestController, url: string, userName: string = "Alice", characterNumber: number = 2) {
|
|
||||||
t = t
|
t = t
|
||||||
.navigateTo(url)
|
.navigateTo(url)
|
||||||
.typeText('input[name="loginSceneName"]', userName)
|
.typeText('input[name="loginSceneName"]', userName)
|
||||||
|
Loading…
Reference in New Issue
Block a user