refactor(e2e-test): move register into the runner

This commit is contained in:
Ken Sodemann
2017-11-02 21:31:22 -05:00
parent e9358fb495
commit 75b450b4f5
7 changed files with 46 additions and 45 deletions

View File

@ -24,8 +24,8 @@
"scripts": { "scripts": {
"build": "stencil build", "build": "stencil build",
"dev": "sd concurrent \"stencil build --dev --watch\" \"stencil-dev-server\"", "dev": "sd concurrent \"stencil build --dev --watch\" \"stencil-dev-server\"",
"e2e": "node ./scripts/e2e-test-runner.js", "e2e": "node ./scripts/e2e.js",
"snapshot": "node ./scripts/e2e-test-runner.js --snapshot", "snapshot": "node ./scripts/e2e.js --snapshot",
"test": "jest --no-cache", "test": "jest --no-cache",
"test.watch": "jest --watch --no-cache", "test.watch": "jest --watch --no-cache",
"clean": "rm -rf dist", "clean": "rm -rf dist",

View File

@ -1,8 +1,15 @@
'use strict'; 'use strict';
const fs = require('fs');
const glob = require('glob'); const glob = require('glob');
const Mocha = require('mocha'); const Mocha = require('mocha');
const path = require('path'); const path = require('path');
const webdriver = require('selenium-webdriver');
const Snapshot = require('./Snapshot');
let snapshot;
let takeScreenshots = false;
function startDevServer() { function startDevServer() {
const server = require('@stencil/dev-server/dist'); // TODO: fix after stencil-dev-server PR #16 is merged const server = require('@stencil/dev-server/dist'); // TODO: fix after stencil-dev-server PR #16 is merged
@ -27,12 +34,26 @@ function getTestFiles() {
function processCommandLine() { function processCommandLine() {
process.argv.forEach(arg => { process.argv.forEach(arg => {
if (arg === '--snapshot') { if (arg === '--snapshot') {
process.env.takeScreenshots = true; takeScreenshots = true;
} }
}); });
} }
(async () => { function registerE2ETest(desc, tst) {
// NOTE: Do not use an arrow function here because: https://mochajs.org/#arrow-functions
it(desc, async function() {
const driver = new webdriver.Builder().forBrowser('chrome').build();
await tst(driver);
if (takeScreenshots) {
await snapshot.takeScreenshot(driver, {
name: this.test.fullTitle()
});
}
return driver.quit();
});
}
async function run() {
const mocha = new Mocha({ const mocha = new Mocha({
timeout: 5000, timeout: 5000,
slow: 2000 slow: 2000
@ -40,6 +61,15 @@ function processCommandLine() {
processCommandLine(); processCommandLine();
snapshot = new Snapshot({
platformDefaults: {
params: {
height: 800,
width: 400
}
}
});
const devServer = await startDevServer(); const devServer = await startDevServer();
const files = await getTestFiles(); const files = await getTestFiles();
@ -50,4 +80,9 @@ function processCommandLine() {
}); });
devServer.close(); devServer.close();
}); });
})(); }
module.exports = {
register: registerE2ETest,
run: run
};

View File

@ -0,0 +1,3 @@
'use strict';
require('./e2e-test-runner').run();

View File

@ -1,37 +0,0 @@
'use strict';
const fs = require('fs');
const webdriver = require('selenium-webdriver');
const Snapshot = require('./Snapshot');
let snapshotTool;
function getSnapshotTool() {
if (!snapshotTool) {
snapshotTool = new Snapshot({
platformDefaults: {
params: {
height: 800,
width: 400
}
}
});
}
return snapshotTool;
}
function registerE2ETest(desc, tst) {
// NOTE: Do not use an arrow function here because: https://mochajs.org/#arrow-functions
it(desc, async function() {
const driver = new webdriver.Builder().forBrowser('chrome').build();
await tst(driver);
if (process.env.takeScreenshots) {
const snapshot = getSnapshotTool();
await snapshot.takeScreenshot(driver, {
name: this.test.fullTitle()
});
}
return driver.quit();
});
}
module.exports = registerE2ETest;

View File

@ -4,7 +4,7 @@ const webdriver = require('selenium-webdriver');
const By = webdriver.By; const By = webdriver.By;
const until = webdriver.until; const until = webdriver.until;
const register = require('../../../../scripts/register-e2e-test'); const register = require('../../../../scripts/e2e-test-runner').register;
const E2ETestPage = require('../../../../scripts/E2ETestPage'); const E2ETestPage = require('../../../../scripts/E2ETestPage');
class ActionSheetE2ETestPage extends E2ETestPage { class ActionSheetE2ETestPage extends E2ETestPage {

View File

@ -1,6 +1,6 @@
'use strict'; 'use strict';
const register = require('../../../../scripts/register-e2e-test'); const register = require('../../../../scripts/e2e-test-runner').register;
const E2ETestPage = require('../../../../scripts/E2ETestPage'); const E2ETestPage = require('../../../../scripts/E2ETestPage');
describe('button: basic', () => { describe('button: basic', () => {

View File

@ -1,6 +1,6 @@
'use strict'; 'use strict';
const register = require('../../../../scripts/register-e2e-test'); const register = require('../../../../scripts/e2e-test-runner').register;
const E2ETestPage = require('../../../../scripts/E2ETestPage'); const E2ETestPage = require('../../../../scripts/E2ETestPage');
describe('button: toolbar', () => { describe('button: toolbar', () => {