Gulp: Wait for express server to start before running tests

时间:2015-10-30 21:22:57

标签: node.js express gulp cucumberjs

I'm pretty new to node. I built a sample express app and wrote some BDD tests for it using cucumber.js. I would like to automate the tests using gulp so that when I run my tests it will first start the express app and, once the server is up, run through the tests. However, currently the tests run before the server is up and therefore all fail. Is there a way to wait (using gulp) for the server to start and only then run the tests?

I'm using gulp-cucumber and gulp-express here (somewhat hidden by gulp-load-plugins).

My gulpfile (partial):

var gulp = require('gulp'),
  plugins = require('gulp-load-plugins')();

gulp.task('server', function () {
  plugins.express.run(['bin/www']);
});

gulp.task('cucumber', ['server'], function() {
  return gulp.src('features/*').pipe(plugins.cucumber({
    'steps': 'features/steps/*.steps.js',
    'support': 'features/support/*.js'
  }));
});

gulp.task('test', ['server', 'cucumber']);

1 个答案:

答案 0 :(得分:1)

我必须使用此解决方案 - https://www.npmjs.com/package/run-sequence

var gulp = require('gulp'),
  plugins = require('gulp-load-plugins')(),
  runSequence = require('run-sequence');

gulp.task('server', function () {
  plugins.express.run(['bin/www']);
});

gulp.task('cucumber', function() {
  return gulp.src('features/*').pipe(plugins.cucumber({
    'steps': 'features/steps/*.steps.js',
    'support': 'features/support/*.js'
  }));
});

gulp.task('test',  function(){
     runSequence('server', 'cucumber');
});
相关问题