function () {
    var self = this;

    return new Promise(function (resolve, reject) {
      var configuration      = new CucumberConfiguration(),
          runtime            = Cucumber.Runtime(configuration),
          formatters         = configuration.getFormatters(),
          eventMediator      = new EventEmitter(),
          interceptFormatter = new InterceptFormatter(eventMediator);

      formatters.forEach(function (formatter) {
        runtime.attachListener(formatter);
      });

      runtime.attachListener(interceptFormatter);

      runtime.start(function () {
        resolve();
      });

      eventMediator.on('scenario end', function () {
        self.testsFinished++;
        self.totalTests++;
        self.checkMemory();
      });

      eventMediator.on('fail', function () {
        self.hasFailingTest = true;
      });

      eventMediator.on('end', function () {
        self.checkFinishedTests();
        self.checkTestCount();
        self.checkMemory();

        process.send({
          type : 'suiteDone',
          data : process.env.WORKER_TEST
        });

        cluster.worker.kill(0);
      });
    });
  }
function () {
    var self = this;

    return new Promise(function (resolve, reject) {
      var configuration      = new CucumberConfiguration(),
          runtime            = Cucumber.Runtime(configuration),
          formatters         = configuration.getFormatters(),
          eventMediator      = new EventEmitter(),
          interceptFormatter = new InterceptFormatter(eventMediator);

      formatters.forEach(function (formatter) {
        runtime.attachListener(formatter);
      });

      runtime.attachListener(interceptFormatter);

      runtime.start(function () {
        resolve();
      });

      eventMediator.on('scenario end', function () {
        self.testsFinished++;
        self.totalTests++;
        self.checkMemory();
      });

      eventMediator.on('fail', function () {
        self.hasFailingTest = true;
      });

      eventMediator.on('end', function () {
        self.checkFinishedTests();
        self.checkTestCount();
        self.checkMemory();

        process.send({
          type : 'suiteDone',
          data : process.env.WORKER_TEST
        });

        cluster.worker.kill(0);
      });
    });
  }
function ( ) { var self = this ; return new Promise ( function ( resolve , reject ) { var configuration = new CucumberConfiguration ( ) , runtime = Cucumber . Runtime ( configuration ) , formatters = configuration . getFormatters ( ) , eventMediator = new EventEmitter ( ) , interceptFormatter = new InterceptFormatter ( eventMediator ) ; formatters . forEach ( function ( formatter ) { runtime . attachListener ( formatter ) ; } ) ; runtime . attachListener ( interceptFormatter ) ; runtime . start ( function ( ) { resolve ( ) ; } ) ; eventMediator . on ( 'scenario end' , function ( ) { self . testsFinished ++ ; self . totalTests ++ ; self . checkMemory ( ) ; } ) ; eventMediator . on ( 'fail' , function ( ) { self . hasFailingTest = true ; } ) ; eventMediator . on ( 'end' , function ( ) { self . checkFinishedTests ( ) ; self . checkTestCount ( ) ; self . checkMemory ( ) ; process . send ( { type : 'suiteDone' , data : process . env . WORKER_TEST } ) ; cluster . worker . kill ( 0 ) ; } ) ; } ) ; }
////////////////////////////////////////////////////////////////////////// Public methods ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// 
CucumberRunner.start() -> Object
////////////////////////////////////////////////////////////////////////// Public methods ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// CucumberRunner . start () - > Object