UNPKG

@exabyte-io/chimpy

Version:

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

87 lines (71 loc) 2.62 kB
require('../babel-register'); import path from 'path'; import Fiber from 'fibers'; import _ from 'underscore'; import {parseBoolean, parseString } from '../environment-variable-parsers'; import escapeRegExp from '../utils/escape-reg-exp'; import fiberizeJasmineApi from './jasmine-fiberized-api'; import screenshotHelper from '../screenshot-helper'; import booleanHelper from '../boolean-helper'; new Fiber(function runJasmineInFiber() { const projectDir = process.env.PWD; const testsDir = process.env['chimp.path']; process.chdir(testsDir); const Jasmine = require('jasmine'); const jasmine = new Jasmine(); // Capability to add multiple spec filters const specFilters = []; jasmine.env.specFilter = function shouldRunSpec(spec) { return _.every(specFilters, specFilter => specFilter(spec)); }; jasmine.jasmine.addSpecFilter = function addSpecFilter(filterFn) { specFilters.push(filterFn); }; if (parseBoolean(process.env['chimp.watch'])) { // Only run specs with a watch tag in watch mode const watchedSpecRegExp = new RegExp( parseString(process.env['chimp.watchTags']).split(',').map(escapeRegExp).join('|') ); jasmine.jasmine.addSpecFilter((spec) => watchedSpecRegExp.test(spec.getFullName())); } // Capability to capture screenshots jasmine.jasmine.getEnv().addReporter({ specDone: function(result) { if (screenshotHelper.shouldTakeScreenshot(result.status)) { if (booleanHelper.isTruthy(process.env['chimp.saveScreenshotsToDisk'])) { const affix = result.status !== 'passed' ? ' (failed)' : ''; const fileName = result.fullName + affix; screenshotHelper.saveScreenshotsToDisk(fileName, projectDir); } } } }); fiberizeJasmineApi(global); jasmine.loadConfig(getJasmineConfig()); jasmine.configureDefaultReporter( JSON.parse(process.env['chimp.jasmineReporterConfig']) ); jasmine.execute(); }).run(); function getJasmineConfig() { const 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( path.relative(jasmineConfig.spec_dir, path.resolve(__dirname, 'jasmine-helpers.js')) ); return jasmineConfig; }