Проблемы с передачей параметров Jenkins для запуска сценариев Protractor - PullRequest
0 голосов
/ 24 октября 2019

В настоящее время я использую 2 конфигурационных файла для запуска своих скриптов Protractor с использованием Jenkins.

devConfig.ts and prodConfig.ts

У них есть dev devs и URL, а также prod creds и URL.

У меня есть дваЗадания Jenkins, которые запускают разные команды

npm run tsc && protractor tmp/devConfig.js --suite devRegression
npm run tsc && protractor tmp/devConfig.js --suite prodRegression

Вместо того, чтобы иметь два конфигурационных файла, как это можно сделать в одном? Передав параметры для URL, Creds, Suite и Browser?

Мне удалось настроить на Jenkins:

enter image description here

, и это приводитна

enter image description here

Но я не могу передать их обратно в сценарии транспортира. Есть ли простой способ построить эти параметры и передать их транспортиру?

1 Ответ

1 голос
/ 24 октября 2019

Для стороны транспортира проверьте эту страницу

В соответствии с ее содержанием, имея это в своем 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);
  });
});

Для Дженкинса просто создайте команду следующим образом:

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

Обратите внимание, я не тестировал этот конкретный код сейчас, но я тестировал логику некоторое время назад, так что это может быть ваш подход

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...