无法传递Jenkins参数以运行量角器脚本

时间:2019-10-24 15:00:41

标签: jenkins automation protractor automated-tests

我目前正在使用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上进行设置:

enter image description here

这导致

enter image description here

但是我无法将它们传递回量角器脚本。有没有直接的方法来构造这些参数并将其传递给量角器?

1 个答案:

答案 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

请注意,我现在尚未测试此特定代码,但是前一阵子我已经测试了逻辑,因此这可以作为您的方法