You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.3 KiB
115 lines
3.3 KiB
/* eslint-disable */
|
|
|
|
import { Application } from 'spectron';
|
|
import electronPath from 'electron';
|
|
import path from 'path';
|
|
|
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 15000;
|
|
|
|
const delay = time => new Promise(resolve => setTimeout(resolve, time));
|
|
|
|
describe('main window', function spec() {
|
|
beforeAll(async () => {
|
|
this.app = new Application({
|
|
path: electronPath,
|
|
args: [path.join(__dirname, '..', '..', 'app')]
|
|
});
|
|
|
|
return this.app.start();
|
|
});
|
|
|
|
afterAll(() => {
|
|
if (this.app && this.app.isRunning()) {
|
|
return this.app.stop();
|
|
}
|
|
});
|
|
|
|
const findCounter = () => this.app.client.element('[data-tid="counter"]');
|
|
|
|
const findButtons = async () => {
|
|
const { value } = await this.app.client.elements('[data-tclass="btn"]');
|
|
return value.map(btn => btn.ELEMENT);
|
|
};
|
|
|
|
it('should open window', async () => {
|
|
const { client, browserWindow } = this.app;
|
|
|
|
await client.waitUntilWindowLoaded();
|
|
await delay(500);
|
|
const title = await browserWindow.getTitle();
|
|
expect(title).toBe('Hello Electron React!');
|
|
});
|
|
|
|
it('should haven\'t any logs in console of main window', async () => {
|
|
const { client } = this.app;
|
|
const logs = await client.getRenderProcessLogs();
|
|
// Print renderer process logs
|
|
logs.forEach((log) => {
|
|
console.log(log.message);
|
|
console.log(log.source);
|
|
console.log(log.level);
|
|
});
|
|
expect(logs).toHaveLength(0);
|
|
});
|
|
|
|
it('should to Counter with click "to Counter" link', async () => {
|
|
const { client } = this.app;
|
|
|
|
await client.click('[data-tid=container] > a');
|
|
expect(await findCounter().getText()).toBe('0');
|
|
});
|
|
|
|
it('should display updated count after increment button click', async () => {
|
|
const { client } = this.app;
|
|
|
|
const buttons = await findButtons();
|
|
await client.elementIdClick(buttons[0]); // +
|
|
expect(await findCounter().getText()).toBe('1');
|
|
});
|
|
|
|
it('should display updated count after descrement button click', async () => {
|
|
const { client } = this.app;
|
|
|
|
const buttons = await findButtons();
|
|
await client.elementIdClick(buttons[1]); // -
|
|
expect(await findCounter().getText()).toBe('0');
|
|
});
|
|
|
|
it('shouldnt change if even and if odd button clicked', async () => {
|
|
const { client } = this.app;
|
|
|
|
const buttons = await findButtons();
|
|
await client.elementIdClick(buttons[2]); // odd
|
|
expect(await findCounter().getText()).toBe('0');
|
|
});
|
|
|
|
it('should change if odd and if odd button clicked', async () => {
|
|
const { client } = this.app;
|
|
|
|
const buttons = await findButtons();
|
|
await client.elementIdClick(buttons[0]); // +
|
|
await client.elementIdClick(buttons[2]); // odd
|
|
expect(await findCounter().getText()).toBe('2');
|
|
});
|
|
|
|
it('should change if async button clicked and a second later', async () => {
|
|
const { client } = this.app;
|
|
|
|
const buttons = await findButtons();
|
|
await client.elementIdClick(buttons[3]); // async
|
|
expect(await findCounter().getText()).toBe('2');
|
|
await delay(1500);
|
|
expect(await findCounter().getText()).toBe('3');
|
|
});
|
|
|
|
it('should back to home if back button clicked', async () => {
|
|
const { client } = this.app;
|
|
await client.element(
|
|
'[data-tid="backButton"] > a'
|
|
).click();
|
|
|
|
expect(
|
|
await client.isExisting('[data-tid="container"]')
|
|
).toBe(true);
|
|
});
|
|
});
|
|
|