Передайте аргументы скрипту npm для выполнения - PullRequest
2 голосов
/ 03 августа 2020

Я пытаюсь выполнить свой тест с помощью транспортира, и я хотел бы использовать строковую команду, чтобы сообщить пользователю и пароль для входа в приложение, но у меня это не работает:

Это мой пакет. json:

 "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "local": "ng serve --configuration hmr --host local.dev.net",
    "build": "ng build --prod",
    "build:devtest": "npm run i18n && ng build -c devtest",
    "build:dev": "npm run i18n && ng build -c dev",
    "build:qatest": "npm run i18n && ng build -c qatest",
    "build:preprd": "npm run i18n && ng build -c preprd",
    "build:prd": "npm run i18n && ng build -c prd",
    "pree2emom": "tsc",
    "e2e": "protractor dist/out-tsc/e2e/cucumberconfig.js $USER $PASS",

.
.
.
}

И я пишу на консоли:

npm run e2e $USER='--params.login.user=User01'  $PASS='--params.login.password=Pass01'

И это ошибка:

> fdr-ui@2.2.1 e2e C:\Users\cpaez\Documents\Automation\Automation\fdr-ui
> protractor dist/out-tsc/e2e/cucumberconfig.js $USER $PASS "=--params.login.user=User01" "=--params.login.password=Pass01"   

Usage: protractor [configFile] [options]
configFile defaults to protractor.conf.js
The [options] object will override values from the config file.
See the reference config for a full list of options.

Opciones:
  --help                                 Print Protractor help menu   [booleano]
  --version                              Print Protractor version     [booleano]
  --browser, --capabilities.browserName  Browsername, e.g. chrome or firefox
  --seleniumAddress                      A running selenium address to use
  --seleniumSessionId                    Attaching an existing session id
  --seleniumServerJar                    Location of the standalone selenium jar
                                         file
  --seleniumPort                         Optional port for the selenium
                                         standalone server
  --baseUrl                              URL to prepend to all relative paths
  --rootElement                          Element housing ng-app, if not html or
                                         body
  --specs                                Comma-separated list of files to test
  --exclude                              Comma-separated list of files to
                                         exclude
  --verbose                              Print full spec names
  --stackTrace                           Print stack trace on error
  --params                               Param object to be passed to the tests
  --framework                            Test framework to use: jasmine, mocha,
                                         or custom
  --resultJsonOutputFile                 Path to save JSON test result
  --troubleshoot                         Turn on troubleshooting output
  --debuggerServerPort                   Start a debugger server at specified
                                         port instead of repl
  --disableChecks                        Disable cli checks
  --logLevel                             Define Protractor log level [ERROR,
                                         WARN, INFO, DEBUG]
  --explorer, --elementExplorer          Interactively test Protractor commands

Error: more than one config file specified
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! fdr-ui@2.2.1 e2e: `protractor dist/out-tsc/e2e/cucumberconfig.js $USER $PASS "=--params.login.user=User01" "=--params.login.password=Pass01"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the fdr-mom-ui@2.2.1 e2e script.

Потому что я хочу использовать param в такой функции:

BeforeAll(async function ()
    await browser.get('https://web/#login/');
    await browser.sleep(10000)
    await log.email.sendKeys(browser.params.login.user);
    await log.pass.sendKeys(browser.params.login.password);
    await log.go.click();
    await browser.sleep(20000);
});

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Это проще, чем вы думаете. Просто избавьтесь от частей вашей команды $ USER = и $ PASS =.

Команда должна выглядеть так:

npm run e2e --params.login.user=User1 --params.login.password=Pass01

Вам также необходимо изменить свой сценарий в пакете. json. Измените его на следующее, и все будет готово.

"e2e": "protractor dist/out-tsc/e2e/cucumberconfig.js"
2 голосов
/ 03 августа 2020

npm аргументы имеют такую ​​структуру:

пакет. json

{
  "name": "test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "test": "echo $GREETING , arguments passed are: "
  }
}

Вход: GREETING="Hello friend" npm test -- potato chips

Выход: Hello friend , arguments passed are: potato chips

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