0

This is my gulpfile:

var gulp = require('gulp');

var cucumber = require('gulp-cucumber')
var browserStack = require('gulp-browserstack');

gulp.task('cucumber', function() {
  return gulp.src('features/my_feature.feature')
    .pipe(browserStack.startTunnel({
      key: '<itsasecret>'
    }))
    .pipe(cucumber({}))
    .pipe(browserStack.stopTunnel());
});

When all the scenarios pass, gulp hangs, and never exits. Any help would be appreciated.

abendigo
  • 954
  • 1
  • 8
  • 31

1 Answers1

0

Here is the solution I ended up using

const gulp = require('gulp');

const cucumber = require('gulp-cucumber')
const BrowserStackTunnel = require('browserstacktunnel-wrapper');

var tunnel;
function startTunnel(options) {
  return new Promise((resolve, reject) => {
    tunnel = new BrowserStackTunnel(options);

    tunnel.start(function(error) {
     error ? reject(error) : resolve();
    });
  });
}

function stopTunnel(error) {
  return new Promise((resolve, reject) => {
    function resolveOrReject() {
      error ? reject(error) : resolve();
    }

    tunnel ? tunnel.stop(resolveOrReject) : resolveOrReject();
  });
};

function createCucumberPromise(src, options) {
  return function() {
    return new Promise((resolve, reject) => {
      gulp.src(src)
        .pipe(cucumber(options))
        .on('end', resolve)
        .on('error', reject);
      });
  }
};

gulp.task('cucumber', () => {
  return startTunnel({
      key: '<stillasecret>'
    })
    .then(createCucumberPromise('features/my_feature.feature', {
      // format: 'json:output.json'
      // tags: '@wip'
    }))
    .then(stopTunnel, stopTunnel);
});
abendigo
  • 954
  • 1
  • 8
  • 31