70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
import path from 'path';
|
|
import SeleniumHelper from '../helpers/selenium-helper';
|
|
|
|
const {
|
|
clickText,
|
|
clickXpath,
|
|
getDriver,
|
|
getLogs,
|
|
loadUri,
|
|
scope,
|
|
rightClickText
|
|
} = new SeleniumHelper();
|
|
|
|
const uri = path.resolve(__dirname, '../../build/index.html');
|
|
|
|
let driver;
|
|
|
|
describe('Localization', () => {
|
|
beforeAll(() => {
|
|
driver = getDriver();
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await driver.quit();
|
|
});
|
|
|
|
test('Switching languages', async () => {
|
|
await driver.quit();
|
|
driver = getDriver();
|
|
await loadUri(uri);
|
|
|
|
// Add a sprite to make sure it stays when switching languages
|
|
await clickText('Costumes');
|
|
await clickXpath('//button[@aria-label="Choose a Sprite"]');
|
|
await clickText('Apple', scope.modal); // Closes modal
|
|
|
|
await clickText('Code');
|
|
await clickXpath('//*[@aria-label="language selector"]');
|
|
await clickText('Deutsch');
|
|
await new Promise(resolve => setTimeout(resolve, 1000)); // wait for blocks refresh
|
|
|
|
// Make sure the blocks are translating
|
|
await clickText('Fühlen'); // Sensing category in German
|
|
await new Promise(resolve => setTimeout(resolve, 1000)); // wait for blocks to scroll
|
|
await clickText('Antwort'); // Find the "answer" block in German
|
|
|
|
// Change to the costumes tab to confirm other parts of the GUI are translating
|
|
await clickText('Kostüme');
|
|
|
|
// After switching languages, make sure Apple sprite still exists
|
|
await rightClickText('Apple', scope.spriteTile); // Make sure it is there
|
|
|
|
// Remounting re-attaches the beforeunload callback. Make sure to remove it
|
|
driver.executeScript('window.onbeforeunload = undefined;');
|
|
|
|
const logs = await getLogs();
|
|
await expect(logs).toEqual([]);
|
|
});
|
|
|
|
// Regression test for #4476, blocks in wrong language when loaded with locale
|
|
test('Loading with locale shows correct blocks', async () => {
|
|
await loadUri(`${uri}?locale=de`);
|
|
await clickText('Fühlen'); // Sensing category in German
|
|
await new Promise(resolve => setTimeout(resolve, 1000)); // wait for blocks to scroll
|
|
await clickText('Antwort'); // Find the "answer" block in German
|
|
const logs = await getLogs();
|
|
await expect(logs).toEqual([]);
|
|
});
|
|
});
|