2017-03-06 23 views
6

Tôi đang cố chạy thử nghiệm song song được viết bằng cách sử dụng nightwatchjs trong Docker bằng Selenium Hub. Tôi có thể nhận được các thử nghiệm để chạy song song trong Docker mà không có Selenium Hub, tuy nhiên, một số tiến trình con sẽ hết thời gian gây ra nhiều lần thử lại. Kết quả rất không nhất quán. Tôi hy vọng sẽ sử dụng Selenium Hub hoặc một cái gì đó tương tự để loại bỏ thời gian chờ và thử lại để kết quả kiểm tra phù hợp hơn, ổn định và không hết thời gian chờ.nightwatchjs chế độ song song selenium hub docker soạn

Tuy nhiên, bây giờ khi tôi chạy docker-compose run --rm nightwatch, sử dụng mã sau, máy chủ selen sẽ bắt đầu ở chế độ song song và nhiều quy trình con sẽ được bắt đầu, tuy nhiên, chỉ có quy trình đầu tiên sẽ thực thi. Sau đó, các quá trình con khác sẽ nhận được Error retrieving a new session from the selenium server. Connection refused! Is selenium server started? Tôi thiếu một cái gì đó để có được các bài kiểm tra nightwatchjs để chạy song song mà không có thời gian ra?

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 
    } 
    } 
}; 

Docker-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

Bạn có thể đăng Dockerfile ban đêm không? –

+0

@BaoTran Tôi đã bao gồm Dockerfile nightwatch. – wwwuser

Trả lời

2

Những hình ảnh nút Docker được cấu hình để chạy chỉ một trường hợp trình duyệt. Bạn có thể thay đổi điều này bằng cách ghi đè các biến môi trường, như vậy:

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 

Trong trường hợp bạn quan tâm, tôi phát hiện ra điều này bằng cách xem Dockerfile source.

Các vấn đề liên quan