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

別のconfファイルがforeachによってリストされていたとしても、最初の構成ファイルでのみ分度器を実行してから停止します。

誰かが私が欠けているものについて考えを持っていますか?

ありがとう

4

1 に答える 1

1

私は回避策を見つけました。やりたいことだけを行うために gulp を使用しようとする代わりに、小さなシェル スクリプトを作成しました。さて、私の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);

そして、シェル スクリプトを使用してフォルダーを解析し、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 に答える