2017-03-06 7 views
6

Selenium 허브를 사용하여 Docker에서 nightwatchjs를 사용하여 작성한 테스트를 병렬로 실행하려고합니다. Selenium Hub가없는 Docker에서 테스트가 병렬로 실행되도록 할 수는 있지만 일부 자식 프로세스는 시간 초과로 인해 여러 번 재 시도 할 수 있습니다. 결과는 매우 일치하지 않습니다. 테스트 결과가보다 일관되고 안정적이며 타임 아웃되지 않도록 타임 아웃 및 재 시도를 제거하기 위해 Selenium Hub 또는 유사한 것을 사용하기를 희망합니다.nightwatchjs 병렬 모드 셀렌 허브 도커 작성

그러나 다음 코드를 사용하여 docker-compose run --rm nightwatch을 실행하면 셀렌 서버가 병렬 모드로 시작되고 여러 자식 프로세스가 시작되지만 첫 번째 노드 만 실행됩니다. 그렇다면 다른 자식 프로세스는 Error retrieving a new session from the selenium server. Connection refused! Is selenium server started?을 얻게 될 것입니다. nightwatchjs 테스트가 시간 초과없이 병렬로 실행되도록하기 위해 뭔가가 누락 되었습니까?

nightwatch.conf.js

module.exports = { 
    src_folders: ['tests'], 
    output_folder: 'reports', 
    custom_commands_path: '', 
    custom_assertions_path: '', 
    page_objects_path: 'page_objects', 
    test_workers: true, 
    live_output: true, 
    detailed_output: true, 

    selenium: { 
    start_process: true, 
    server_path: './bin/selenium-server-standalone-3.0.1.jar', 
    log_path: '', 
    host: '127.0.0.1', 
    port: 4444, 
    cli_args: { 
     'webdriver.chrome.driver' : './node_modules/chromedriver/bin/chromedriver' 
    } 
    }, 

    test_settings: { 
    default: { 
    launch_url: 'https://example.com', 
    selenium_port: 4444, 
    selenium_host: 'hub', 
    silent: true, 
    screenshots: { 
     'enabled': false, 
     'path': '' 
    }, 
    desiredCapabilities: { 
     browserName: 'chrome', 
     javascriptEnabled: true, 
     acceptSslCerts: true, 
     chromeOptions: { 
     args: [ 
      '--window-size=1024,768', 
      '--no-sandbox' 
     ] 
     } 
    }, 
    globals: { 
     waitForConditionTimeout: 20000, 
     asyncHookTimeout: 70000 
    } 
    } 
}; 

고정 표시기 - compose.yml

version: '2' 

services: 
    nightwatch: 
    build: 
     context: . 
    command: /bin/sh -c "node ./node_modules/nightwatch/bin/nightwatch" 
    links: 
     - chrome 
     - hub 
    volumes: 
     - .:/opt/nightwatch 
    chrome: 
    environment: 
     VIRTUAL_HOST: node.chrome.docker 
     HUB_PORT_4444_TCP_ADDR: hub 
     HUB_PORT_4444_TCP_PORT: 4444 
    image: selenium/node-chrome:3.1.0-astatine 
    links: 
     - hub 
    hub: 
    ports: 
     - 4444:4444 
    image: selenium/hub:3.1.0-astatine 

Dockerfile

FROM java:8-jre 

## Node.js setup 
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - 
RUN apt-get install -y nodejs 

RUN npm config set spin false 

WORKDIR /app 

COPY . ./ 

RUN npm install 
+0

야간 시계 독을 게시 할 수 있습니까? –

+0

@BaoTran 밤에는 Dockerfile을 포함 시켰습니다. – wwwuser

답변

2

고정 표시기 노드 이미지는 하나의 브라우저 인스턴스를 실행하도록 구성되어 있습니다. 당신과 같이, 무시 환경 변수에 의해 변경할 수 있습니다 : 당신이 관심이 경우

chrome: 
    environment: 
     VIRTUAL_HOST: node.chrome.docker 
     HUB_PORT_4444_TCP_ADDR: hub 
     HUB_PORT_4444_TCP_PORT: 4444 
     NODE_MAX_INSTANCES: 5 
     NODE_MAX_SESSION: 5 
    image: selenium/node-chrome:3.1.0-astatine 
    links: 
     - hub 

, 나는 Dockerfile source보고이를 발견했다.