78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
const template = require('./template')
|
|
let config
|
|
const fs = require('fs-extra')
|
|
const path = require('path')
|
|
const globby = require('globby')
|
|
const { runner } = require('mocha-headless-chrome')
|
|
|
|
|
|
if (process.argv[2]) {
|
|
config = require(`./${process.argv[2]}.config`)
|
|
} else {
|
|
config = require('./runner.config')
|
|
}
|
|
|
|
/**
|
|
* Generate templates and run tests
|
|
*/
|
|
const tests = []
|
|
const cwd = process.cwd()
|
|
const tmpDir = path.join(cwd, 'tmp', 'browser')
|
|
fs.ensureDirSync(tmpDir)
|
|
fs.copySync(path.join(cwd, 'test', 'browser', 'common.js'), path.join(tmpDir, 'common.js'))
|
|
|
|
let numTests = 0
|
|
let passedTests = 0
|
|
let failedTests = 0
|
|
|
|
/** Will run the runners in a series */
|
|
function runSerial(tasks) {
|
|
var result = Promise.resolve()
|
|
start = Date.now()
|
|
tasks.forEach(task => {
|
|
result = result.then(result => {
|
|
if (result && result.result && result.result.stats) {
|
|
const stats = result.result.stats
|
|
numTests += stats.tests
|
|
passedTests += stats.passes
|
|
failedTests += stats.failures
|
|
}
|
|
return task()
|
|
}, err => {
|
|
console.log(err)
|
|
failedTests += 1
|
|
})
|
|
})
|
|
return result
|
|
}
|
|
|
|
Object.entries(config).forEach(entry => {
|
|
const test = entry[1]
|
|
const paths = globby.sync(test.src)
|
|
const templateString = template(paths, test.options.helpers, test.options.specs)
|
|
fs.writeFileSync(path.join(cwd, test.options.outfile), templateString)
|
|
tests.push(() => {
|
|
const file = 'http://localhost:8081/' + test.options.outfile
|
|
console.log(file)
|
|
return runner({
|
|
file,
|
|
timeout: 3500,
|
|
args: ['disable-web-security']
|
|
})
|
|
})
|
|
})
|
|
|
|
module.exports = () => runSerial(tests).then(() => {
|
|
if (failedTests > 0) {
|
|
process.stderr.write(failedTests + ' Failed, ' + passedTests + ' passed\n');
|
|
} else {
|
|
process.stdout.write('All Passed ' + passedTests + ' run\n');
|
|
}
|
|
if (failedTests) {
|
|
process.on('exit', function() { process.reallyExit(1); });
|
|
}
|
|
process.exit()
|
|
}, err => {
|
|
process.stderr.write(err.message);
|
|
process.exit()
|
|
})
|