123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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([]);
- });
- });
|