UNPKG

@opstarts/chimp

Version:

Develop acceptance tests & end-to-end tests with realtime feedback.

110 lines (80 loc) 3.43 kB
'use strict'; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fibers = require('fibers'); var _fibers2 = _interopRequireDefault(_fibers); var _underscore = require('underscore'); var _underscore2 = _interopRequireDefault(_underscore); var _environmentVariableParsers = require('../environment-variable-parsers'); var _escapeRegExp = require('../utils/escape-reg-exp'); var _escapeRegExp2 = _interopRequireDefault(_escapeRegExp); var _jasmineFiberizedApi = require('./jasmine-fiberized-api'); var _jasmineFiberizedApi2 = _interopRequireDefault(_jasmineFiberizedApi); var _screenshotHelper = require('../screenshot-helper'); var _screenshotHelper2 = _interopRequireDefault(_screenshotHelper); var _booleanHelper = require('../boolean-helper'); var _booleanHelper2 = _interopRequireDefault(_booleanHelper); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } require('../babel-register'); new _fibers2.default(function runJasmineInFiber() { var projectDir = process.env.PWD; var testsDir = process.env['chimp.path']; process.chdir(testsDir); var Jasmine = require('jasmine'); var jasmine = new Jasmine(); // Capability to add multiple spec filters var specFilters = []; jasmine.env.specFilter = function shouldRunSpec(spec) { return _underscore2.default.every(specFilters, function (specFilter) { return specFilter(spec); }); }; jasmine.jasmine.addSpecFilter = function addSpecFilter(filterFn) { specFilters.push(filterFn); }; if ((0, _environmentVariableParsers.parseBoolean)(process.env['chimp.watch'])) { (function () { // Only run specs with a watch tag in watch mode var watchedSpecRegExp = new RegExp((0, _environmentVariableParsers.parseString)(process.env['chimp.watchTags']).split(',').map(_escapeRegExp2.default).join('|')); jasmine.jasmine.addSpecFilter(function (spec) { return watchedSpecRegExp.test(spec.getFullName()); }); })(); } // Capability to capture screenshots jasmine.jasmine.getEnv().addReporter({ specDone: function specDone(result) { if (_screenshotHelper2.default.shouldTakeScreenshot(result.status)) { if (_booleanHelper2.default.isTruthy(process.env['chimp.saveScreenshotsToDisk'])) { var affix = result.status !== 'passed' ? ' (failed)' : ''; var fileName = result.fullName + affix; _screenshotHelper2.default.saveScreenshotsToDisk(fileName, projectDir); } } } }); (0, _jasmineFiberizedApi2.default)(global); jasmine.loadConfig(getJasmineConfig()); jasmine.configureDefaultReporter(JSON.parse(process.env['chimp.jasmineReporterConfig'])); jasmine.execute(); }).run(); function getJasmineConfig() { var jasmineConfig = JSON.parse(process.env['chimp.jasmineConfig']); if (jasmineConfig.specDir) { if (!jasmineConfig.spec_dir) { jasmineConfig.spec_dir = jasmineConfig.specDir; } delete jasmineConfig.specDir; } if (jasmineConfig.specFiles) { if (!jasmineConfig.spec_files) { jasmineConfig.spec_files = jasmineConfig.specFiles; } delete jasmineConfig.specFiles; } if (!jasmineConfig.helpers) { jasmineConfig.helpers = []; } jasmineConfig.helpers.unshift(_path2.default.relative(jasmineConfig.spec_dir, _path2.default.resolve(__dirname, 'jasmine-helpers.js'))); return jasmineConfig; }