我有不同的量角器配置文件,我想创建一个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文件。
有没有人知道我错过了什么?
由于
答案 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
它就像一个魅力。