mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-17 10:41:13 +08:00
89 lines
1.9 KiB
JavaScript
89 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const fs = require('fs');
|
|
const glob = require('glob');
|
|
const Mocha = require('mocha');
|
|
const path = require('path');
|
|
const webdriver = require('selenium-webdriver');
|
|
|
|
const Snapshot = require('./Snapshot');
|
|
|
|
let snapshot;
|
|
let takeScreenshots = false;
|
|
|
|
function startDevServer() {
|
|
const server = require('@stencil/dev-server/dist'); // TODO: fix after stencil-dev-server PR #16 is merged
|
|
const cmdArgs = ['--config', path.join(__dirname, '../stencil.config.js'), '--no-open'];
|
|
|
|
return server.run(cmdArgs);
|
|
}
|
|
|
|
function getTestFiles() {
|
|
return new Promise((resolve, reject) => {
|
|
const src = path.join(__dirname, '../src/**/*.e2e-spec.js');
|
|
glob(src, (err, files) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(files);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function processCommandLine() {
|
|
process.argv.forEach(arg => {
|
|
if (arg === '--snapshot') {
|
|
takeScreenshots = true;
|
|
}
|
|
});
|
|
}
|
|
|
|
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({
|
|
timeout: 5000,
|
|
slow: 2000
|
|
});
|
|
|
|
processCommandLine();
|
|
|
|
snapshot = new Snapshot({
|
|
platformDefaults: {
|
|
params: {
|
|
height: 800,
|
|
width: 400
|
|
}
|
|
}
|
|
});
|
|
|
|
const devServer = await startDevServer();
|
|
|
|
const files = await getTestFiles();
|
|
files.forEach(f => mocha.addFile(f));
|
|
mocha.run(function(failures) {
|
|
process.on('exit', function() {
|
|
process.exit(failures); // exit with non-zero status if there were failures
|
|
});
|
|
devServer.close();
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
register: registerE2ETest,
|
|
run: run
|
|
};
|