我目前正在使用2个配置文件来使用Jenkins运行我的量角器脚本。
devConfig.ts and prodConfig.ts
这些具有开发者凭证和URL以及产品凭证和URL。
我有两个运行不同命令的Jenkins作业
npm run tsc && protractor tmp/devConfig.js --suite devRegression
npm run tsc && protractor tmp/devConfig.js --suite prodRegression
与其有两个配置文件,不如一个文件怎么做?通过传递URL,Creds,Suite和浏览器的参数?
我能够在Jenkins上进行设置:
这导致
但是我无法将它们传递回量角器脚本。有没有直接的方法来构造这些参数并将其传递给量角器?
答案 0 :(得分:1)
对于量角器,请查看this page
根据其内容,将其包含在您的conf.js
中:
module.exports = {
params: {
login: {
email: 'default',
password: 'default'
}
},
// * other config options *
}
您可以在CMD中向其传递任何参数,如下所示:
protractor --baseUrl='http://some.server.com' conf.js --parameters.login.email=example@gmail.com
--parameters.login.password=foobar
所以您最终在自己的规格中拥有了它:
describe('describe some test', function() {
it('describe some step', function() {
browser.get(browser.baseUrl);
$('.email').sendKeys(browser.params.login.email);
$('.password').sendKeys(browser.params.login.password);
});
});
对于Jenkins而言,只需如下构建命令即可:
protractor --baseUrl=${url} conf.js --parameters.login.email=${email}
--parameters.login.password=${password}
如果只想传递一个参数,另一种方法是在config.js
中拥有对象,并映射所有相关参数,如下所示:
let param_mapping = {
prod: {
url: "https://prod.app.com",
email: "prod@gmail.com",
password: "Test1234"
},
dev: {
url: "https://dev.app.com",
email: "dev@gmail.com",
password: "Test1234"
},
stage: {
url: "https://stage.app.com",
email: "stage@gmail.com",
password: "Test1234"
}
};
let parameters = param_mapping[process.ENV.CUSTOM_ENV];
exports.config = {
baseUrl: parameters.url,
params: parameters,
// ...
};
,然后使用环境变量启动过程:
CUSTOM_ENV=dev protractor protractor.conf.js
请注意,我现在尚未测试此特定代码,但是前一阵子我已经测试了逻辑,因此这可以作为您的方法