docker транспортир - сервер досрочно прерван со статусом 127 - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть рабочий пример на моей машине windows 10. Когда я переношу это на linux, через контейнер, используя: node: 8, я получаю ошибку 127.

Я недостаточно знаком с linux или основными требованиями, ie нужна ли ему java установка или другое?

пакет. json

{
  "name": "test1",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webdriver-update": "webdriver-manager update",
    "webdriver-update-chrome": "webdriver-manager update --versions.chrome=78.0.3904.105",
    "test-protractor": "protractor protractor.conf.js --disableChecks"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "chai": "^4.2.0",
    "chai-as-promised": "^7.1.1",
    "cucumber": "^6.0.5",
    "jasmine-spec-reporter": "^4.2.1",
    "protractor": "^5.4.2",
    "protractor-cucumber-framework": "^6.2.0",
    "rimraf": "^3.0.1"
  }
}

protractor.conf

const protractor = require('protractor');

// console.log('browser = ', browser);
exports.config = {
  framework: 'custom',
  frameworkPath: require.resolve('protractor-cucumber-framework'),
  getPageTimeout: 60000,
  allScriptsTimeout: 500000,
  specs: ['features/*.feature'],
  baseURL: 'http://www.google.com/',
  cucumberOpts: {
    require: [
      './features/step_definitions/stepDefinitions.js'
    ],
    tags: false,
    profile: false,
    'no-source': true
  },
  onPrepare: function() {
    browser.ignoreSynchronization = true;
    browser.manage().window().maximize();
    browser.manage().timeouts().implicitlyWait(5000);

  },
  capabilities: {
    browserName: "chrome",
    acceptInsecureCerts: true,
    chromeOptions: {
      args: [
        '--allow-insecure-localhost',
        '--headless',
        '--disaple-gpu',
        '--window-size=1920,1080',
        '--no-sandbox',
        '--disable-dev-shm-usage'
      ],
      prefs: {
        download: {
          prompt_for_download: false,
          extensions_to_open: ''
        },
        profile: {
          default_content_settings: {
            popups: 0
          }
        },
        directory_upgrade: true
      },
      useAutomationExtension: false
    }
  },
  // connec direct to webdriver, instead of local selenium server!
  directConnect: true,
  ignoreUncaughtException: true,
  onComplete: () => {
    // Reporter.createHtmlReport();
  }
}

Dockerfile

FROM node:8


# Create and define the node_modules's cache directory.
RUN mkdir /usr/src/cache
WORKDIR /usr/src/cache

COPY . .
RUN npm install

# run update to get all drivers
RUN npm run webdriver-update

## update to specific chrome version - 78.0.3904.105
RUN npm run webdriver-update-chrome

# overwrite any remaining references to wrong chromedriver...
RUN sed -i -e 's/chromedriver[^"]*/chromedriver_78.0.3904.105/g' node_modules/protractor/node_modules/webdriver-manager/selenium/update-config.json

# run tests
RUN npm run test-protractor

Приведенная выше команда sed просто гарантирует, что обновление -config. json использует выбранную выше chrome версию.

update-config. json

например:

  "node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_78.0.3904.105.exe"

Ошибка:

Сервер досрочно завершил работу со статусом 127

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Если я удаляю свои ссылки на указанную c chrome версию и просто запускаю обновление webdriver-manager следующим образом:

dockerfile

FROM node:8


# Create and define the node_modules's cache directory.
RUN mkdir /usr/src/cache
WORKDIR /usr/src/cache

COPY . .
RUN npm install

# run update to get all drivers
RUN npm run webdriver-update

# run tests
RUN npm run test-protractor

Это моя ошибка

> webdriver-manager update

