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

/* 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);
});
});