114 lines
5.3 KiB
JavaScript
114 lines
5.3 KiB
JavaScript
|
const {
|
||
|
device, element, by, waitFor
|
||
|
} = require('detox');
|
||
|
const { navigateToLogin, login, sleep } = require('../../helpers/app');
|
||
|
const { post } = require('../../helpers/data_setup');
|
||
|
|
||
|
const data = require('../../data');
|
||
|
const testuser = data.users.regular
|
||
|
const defaultLaunchArgs = { permissions: { notifications: 'YES' } };
|
||
|
|
||
|
const navToLanguage = async() => {
|
||
|
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||
|
await element(by.id('rooms-list-view-sidebar')).tap();
|
||
|
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||
|
await waitFor(element(by.id('sidebar-settings'))).toBeVisible().withTimeout(2000);
|
||
|
await element(by.id('sidebar-settings')).tap();
|
||
|
await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000);
|
||
|
await element(by.id('settings-view-language')).tap();
|
||
|
await waitFor(element(by.id('language-view'))).toBeVisible().withTimeout(10000);
|
||
|
};
|
||
|
|
||
|
describe('i18n', () => {
|
||
|
describe('OS language', () => {
|
||
|
it('OS set to \'en\' and proper translate to \'en\'', async() => {
|
||
|
await device.launchApp({
|
||
|
...defaultLaunchArgs,
|
||
|
languageAndLocale: {
|
||
|
language: "en",
|
||
|
locale: "en"
|
||
|
},
|
||
|
delete: true
|
||
|
});
|
||
|
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000);
|
||
|
await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible();
|
||
|
await expect(element(by.id('create-workspace-button').and(by.label('Create a new workspace')))).toBeVisible();
|
||
|
});
|
||
|
|
||
|
it('OS set to unavailable language and fallback to \'en\'', async() => {
|
||
|
await device.launchApp({
|
||
|
...defaultLaunchArgs,
|
||
|
languageAndLocale: {
|
||
|
language: "es-MX",
|
||
|
locale: "es-MX"
|
||
|
}
|
||
|
});
|
||
|
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000);
|
||
|
await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible();
|
||
|
await expect(element(by.id('create-workspace-button').and(by.label('Create a new workspace')))).toBeVisible();
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* This test might become outdated as soon as we support the language
|
||
|
* Although this seems to be a bad approach, that's the intention for having fallback enabled
|
||
|
*/
|
||
|
it('OS set to available language and fallback to \'en\' on strings missing translation', async() => {
|
||
|
await device.launchApp({
|
||
|
...defaultLaunchArgs,
|
||
|
languageAndLocale: {
|
||
|
language: "nl",
|
||
|
locale: "nl"
|
||
|
}
|
||
|
});
|
||
|
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000);
|
||
|
await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); // Missing nl translation
|
||
|
await expect(element(by.id('create-workspace-button').and(by.label('Een nieuwe workspace maken')))).toBeVisible();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('Rocket.Chat language', () => {
|
||
|
before(async() => {
|
||
|
await device.launchApp(defaultLaunchArgs);
|
||
|
await navigateToLogin();
|
||
|
await login(testuser.username, testuser.password);
|
||
|
});
|
||
|
|
||
|
it('should select \'en\'', async() => {
|
||
|
await navToLanguage();
|
||
|
await element(by.id('language-view-en')).tap();
|
||
|
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||
|
await element(by.id('rooms-list-view-sidebar')).tap();
|
||
|
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||
|
await expect(element(by.id('sidebar-chats').withDescendant(by.label('Chats')))).toBeVisible();
|
||
|
await expect(element(by.id('sidebar-profile').withDescendant(by.label('Profile')))).toBeVisible();
|
||
|
await expect(element(by.id('sidebar-settings').withDescendant(by.label('Settings')))).toBeVisible();
|
||
|
await element(by.id('sidebar-close-drawer')).tap();
|
||
|
});
|
||
|
|
||
|
it('should select \'nl\' and fallback to \'en\'', async() => {
|
||
|
await navToLanguage();
|
||
|
await element(by.id('language-view-nl')).tap();
|
||
|
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||
|
await element(by.id('rooms-list-view-sidebar')).tap();
|
||
|
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||
|
await expect(element(by.id('sidebar-chats').withDescendant(by.label('Chats')))).toBeVisible(); // fallback to en
|
||
|
await expect(element(by.id('sidebar-profile').withDescendant(by.label('Profiel')))).toBeVisible();
|
||
|
await expect(element(by.id('sidebar-settings').withDescendant(by.label('Instellingen')))).toBeVisible();
|
||
|
await element(by.id('sidebar-close-drawer')).tap();
|
||
|
});
|
||
|
|
||
|
it('should set unsupported language and fallback to \'en\'', async() => {
|
||
|
await post('users.setPreferences', { data: { language: 'eo' } }); // Set language to Esperanto
|
||
|
await device.launchApp(defaultLaunchArgs);
|
||
|
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||
|
await element(by.id('rooms-list-view-sidebar')).tap();
|
||
|
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||
|
// give the app some time to apply new language
|
||
|
await sleep(3000);
|
||
|
await expect(element(by.id('sidebar-chats').withDescendant(by.label('Chats')))).toBeVisible();
|
||
|
await expect(element(by.id('sidebar-profile').withDescendant(by.label('Profile')))).toBeVisible();
|
||
|
await expect(element(by.id('sidebar-settings').withDescendant(by.label('Settings')))).toBeVisible();
|
||
|
await post('users.setPreferences', { data: { language: 'en' } }); // Set back to english
|
||
|
});
|
||
|
})
|
||
|
});
|