From c4d941d54bbf6c535dbaedfb238bbd7e5d323453 Mon Sep 17 00:00:00 2001 From: 4gray Date: Tue, 29 Dec 2020 19:00:11 +0100 Subject: [PATCH] build: fix configuration for e2e tests --- .mocharc.json | 7 ++++++ e2e/common-setup.ts | 56 ++++++++++++++++++++----------------------- e2e/main.e2e.ts | 30 +++++++++++------------ e2e/tsconfig.e2e.json | 5 ++-- package.json | 3 ++- 5 files changed, 52 insertions(+), 49 deletions(-) create mode 100644 .mocharc.json diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 000000000..d7b4c4c42 --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,7 @@ +{ + "require": "ts-node/register", + "watch-files": [ + "./e2e/**/*.ts" + ], + "timeout": 300000 +} \ No newline at end of file diff --git a/e2e/common-setup.ts b/e2e/common-setup.ts index 577604d5d..a6b93d2f9 100644 --- a/e2e/common-setup.ts +++ b/e2e/common-setup.ts @@ -3,39 +3,35 @@ const electronPath = require('electron'); // Require Electron from the binaries const path = require('path'); export default function setup(): void { - beforeEach(async function () { - this.app = new Application({ - // Your electron path can be any binary - // i.e for OSX an example path could be '/Applications/MyApp.app/Contents/MacOS/MyApp' - // But for the sake of the example we fetch it from our node_modules. - path: electronPath, + beforeEach(async function () { + this.app = new Application({ + // Your electron path can be any binary + // i.e for OSX an example path could be '/Applications/MyApp.app/Contents/MacOS/MyApp' + // But for the sake of the example we fetch it from our node_modules. + path: electronPath, - // Assuming you have the following directory structure + // Assuming you have the following directory structure - // |__ my project - // |__ ... - // |__ main.js - // |__ package.json - // |__ index.html - // |__ ... - // |__ test - // |__ spec.js <- You are here! ~ Well you should be. + // |__ my project + // |__ ... + // |__ main.js + // |__ package.json + // |__ index.html + // |__ ... + // |__ test + // |__ spec.js <- You are here! ~ Well you should be. - // The following line tells spectron to look and use the main.js file - // and the package.json located 1 level above. - args: [path.join(__dirname, '..')], - webdriverOptions: {} + // The following line tells spectron to look and use the main.js file + // and the package.json located 1 level above. + args: [path.join(__dirname, '..')], + webdriverOptions: {}, + }); + await this.app.start(); }); - await this.app.start(); - const browser = this.app.client; - await browser.waitUntilWindowLoaded(); - browser.timeouts('script', 15000); - }); - - afterEach(function () { - if (this.app && this.app.isRunning()) { - return this.app.stop(); - } - }); + afterEach(function () { + if (this.app && this.app.isRunning()) { + return this.app.stop(); + } + }); } diff --git a/e2e/main.e2e.ts b/e2e/main.e2e.ts index cc1780fc1..cac86ed61 100644 --- a/e2e/main.e2e.ts +++ b/e2e/main.e2e.ts @@ -4,24 +4,22 @@ import { SpectronClient } from 'spectron'; import commonSetup from './common-setup'; describe('angular-electron App', function () { - commonSetup.apply(this); + commonSetup.apply(this); - let browser: any; - let client: SpectronClient; + let client: SpectronClient; - beforeEach(function () { - client = this.app.client; - browser = client as any; - }); + beforeEach(function () { + client = this.app.client; + }); - it('should display message saying App works !', async function () { - const text = await browser.getText('app-home h1'); - expect(text).to.equal('App works !'); - }); - - it('creates initial windows', async function () { - const count = await client.getWindowCount(); - expect(count).to.equal(1); - }); + it('creates initial windows', async function () { + const count = await client.getWindowCount(); + expect(count).to.equal(1); + }); + it('should contain name of the app', async function () { + const elem = await client.$('.title'); + const text = await elem.getText(); + expect(text).to.equal('IPTVnator'); + }); }); diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json index 95979470b..5f75d4372 100644 --- a/e2e/tsconfig.e2e.json +++ b/e2e/tsconfig.e2e.json @@ -4,10 +4,11 @@ "outDir": "../out-tsc/e2e", "module": "commonjs", "types": [ - "mocha" + "mocha", + "node" ] }, "include": [ - "e2e/**/*.ts" + "**.ts" ] } diff --git a/package.json b/package.json index db9b2bb3a..c554bb43e 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,8 @@ "electron:build": "npm run build:prod && electron-builder build", "test": "jest", "test:watch": "jest --watch", - "e2e": "npm run build:prod && cross-env TS_NODE_PROJECT='e2e/tsconfig.e2e.json' mocha --timeout 300000 --require ts-node/register e2e/**/*.e2e.ts", + "e2e": "npm run build:prod && cross-env TS_NODE_PROJECT='e2e/tsconfig.e2e.json' mocha e2e/**/*.ts --config ./.mocharc.json", + "e2e:watch": "npm run e2e -- --watch", "version": "conventional-changelog -i CHANGELOG.md -p angular -s -r 0 && git add CHANGELOG.md", "lint": "ng lint" },