Как запустить testcafe из докера на удаленной сетке селена - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу запустить тесты testcafe в браузере, установленном на удаленном компьютере, используя селектор сетки селена изображение (selenium / standalone-chrome-debug).

Я могу выполнить тесты testcafe в этом удаленном браузере с моего локального компьютера с помощью команды:

SELENIUM_SERVER=http://<remote machine IP>:4444/wd/hub testcafe selenium:chrome tests/

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

Проблема в том, что вместо того, чтобы использовать приведенную выше команду, я пытаюсь выполнить тесты с моего локального компьютера с помощью Docker.Это мой docker-compose.yml файл:

 my-app:
    image: my-app:0.1
    ports:
      - "3000:3000"
 auit:
    build:
      context: .
      dockerfile: Dockerfile.auit.testcafe
    ports:
      - "1337:1337"
      - "1338:1338"
    shm_size: 2G
    environment:
    - SELENIUM_SERVER=http://<remote machine IP>:4444/wd/hub
    depends_on:
    - my-app
    entrypoint: ["/opt/testcafe/docker/testcafe-docker.sh", "selenium:chrome", "/tests"]

Содержимое Dockerfile.auit.testcafe:

FROM testcafe/testcafe
WORKDIR /
USER root
COPY ./tests /tests
RUN npm install testcafe-browser-provider-selenium

Итак, когда я запускаю:

docker-compose up auit

браузерзапущен в моей сетке селена, но он пытается подключиться к IP моего локального док-контейнера вместо моей машины.Я пытался использовать параметр --hostname для установки IP-адреса моего локального компьютера, но я получаю сообщение об ошибке:

ERROR The specified "<my IP>" hostname cannot be resolved to the current machine.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 19 декабря 2018

Может ли сервер Selenium получать доступ к вашему локальному компьютеру по имени хоста, а не по IP?Если это так, попробуйте следующий подход.

Добавьте параметр extra_hosts в docker-compose.yml

auit:
   extra_hosts:
      - "my-hostname:127.0.0.1"

, где my-hostname - это имя хоста вашего локального компьютера, видимое для Selenium Grid.

Затем укажите это имя хоста в параметре TestCafe --hostname, как вы делали с IP.

Однако, если использование IP вместо имени хоста является единственной опцией, потребуется большеусилия по реализации этого (если это вообще возможно).

...