cucumberOpts.tags 与 Protractor + CucumberJs + Gulp 的用法
cucumberOpts.tags usage with Protractor + CucumberJs + Gulp
大家好!
我安装了以下版本:
"protractor": "~2.5.1",
"gulp-protractor": "1.0.0",
"cucumber": "~0.7.0",
I had installed this, because the project has version < 4 of NPM and Protractor 3.0.0 needs that.
我的 protractor.conf.js
上有以下内容
framework: 'cucumber',
//frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: 'features/step_definitions/**/*.js',
format: 'pretty',
tags: '@Test',
},
我的 gulp 任务如下所示:
var args = require('yargs').argv;
module.exports = function(gulp, plugins) {
return function (done) {
var protractorConfig = '',
testConfig = '',
environment = args.environment || 'devel',
// tag = args.tag || 'smoke',
baseUrl;
if (!args.baseUrl) {
baseUrl = 'http://test.me/frontend-build-tests/';
} else if (args.baseUrl.match(/^(?:https?\:)?\/\//)) {
baseUrl = args.baseUrl;
} else {
baseUrl = 'http://tests..me/frontend-build-tests/' + args.baseUrl + '/';
}
switch(environment) {
case 'devel' :
protractorConfig = 'e2e/protractor.config.devel.js';
testConfig = '../config/devel';
break;
case 'live' :
protractorConfig = 'e2e/protractor.config.live.js';
testConfig = '../config/live';
break;
case 'remote' :
protractorConfig = 'e2e/protractor.config.remote.js';
testConfig = '../config/live';
break;
default:
case 'build' :
protractorConfig = 'e2e/protractor.config.build.js';
testConfig = '../config/build';
break;
}
gulp.src([
//'./e2e/page-objects/*.js'
'e2e/features/*.feature'
])
.pipe(plugins.protractor.protractor({
configFile: protractorConfig,
args: [
'--verbose',
'--no-stackTrace',
//'--cucumberOpts.tags', tag,
'--params.test.config', testConfig,
'--baseUrl', baseUrl
]
}))
.on('error', function() {
done();
process.exit(1);
});
};
};
我 运行 使用 npm run test-e2e
命令,其中 运行 是一个只包含这两行的脚本
#!/bin/bash -ex
gulp test-e2e "$@"
在上面的配置中,您可能会注意到我已经注释掉了 --cucumberOpts.tags
选项,因为我无法让它工作,当我 运行 使用参数 [=19= 进行测试时] 好像它没有听到那个参数,因为我可以看到它执行所有测试而不是标记的测试.....
所以...我在这里做错了什么?
我把答案留给我自己 post 万一有人遇到同样的问题,发现修改如下,我让它工作,显然参数的顺序是错误的,同样,我们不需要用引号括起 @ANYTHING...
gulp 任务:
var protractorConfig = '',
testConfig = '',
environment = args.environment || 'devel',
tag = args.tag || '@Sanity',
baseUrl;
gulp 任务:
.pipe(plugins.protractor.protractor({
configFile: protractorConfig,
args: [
'--verbose',
'--no-stackTrace',
'--params.test.config', testConfig,
'--baseUrl', baseUrl,
'--cucumberOpts.tags', tag
]
}))
量角器配置文件:
framework: 'cucumber',
//frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: 'features/step_definitions/**/*.js',
format: 'pretty'
},
命令应该是这样的
npm run test-e2e -- --baseUrl http://local.me/e2e/cases/devel/ --tag @Sanity
大家好!
我安装了以下版本:
"protractor": "~2.5.1",
"gulp-protractor": "1.0.0",
"cucumber": "~0.7.0",
I had installed this, because the project has version < 4 of NPM and Protractor 3.0.0 needs that.
我的 protractor.conf.js
framework: 'cucumber',
//frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: 'features/step_definitions/**/*.js',
format: 'pretty',
tags: '@Test',
},
我的 gulp 任务如下所示:
var args = require('yargs').argv;
module.exports = function(gulp, plugins) {
return function (done) {
var protractorConfig = '',
testConfig = '',
environment = args.environment || 'devel',
// tag = args.tag || 'smoke',
baseUrl;
if (!args.baseUrl) {
baseUrl = 'http://test.me/frontend-build-tests/';
} else if (args.baseUrl.match(/^(?:https?\:)?\/\//)) {
baseUrl = args.baseUrl;
} else {
baseUrl = 'http://tests..me/frontend-build-tests/' + args.baseUrl + '/';
}
switch(environment) {
case 'devel' :
protractorConfig = 'e2e/protractor.config.devel.js';
testConfig = '../config/devel';
break;
case 'live' :
protractorConfig = 'e2e/protractor.config.live.js';
testConfig = '../config/live';
break;
case 'remote' :
protractorConfig = 'e2e/protractor.config.remote.js';
testConfig = '../config/live';
break;
default:
case 'build' :
protractorConfig = 'e2e/protractor.config.build.js';
testConfig = '../config/build';
break;
}
gulp.src([
//'./e2e/page-objects/*.js'
'e2e/features/*.feature'
])
.pipe(plugins.protractor.protractor({
configFile: protractorConfig,
args: [
'--verbose',
'--no-stackTrace',
//'--cucumberOpts.tags', tag,
'--params.test.config', testConfig,
'--baseUrl', baseUrl
]
}))
.on('error', function() {
done();
process.exit(1);
});
};
};
我 运行 使用 npm run test-e2e
命令,其中 运行 是一个只包含这两行的脚本
#!/bin/bash -ex
gulp test-e2e "$@"
在上面的配置中,您可能会注意到我已经注释掉了 --cucumberOpts.tags
选项,因为我无法让它工作,当我 运行 使用参数 [=19= 进行测试时] 好像它没有听到那个参数,因为我可以看到它执行所有测试而不是标记的测试.....
所以...我在这里做错了什么?
我把答案留给我自己 post 万一有人遇到同样的问题,发现修改如下,我让它工作,显然参数的顺序是错误的,同样,我们不需要用引号括起 @ANYTHING...
gulp 任务:
var protractorConfig = '',
testConfig = '',
environment = args.environment || 'devel',
tag = args.tag || '@Sanity',
baseUrl;
gulp 任务:
.pipe(plugins.protractor.protractor({
configFile: protractorConfig,
args: [
'--verbose',
'--no-stackTrace',
'--params.test.config', testConfig,
'--baseUrl', baseUrl,
'--cucumberOpts.tags', tag
]
}))
量角器配置文件:
framework: 'cucumber',
//frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: 'features/step_definitions/**/*.js',
format: 'pretty'
},
命令应该是这样的
npm run test-e2e -- --baseUrl http://local.me/e2e/cases/devel/ --tag @Sanity