[05:14:17] I/file_manager - creating folder /usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium
[05:14:17] I/config_source - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/standalone-response.xml https://selenium-release.storage.googleapis.com/
[05:14:17] I/config_source - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chrome-response.xml https://chromedriver.storage.googleapis.com/
[05:14:17] I/config_source - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/gecko-response.json https://api.github.com/repos/mozilla/geckodriver/releases
[05:14:18] I/downloader - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
[05:14:18] I/downloader - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16.zip https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_linux64.zip
[05:14:21] I/downloader - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0.tar.gz https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
[05:14:23] I/update - chromedriver: unzipping chromedriver_80.0.3987.16.zip
[05:14:23] I/update - chromedriver: setting permissions to 0755 for /usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16 [05:14:29] I/update - geckodriver: unzipping geckodriver-v0.26.0.tar.gz
[05:14:29] I/update - geckodriver: setting permissions to 0755 for /usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0
Removing intermediate container 7a4b12efa5b4
 ---> 8d02b754b748
Step 7/9 : RUN npm run test-protractor
 ---> Running in fe8c7c731d48

> test1@1.0.0 test-protractor /usr/src/cache
> protractor protractor.conf.js --disableChecks

[05:14:31] I/launcher - Running 1 instances of WebDriver
[05:14:31] I/direct - Using ChromeDriver directly...
[05:14:31] W/launcher - Ignoring uncaught error Error: Server terminated early with status 127
[05:14:32] E/launcher - BUG: launcher exited with 1 tasks remaining
npm ERR! code ELIFECYCLE
npm ERR! errno 100
npm ERR! test1@1.0.0 test-protractor: `protractor protractor.conf.js --disableChecks`
npm ERR! Exit status 100
npm ERR!
npm ERR! Failed at the test1@1.0.0 test-protractor script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-02-07T05_14_32_065Z-debug.log
The command '/bin/sh -c npm run test-protractor' returned a non-zero code: 100

protractor.conf

Я заметил ошибку в своем конфиге и исправил «ignoreUncaughtExceptions» с помощью s на конце =

exports.config = {
...
  ignoreUncaughtExceptions: true,

Хотя это не так не решить проблему. Я все еще получаю ту же проблему.

update-config. json

{
  "chrome": {
    "last": "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16",
    "all": [
      "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16"
    ]
  },
  "standalone": {
    "last": "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar",
    "all": [
      "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar"
    ]
  },
  "gecko": {
    "last": "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0",
    "all": [
      "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0"
    ]
  }
}
0 голосов
/ 07 февраля 2020

полная ошибка стека ниже:

 ---> Running in f001e88bdac0
Removing intermediate container f001e88bdac0
 ---> 7016f93ad697
Step 9/13 : RUN sed -i -e 's/chromedriver[^"]*/chromedriver_78.0.3904.105/g' node_modules/protractor/node_modules/webdriver-manager/selenium/update-config.json
 ---> Running in 85e4466ff4d5
Removing intermediate container 85e4466ff4d5
 ---> 385d8dca6be9
Step 10/13 : RUN npm run test-protractor
 ---> Running in 8304e6de67c9

> test1@1.0.0 test-protractor /usr/src/cache
> protractor protractor.conf.js --disableChecks

[22:53:19] I/launcher - Running 1 instances of WebDriver
[22:53:19] I/direct - Using ChromeDriver directly...
[22:53:19] E/launcher - Server terminated early with status 127
[22:53:19] E/launcher - Error: Server terminated early with status 127
    at earlyTermination.catch.e (/usr/src/cache/node_modules/selenium-webdriver/remote/index.js:252:52)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/usr/src/cache/node_modules/selenium-webdriver/lib/webdriver.js:769:24)
    at Function.createSession (/usr/src/cache/node_modules/selenium-webdriver/chrome.js:761:15)
    at Direct.getNewDriver (/usr/src/cache/node_modules/protractor/built/driverProviders/direct.js:77:33)
    at Runner.createBrowser (/usr/src/cache/node_modules/protractor/built/runner.js:195:43)
    at q.then.then (/usr/src/cache/node_modules/protractor/built/runner.js:339:29)
    at _fulfilled (/usr/src/cache/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/usr/src/cache/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/usr/src/cache/node_modules/q/q.js:796:13)
    at /usr/src/cache/node_modules/q/q.js:556:49
    at runSingle (/usr/src/cache/node_modules/q/q.js:137:13)
[22:53:19] E/launcher - Process exited with error code 199
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...