1

我有不同的量角器配置文件,我想创建一个 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 文件。

有谁知道我错过了什么?

谢谢

4

1 回答 1

1

我找到了一种解决方法:我没有尝试只使用 gulp 来做我想做的事情,而是创建了一个小 shell 脚本。现在,我的 gulp 任务从命令行参数获取量角器配置文件路径,如下所示:

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

它就像一个魅力。

于 2016-07-28T13:25:30.600 回答