gulp-qunit-harness
Version:
Gulp plugin for running qunit tests on a local machine and in the SauceLabs environment.
131 lines (94 loc) • 4.24 kB
JavaScript
var _regeneratorRuntime = require('babel-runtime/regenerator').default;
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default').default;
exports.__esModule = true;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _through2 = require('through2');
var _through22 = _interopRequireDefault(_through2);
var _promise = require('promise');
var _promise2 = _interopRequireDefault(_promise);
var _qunitHarness = require('qunit-harness');
var _qunitHarness2 = _interopRequireDefault(_qunitHarness);
var readFile = _promise2.default.denodeify(_fs2.default.readFile);
function hang() {
return new _promise2.default(function () {
// NOTE: hang forever
});
}
exports.default = function (qunitSettings, envSettings) {
var runOpts = arguments.length <= 2 || arguments[2] === undefined ? { cliMode: false } : arguments[2];
qunitSettings = {
basePath: qunitSettings.basePath || '',
port: qunitSettings.port,
crossDomainPort: qunitSettings.crossDomainPort,
scripts: qunitSettings.scripts || [],
css: qunitSettings.css || [],
configApp: qunitSettings.configApp || null,
before: qunitSettings.before,
after: qunitSettings.after
};
var tests = [];
var qunitHarness = new _qunitHarness2.default();
function runTests() {
return _regeneratorRuntime.async(function runTests$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
qunitHarness.fixtures(qunitSettings.basePath).scripts(qunitSettings.scripts).css(qunitSettings.css).tests(tests);
if (typeof qunitSettings.port === 'number') qunitHarness.port(qunitSettings.port);
if (typeof qunitSettings.crossDomainPort === 'number') qunitHarness.crossDomainPort(qunitSettings.crossDomainPort);
if (typeof qunitSettings.configApp === 'function') qunitHarness.configApp(qunitSettings.configApp);
if (typeof qunitSettings.before === 'function') qunitHarness.before(qunitSettings.before);
if (typeof qunitSettings.after === 'function') qunitHarness.after(qunitSettings.after);
qunitHarness.create();
if (!envSettings) {
context$2$0.next = 12;
break;
}
if (runOpts.cliMode) qunitHarness.cli(envSettings);else qunitHarness.saucelabs(envSettings);
context$2$0.next = 11;
return _regeneratorRuntime.awrap(qunitHarness.run());
case 11:
return context$2$0.abrupt('return', context$2$0.sent);
case 12:
context$2$0.next = 14;
return _regeneratorRuntime.awrap(hang());
case 14:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
return _through22.default.obj(function (file, enc, done) {
tests.push(file.path);
done();
}, function callee$1$0(done) {
var error;
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
error = null;
context$2$0.prev = 1;
context$2$0.next = 4;
return _regeneratorRuntime.awrap(runTests());
case 4:
context$2$0.next = 9;
break;
case 6:
context$2$0.prev = 6;
context$2$0.t0 = context$2$0['catch'](1);
error = context$2$0.t0;
case 9:
context$2$0.prev = 9;
qunitHarness.close();
done(error);
return context$2$0.finish(9);
case 13:
case 'end':
return context$2$0.stop();
}
}, null, this, [[1, 6, 9, 13]]);
});
};
;
module.exports = exports.default;
;