Запустите тесты Cucumber внутри док-контейнера, используя Java - PullRequest
0 голосов
/ 16 апреля 2019

Постановка проблемы: в облаке есть linux vm, который мы используем для запуска наших регрессионных тестов (исходный код теста находится в vm), поэтому нам просто нужно создать контейнер докера с установленной сеткой, тогда мыВызов mvn clean test для запуска тестов в сетке

Я пробовал два разных подхода к этой проблеме

1) встраивание всего исходного кода и зависимостей в jar-файлы, копирование его в контейнер с использованием сопоставления томов изатем запустив его, используя

 java -cp websiteautomation-1.0.jar:websiteautomation-1.0-tests.jar:libs/* -Dcucumber.options=classpath:features org.junit.runnner.JUnitCore runner.CucumberRunner

Проблема, с которой я работаю при таком подходе каждый раз:

Error: Could not find or load main class org.junit.runnner.JUnitCore

Caused by: java.lang.ClassNotFoundException: org.junit.runnner.JUnitCore

ШАГИ ОТЛАДКИ:

Я проверилЯ был в нужной целевой папке, где находятся все зависимости, источники и библиотеки, открыл папку libs и увидел, что там есть junit-4.12.jar

2) Я попробовал еще один подход, так как у меня уже были файлы проектав виртуальной машине

создать сетку концентратора селена в виртуальной машине

создать рабочий каталог в создаваемом контейнере

сопоставить его с директивой проектагде находится мой pom.xml

Запустите команду maven для запуска тестов

mvn clean  test -Dtest=CucumberRunner -Dbrowser.name=chrome -Denv.type=uat

Проблема, с которой я работаю при таком подходе, - это (фрагменты ошибок ниже)

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
tests_1 | System info: host: '57b902c11df9', ip: '172.20.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.125-linuxkit', java.version: '11.0.3'
tests_1 | Driver info: driver.version: RemoteWebDriver

Caused by: java.net.ConnectException: Failed to connect to localhost/127.0.0.1:4444
        tests_1 | at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247)


Caused by: java.net.ConnectException: Connection refused (Connection refused)

ШАГИ ОТЛАДКИ:

1) Сетка работает, maven загружает мои зависимости, запускает тест и выдает вышеуказанные ошибки, не может найти мою сетку

2) Проверено, что мой удаленный драйвер настроен нормально

Platform platform = Platform.fromString(os.toUpperCase());
else if(os.contains("linux")) {
    System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/drivers/chrome/chromedriver_linux");
    ChromeOptions options = new ChromeOptions();
    options.setCapability("platform", platform);
    options.addArguments("--kiosk");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),options);
    break;

} 

3) Проверено, что мой HUB, chrome и firefox, selenium - все совместимые версии

Я также поделюсь своим Dockerfile, docker-composeфайл и pom.xml,

Мне нужен еще один набор глаз, будет очень полезно, если вы сможете понять, что не так, я теперь одержим, чтобы исправить это и заставить его работать

Dockerfile

FROM maven:3.6.0-jdk-8 AS build
WORKDIR /usr/share/wow
ENTRYPOINT mvn clean test -Dtest=CucumberRunner -Dbrowser.name=chrome -Denv.type=uat

docker-compose.yml

version: "3"

services:
  hub:
    image: selenium/hub:3.141.59  #elgalu/selenium
    networks:
    - private
    ports:
    - 4444:4444
    - 5900:5900

    environment:
      PORT: 4444
      GRID_BROWSER_TIMEOUT: 300000
      GRID_TIMEOUT: 300000
      GRID_CLEAN_UP_CYCLE: 300000
      GRID_UNREGISTER_IF_STILL_DOWN_AFTER: 300000
      SE_OPTS: -browserTimeout 86400 -timeout 100

  chrome:
    image: selenium/node-chrome:3.141.59 #elgalu/selenium
    networks:
    - private
    depends_on:
    - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      GRID_BROWSER_TIMEOUT: 300000
      GRID_TIMEOUT: 300000
      SCREEN_WIDTH: 1600
      SCREEN_HEIGHT: 1200
    volumes:
    - /dev/shm:/dev/shm # Mitigates the Chromium issue described at https://code.google.com/p/chromium/issues/detail?id=519952


  firefox:
      image: selenium/node-firefox:3.141.59 #elgalu/selenium
      networks:
      - private
      depends_on:
      - hub
      environment:
        HUB_PORT_4444_TCP_ADDR: hub
        HUB_PORT_4444_TCP_PORT: 4444
        GRID_BROWSER_TIMEOUT: 300000
        GRID_TIMEOUT: 300000
        SCREEN_WIDTH: 1600
        SCREEN_HEIGHT: 1200
      volumes:
      - /dev/shm:/dev/shm

  tests:
          image: vinodsiragaon/wow:v3
          depends_on:
            - chrome
            - firefox
            - hub
          working_dir: /usr/share/wow
          environment:
            - BROWSER=chrome
            - HUB_HOST=hub
            - HUB_PORT:4444
            - CUCUMBER_OPTIONS=classpath:features
          volumes:
            -  /Users/vinodsiragaon/Documents/workspace/WOW-Automation-Web:/usr/share/wow
            - ./output:/usr/share/wow/target/cucumber-reports


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