Транспортир: не удалось найти update-config.json - PullRequest
0 голосов
/ 03 октября 2018

Я преобразовал свои тесты Cucumber, работающие через Protractor, в TypeScript.Если я запускаю тесты из командной строки, например:

rimraf cucumber/build && tsc -p cucumber && protractor cucumber/build/protractor.conf.js 

Это нормально, тесты запускаются успешно и правильно.Однако, если я перенесу эти команды в сценарий, например:

// package.json
...
"cucumber": "rimraf cucumber/build && tsc -p cucumber && protractor cucumber/build/protractor.conf.js"
...

, то произойдет следующая ошибка:

[13:54:55] I/launcher - Running 1 instances of WebDriver
[13:54:55] I/direct - Using ChromeDriver directly...
[13:54:55] E/direct - Error code: 135
[13:54:55] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[13:54:55] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.

Я очень плохо знаком с Protractor и Cucumber,и селен, так что понятия не имею, что делать!Я попытался запустить команду обновления, но она не дает никакого эффекта.

Мой protractor.conf.ts выглядит так:

import { Config } from 'protractor';

export let config: Config = {
  allScriptsTimeout: 11000,
  specs: [
    '../features/**/*.feature'
  ],
  seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ["--disable-gpu"]
    }
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'custom',
  frameworkPath: require.resolve('protractor-cucumber-framework'),
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, '../tsconfig.json')
    });

    const chai = require('chai');
    const chaiAsPromised = require('chai-as-promised');

    // Load chai-as-promised support
    chai.use(chaiAsPromised);

    // Initialise should API (attaches as a property on Object)
    chai.should();
  },
  cucumberOpts: {
    require: [
      './features/**/steps/*.steps.js'
    ]
  }
};

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 04 октября 2018

Это как npm scripts разработан.Если вы определите cmd в блоке scripts в package.json, npm попытается найти исполняемый двоичный файл, используемый в cmd, из папки локального пакета проекта, которая является <folder of package.json>/node_modules/.bin.

Когда вы вводите и выполняете protractor cucumber/build/protractor.conf.js непосредственно в окне cmd, исполняемый двоичный файл: protractor здесь находится из переменной среды PATH, а не из папки локального пакета проекта.

В этом заключается отличие поиска executable binary в scripts файла package.json, а не в файле package.json.

Чтобы устранить проблему, необходимо выполнить обновление webdriver-manager для локального пакета проекта, это создастupdate-config.json в папку локального пакета проекта.

"cucumber": "rimraf cucumber/build && tsc -p cucumber && webdriver-manager update && protractor cucumber/build/protractor.conf.js"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...