141 lines
5.3 KiB
TypeScript
141 lines
5.3 KiB
TypeScript
import Detox, { device, waitFor, element, by, expect } from 'detox';
|
|
|
|
import { navigateToLogin, login } from '../../helpers/app';
|
|
import { createRandomUser, ITestUser } from '../../helpers/data_setup';
|
|
|
|
const defaultLaunchArgs = { permissions: { notifications: 'YES' } } as Detox.DeviceLaunchAppConfig;
|
|
|
|
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 () => {
|
|
// if (device.getPlatform() === 'android') {
|
|
// return; // FIXME: Passing language with launch parameters doesn't work with Android
|
|
// }
|
|
await device.launchApp({
|
|
...defaultLaunchArgs,
|
|
languageAndLocale: {
|
|
language: 'en',
|
|
locale: 'en'
|
|
},
|
|
delete: true
|
|
});
|
|
await waitFor(element(by.id('new-server-view')))
|
|
.toBeVisible()
|
|
.withTimeout(20000);
|
|
await expect(element(by.id('new-server-view-open').and(by.label('Join our open workspace')))).toBeVisible();
|
|
});
|
|
|
|
it("OS set to unavailable language and fallback to 'en'", async () => {
|
|
// if (device.getPlatform() === 'android') {
|
|
// return; // FIXME: Passing language with launch parameters doesn't work with Android
|
|
// }
|
|
await device.launchApp({
|
|
...defaultLaunchArgs,
|
|
languageAndLocale: {
|
|
language: 'es-MX',
|
|
locale: 'es-MX'
|
|
}
|
|
});
|
|
await waitFor(element(by.id('new-server-view')))
|
|
.toBeVisible()
|
|
.withTimeout(20000);
|
|
await expect(element(by.id('new-server-view-open').and(by.label('Join our open 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"
|
|
// }
|
|
// });
|
|
// });
|
|
});
|
|
|
|
describe('Rocket.Chat language', () => {
|
|
let user: ITestUser;
|
|
beforeAll(async () => {
|
|
user = await createRandomUser();
|
|
await device.launchApp({ ...defaultLaunchArgs, delete: true });
|
|
await navigateToLogin();
|
|
await login(user.username, user.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, newInstance: true });
|
|
// 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
|
|
// });
|
|
});
|
|
});
|