Ошибка: не найден update-config.json с Docker, Protractor и SauceLabs

Я пытаюсь выполнить автоматические сквозные тесты с помощью Protractor + SauceLabs в контейнере Docker и получаю сообщение об ошибке: update-config.json не найден. Запустите 'webdriver-manager update', чтобы загрузить двоичные файлы. ' Теперь я запускаю 'webdriver-manager update --standalone false' перед запуском сквозных тестов (автономный, потому что мне не нужна автономная версия, которая также требует java). Интересно, что (можно увидеть в выводе командной строки ниже) эта команда работает, и я действительно могу найти файл update-config.json, однако я все равно получаю ту же ошибку. Возможно, это просто ошибка транспортира, но сначала я хотел проверить переполнение стека. Любая помощь будет принята с благодарностью, спасибо!

Да, и, конечно же, тесты работают локально, даже когда я удаляю nodemodules и запускаю npm install и npm run e2eauce, ИЛИ очищаю их, выполняю npm install, npm run webdriver-update и npm run e2e -auce.

Соответствующие зависимости "@ angular / cli": "1.6.6", "узел": "8.10.0", "npm": "5.6.0", "транспортир": "5.1.2", "ts-node": "4.1.0",

Команды package.json:

"e2e-sauce": "ng e2e --port 8100 --env test --sauce",
"webdriver-update": "webdriver-manager update --standalone false --gecko false",

сценарий bash, который я запускаю:

# for testing purposes, normally environment variable
GIT_COMMIT=aTestCommit;

if [[ -z $GIT_COMMIT ]]; then
  echo "\$GIT_COMMIT environment variable is required!";
  exit 1;
fi

function cleanup {
  docker rm -f $GIT_COMMIT
}

trap cleanup EXIT INT TERM

COMMAND = ""
COMMAND+ = "npm run webdriver-update"
COMMAND+ = " && ls ./node_modules/protractor/node_modules/webdriver-manager/selenium"
COMMAND+ = " && ng e2e --port 8100 --env test --sauce"

set -ex

docker-compose create --build builder

docker-compose run --name $GIT_COMMIT builder bash -c "$COMMAND"

DockerFile:

FROM node:8

# Install Chrome
RUN \
  wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
  echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
  apt-get update && \
  apt-get install -y google-chrome-stable && \
  rm -rf /var/lib/apt/lists/*

# Set the working directory to /app
WORKDIR /app

# Give the node user access to /usr/local
RUN chown -R node:node /usr/local

# Give the node user access to /usr/local
RUN chown -R node:node /app

# Change to the node user 
USER node

# Install the Angular CLI globally
RUN npm install -g @angular/[email protected]

# Add the package.json and the package-lock.json to the container at /app
COPY package.json package-lock.json ./

# Install dependencies called out in the package.json
RUN npm install

# Add angular-cli karma and typescript configs to the container at /app
COPY .angular-cli.json karma.conf.js tsconfig.json tslint.json protractor.conf.js ./

# Add the app src to the container at /app/src
COPY src ./src

# Add the e2e tests to the container at /app/e2e
COPY e2e ./e2e

Вывод командной строки при запуске моего сценария bash:

> webdriver-manager update --standalone false
[18:04:49] I/file_manager - creating folder /app/node_modules/protractor/node_modules/webdriver-manager/selenium
[18:04:56] I/update - chromedriver: unzipping chromedriver_2.37.zip
[18:04:56] I/update - chromedriver: setting permissions to 0755 for /app/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.37
[18:05:01] I/update - geckodriver: unzipping geckodriver-v0.20.1.tar.gz
[18:05:01] I/update - geckodriver: setting permissions to 0755 for /app/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.20.1
chrome-response.xml    gecko-response.json     update-config.json
chromedriver_2.37      geckodriver-v0.20.1
chromedriver_2.37.zip  geckodriver-v0.20.1.tar.gz
The option '--sauce' is not registered with the e2e command. Run `ng e2e --help` for a list of supported options.
** NG Live Development Server is listening on localhost:8100, open your browser on https://localhost:8100/ **
 10% building modules 3/3 modules 0 activeGenerating SSL Certificate              s
Date: 2018-04-12T18:05:18.269Z                                                   i Hash: b57e600f446f16a8f14c
Time: 13770ms
chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 5.83 kB [entry] [rendered]
chunk {main} main.bundle.js, main.bundle.js.map (main) 130 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 323 kB [initial] [rendered]
chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 17.6 kB [initial] [rendered]
chunk {transactions.module} transactions.module.chunk.js, transactions.module.chunk.js.map () 1.17 MB  [rendered]
chunk {vendor} vendor.bundle.js, vendor.bundle.js.map (vendor) 4.11 MB [initial] [rendered]
(node:31) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.

webpack: Compiled successfully.
[18:05:18] I/update - chromedriver: file exists /app/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.37.zip
[18:05:18] I/update - chromedriver: unzipping chromedriver_2.37.zip
[18:05:18] I/update - chromedriver: setting permissions to 0755 for /app/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.37
[18:05:18] I/update - chromedriver: chromedriver_2.37 up to date
[18:05:18] I/launcher - Running 1 instances of WebDriver
[18:05:18] E/local - Error code: 135
[18:05:18] E/local - Error message: No update-config.json found. Run 'webdriver-manager update' to download binaries.
[18:05:18] E/local - Error: No update-config.json found. Run 'webdriver-manager update' to download binaries.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 037
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Основная причина - angular cli ng e2e по умолчанию выполняет webdriver-manager update.

И вы используете глобальный angular cli, а не локальный проект, поэтому он попытается использовать глобальный webdriver-manager для выполнения обновления, но вы не установили глобальный webdriver-manager, поэтому ng e2e сообщает Error: No update-config.json found.

Два варианта решения вашей проблемы:

Опция 1: Отключить webdriver-manager update из ng e2e, добавив --wu false

COMMAND+ = " && ng e2e --port 8100 --env test --sauce --wu false"

Но вам нужно обновить webdriver самостоятельно, как вы это делали до сих пор.

Вариант 2: установить angular cli как локальный пакет проекта, а не глобальный пакет, путем удаления опции -g

# Install the Angular CLI globally
RUN npm install @angular/[email protected]

Большое спасибо за вашу попытку, но, к сожалению, ни один из них, похоже, не решает проблему. В обоих случаях я получаю одну и ту же ошибку.

ElleNeub 16.04.2018 10:45
Ответ принят как подходящий

Обнаружил, что это произошло потому, что я не использовал автономную версию селена (мне не следовало использовать --standalone false). После удаления этой строки и установки java в моем Dockerfile все заработало как мечта.

Другие вопросы по теме