2016-06-15 15 views
0

Das ist mein gulpfile:schluck-browserstack und schlucke-Gurken scheinen nicht gut zu spielen zusammen

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()); 
}); 

Wenn alle Szenarien passieren, schluck hängt, und nie verlassen. Jede Hilfe wäre willkommen. Hier

Antwort

0

ist die Lösung, die ich am Ende mit

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); 
});