UNPKG

cucumber

Version:

The official JavaScript implementation of Cucumber.

55 lines (38 loc) 6.79 kB
'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _regenerator = require('babel-runtime/regenerator');var _regenerator2 = _interopRequireDefault(_regenerator);var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);var _createClass2 = require('babel-runtime/helpers/createClass');var _createClass3 = _interopRequireDefault(_createClass2);var _event = require('./event');var _event2 = _interopRequireDefault(_event); var _features_result = require('../models/features_result');var _features_result2 = _interopRequireDefault(_features_result); var _bluebird = require('bluebird');var _bluebird2 = _interopRequireDefault(_bluebird); var _scenario_result = require('../models/scenario_result');var _scenario_result2 = _interopRequireDefault(_scenario_result); var _scenario_runner = require('./scenario_runner');var _scenario_runner2 = _interopRequireDefault(_scenario_runner); var _status = require('../status');var _status2 = _interopRequireDefault(_status);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var FeaturesRunner = function () { function FeaturesRunner(_ref) {var eventBroadcaster = _ref.eventBroadcaster;var features = _ref.features;var options = _ref.options;var scenarioFilter = _ref.scenarioFilter;var supportCodeLibrary = _ref.supportCodeLibrary;(0, _classCallCheck3.default)(this, FeaturesRunner); this.eventBroadcaster = eventBroadcaster; this.features = features; this.options = options; this.scenarioFilter = scenarioFilter; this.supportCodeLibrary = supportCodeLibrary; this.featuresResult = new _features_result2.default(options.strict); }(0, _createClass3.default)(FeaturesRunner, [{ key: 'run', value: function () {var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() {var _this = this;var event;return _regenerator2.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0: event = new _event2.default({ data: this.features, name: _event2.default.FEATURES_EVENT_NAME });_context2.next = 3;return ( this.eventBroadcaster.broadcastAroundEvent(event, (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() {return _regenerator2.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return ( _bluebird2.default.each(_this.features, _this.runFeature.bind(_this)));case 2:_context.next = 4;return ( _this.broadcastFeaturesResult());case 4:case 'end':return _context.stop();}}}, _callee, _this);}))));case 3:return _context2.abrupt('return', this.featuresResult.success);case 4:case 'end':return _context2.stop();}}}, _callee2, this);}));function run() {return _ref2.apply(this, arguments);}return run;}() }, { key: 'broadcastFeaturesResult', value: function () {var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3() {var event;return _regenerator2.default.wrap(function _callee3$(_context3) {while (1) {switch (_context3.prev = _context3.next) {case 0: event = new _event2.default({ data: this.featuresResult, name: _event2.default.FEATURES_RESULT_EVENT_NAME });_context3.next = 3;return ( this.eventBroadcaster.broadcastEvent(event));case 3:case 'end':return _context3.stop();}}}, _callee3, this);}));function broadcastFeaturesResult() {return _ref4.apply(this, arguments);}return broadcastFeaturesResult;}() }, { key: 'runFeature', value: function () {var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee6( feature) {var _this2 = this;var event;return _regenerator2.default.wrap(function _callee6$(_context6) {while (1) {switch (_context6.prev = _context6.next) {case 0: event = new _event2.default({ data: feature, name: _event2.default.FEATURE_EVENT_NAME });_context6.next = 3;return ( this.eventBroadcaster.broadcastAroundEvent(event, (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5() {return _regenerator2.default.wrap(function _callee5$(_context5) {while (1) {switch (_context5.prev = _context5.next) {case 0:_context5.next = 2;return ( _bluebird2.default.each(feature.scenarios, function () {var _ref7 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(scenario) {var scenarioResult;return _regenerator2.default.wrap(function _callee4$(_context4) {while (1) {switch (_context4.prev = _context4.next) {case 0:if ( _this2.scenarioFilter.matches(scenario)) {_context4.next = 2;break;}return _context4.abrupt('return');case 2:_context4.next = 4;return ( _this2.runScenario(scenario));case 4:scenarioResult = _context4.sent; _this2.featuresResult.witnessScenarioResult(scenarioResult);case 6:case 'end':return _context4.stop();}}}, _callee4, _this2);}));return function (_x2) {return _ref7.apply(this, arguments);};}()));case 2:case 'end':return _context5.stop();}}}, _callee5, _this2);}))));case 3:case 'end':return _context6.stop();}}}, _callee6, this);}));function runFeature(_x) {return _ref5.apply(this, arguments);}return runFeature;}() }, { key: 'runScenario', value: function () {var _ref8 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee7( scenario) {var scenarioRunner;return _regenerator2.default.wrap(function _callee7$(_context7) {while (1) {switch (_context7.prev = _context7.next) {case 0:if (!( !this.featuresResult.success && this.options.failFast)) {_context7.next = 2;break;}return _context7.abrupt('return', new _scenario_result2.default(scenario, _status2.default.SKIPPED));case 2: scenarioRunner = new _scenario_runner2.default({ eventBroadcaster: this.eventBroadcaster, options: this.options, scenario: scenario, supportCodeLibrary: this.supportCodeLibrary });_context7.next = 5;return ( scenarioRunner.run());case 5:return _context7.abrupt('return', _context7.sent);case 6:case 'end':return _context7.stop();}}}, _callee7, this);}));function runScenario(_x3) {return _ref8.apply(this, arguments);}return runScenario;}() }]);return FeaturesRunner;}();exports.default = FeaturesRunner;