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.
79 lines
2.1 KiB
79 lines
2.1 KiB
1 month ago
|
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()
|
||
|
})
|