如何按顺序运行带有不同配置文件的量角器?

时间:2016-07-28 11:45:45

标签: protractor gulp-protractor

我有不同的量角器配置文件,我想创建一个gulp任务,按顺序为每个配置文件运行量角器。 这是我的实际代码:

gulp.src('conf/protractor.conf.*.js')
      .pipe($.debug())
      .pipe($.foreach(function(stream, file){
        var configFileName = path.join('conf/', path.basename(file.path));

        console.log(configFileName);

        gulp.src(path.join(conf.paths.e2e, '/**/*.js'))
            .pipe($.protractor.protractor({
              configFile: configFileName,
              args: args
            }))
            .on('error', function (err) {
              // Make sure failed tests cause gulp to exit non-zero
              console.log('Error catch by gulp');
              throw err;
            })
            .on('end', function () {
              // Close browser sync server
              browserSync.exit();
              done();
              return stream;
            });
      }));

它只使用第一个配置文件运行量角器,然后停止,即使foreach列出了不同的conf文件。

有没有人知道我错过了什么?

由于

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方法:我创建了一个小的shell脚本,而不是仅尝试使用gulp来做我想做的事情。 现在,我的gulp任务从命令行参数中获取protractor配置文件路径,如:

var argv = require('minimist')(process.argv.slice(2));

if (!argv.conf || typeof argv.conf !== 'string' ) throw new Error('protractor configuration file path required');

function runProtractor (done) {
  gulp.src(path.join(conf.paths.e2e, '/**/*.js'))
      .pipe($.protractor.protractor({
        configFile: argv.conf
      }))
      .on('error', function (err) {
        // Make sure failed tests cause gulp to exit non-zero
        throw err;
      })
      .on('end', function () {
        // Close browser sync server
        browserSync.exit();
        done();
      });
}

gulp.task('protractor', ['protractor:src']);
gulp.task('protractor:src', ['serve:e2e', 'webdriver-update'], runProtractor);

我使用shell脚本来解析我的文件夹并为每个配置文件调用gulp protractor

#!/usr/bin/env bash

for filename in conf/protractor.conf.*.js; do
    gulp protractor --conf=$filename
done

它就像一个魅力。