2016-07-28 3 views
1

私は分度器のための異なった設定ファイルを持っています、そして、私は順番に各設定ファイルの分度器を実行するgulpタスクを作りたいと思います。別のconfファイルは、foreachので列挙された場合でも、別の設定ファイルで分度器を順番に実行するにはどうすればよいですか?

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

それが停止し、その後、最初にコンフィギュレーションファイルと分度器を実行すると: はここに私の実際のコードです。

誰かが私が逃しているアイデアはありますか?

おかげ

答えて

1

私は回避策が見つかりました:だけではなく、私がやりたいためにがぶ飲みを使用しようと、私は少しシェルスクリプトを作成しました。 さて、そのようなコマンドライン引数から私の一気タスクテイク分度器設定ファイルのパス:

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 

それは魅力のように働く。

関連する問題