Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,14 @@ install:
- npm install
- npm link
- popd
- git clone --branch=develop --depth 1 https://github.com/enactjs/enact ../enact
- git clone --branch=feature/NXT-9751 --depth 1 https://github.com/enactjs/enact ../enact
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to revert before merge

- pushd ../enact
- npm uninstall @enact/ui-test-utils --prefix packages/i18n
- npm install
- npm run lerna exec -- --ignore enact-sampler --concurrency 1 -- npm --no-package-lock install
- npm run lerna exec -- --ignore enact-sampler --concurrency 1 -- npm --no-package-lock link
- npm run interlink
- popd
- rm -fr node_modules/@enact
- npm uninstall @enact/ui-test-utils
- npm install
- enact link
script:
Expand Down
40 changes: 40 additions & 0 deletions tests/ui/apps/Loader/Loader-View.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import I18nDecorator, {I18nContextDecorator} from '@enact/i18n/I18nDecorator';
import Text from '@enact/i18n/Text';

let urlLocale;
let urlSync = false;
if (typeof window !== 'undefined') {
const url = new URL(document.location);
urlLocale = url.searchParams.get('locale');
urlSync = url.searchParams.get('sync') === 'true';
}

const AppBase = ({loaded, locale, rtl, ...rest}) => (
<div {...rest}>
{document.location.href}
<div id="loaded">
{loaded ? 'Loaded' : 'Not Loaded'}
</div>
<div id="locale">
{locale}
</div>
<div id="dir">
{rtl ? 'RTL' : 'LTR'}
</div>
<div id="text">
<Text>test</Text>
</div>
</div>
);

const App = I18nDecorator(
{sync: urlSync},
I18nContextDecorator(
{loadedProp: 'loaded', localeProp: 'locale', rtlProp: 'rtl'},
AppBase
)
);

const app = () => <App locale={urlLocale} />;

export default app;
3 changes: 3 additions & 0 deletions tests/ui/apps/Loader/resources/ar/strings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"test": "test-ar"
}
3 changes: 3 additions & 0 deletions tests/ui/apps/Loader/resources/en/strings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"test": "test-en"
}
3 changes: 3 additions & 0 deletions tests/ui/apps/Loader/resources/ilibmanifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"files": ["ar/strings.json", "en/strings.json"]
}
88 changes: 88 additions & 0 deletions tests/ui/specs/Loader/Loader-specs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
const Page = require('./LoaderPage');

// When running these tests manually in the browser, be sure to clear localStorage via dev tools or
// with window.localStorage.clear() to ensure that resources are loaded via the network and not the
// localStorage cache
describe('Loader', () => {
describe('sync', () => {
it('should load', async () => {
await Page.open({sync: true, locale: 'ar-SA'});

expect(await Page.loadState()).toBe('Loaded');
});

it('should have specified locale', async () => {
await Page.open({sync: true, locale: 'ar-SA'});

expect(await Page.locale()).toBe('ar-SA');
});

it('should have LTR text direction', async () => {
await Page.open({sync: true, locale: 'en-US'});

expect(await Page.textDirection()).toBe('LTR');
});

it('should have RTL text direction', async () => {
await Page.open({sync: true, locale: 'ar-SA'});

expect(await Page.textDirection()).toBe('RTL');
});

it('should have translated text for en-US', async () => {
await Page.open({sync: true, locale: 'en-US'});

expect(await Page.text()).toBe('test-en');
});

it('should have translated text for ar-SA', async () => {
await Page.open({sync: true, locale: 'ar-SA'});

expect(await Page.text()).toBe('test-ar');
});
});

describe('async', function () {
it('should load', async () => {
await Page.open({sync: false, locale: 'ar-SA'});

browser.waitUntil(() => Page.loadState() === 'Loaded', 500);
expect(await Page.loadState()).toBe('Loaded');
});

it('should have specified locale', async () => {
await Page.open({sync: false, locale: 'ar-SA'});

browser.waitUntil(() => Page.loadState() === 'Loaded', 500);
expect(await Page.locale()).toBe('ar-SA');
});

it('should have LTR text direction', async () => {
await Page.open({sync: false, locale: 'en-US'});

browser.waitUntil(() => Page.loadState() === 'Loaded', 500);
expect(await Page.textDirection()).toBe('LTR');
});

it('should have RTL text direction', async () => {
await Page.open({sync: false, locale: 'ar-SA'});

browser.waitUntil(() => Page.loadState() === 'Loaded', 500);
expect(await Page.textDirection()).toBe('RTL');
});

it('should have translated text for en-US', async () => {
await Page.open({sync: false, locale: 'en-US'});

browser.waitUntil(() => Page.loadState() === 'Loaded', 500);
expect(await Page.text()).toBe('test-en');
});

it('should have translated text for ar-SA', async () => {
await Page.open({sync: false, locale: 'ar-SA'});

browser.waitUntil(() => Page.loadState() === 'Loaded', 500);
expect(await Page.text()).toBe('test-ar');
});
});
});
34 changes: 34 additions & 0 deletions tests/ui/specs/Loader/LoaderPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use strict';
const {Page} = require('@enact/ui-test-utils/utils');

class LoaderPage extends Page {
constructor () {
super();
this.title = 'Loader Test';
}

async loadState () {
return await browser.$('#loaded').getText();
}

async locale () {
return await browser.$('#locale').getText();
}

async textDirection () {
return await browser.$('#dir').getText();
}

async text () {
return await browser.$('#text').getText();
}

async open (opts) {
const urlExtra = Object.keys(opts).reduce((v, key) => {
return v + encodeURIComponent(key) + '=' + encodeURIComponent(opts[key]) + '&';
}, '?');
await super.open('Loader-View', urlExtra);
}
}

module.exports = new LoaderPage();
Loading