nightwatchjs 并行模式 selenium hub docker 撰写
nightwatchjs parallel mode selenium hub docker compose
我正在尝试 运行 使用 Selenium Hub 在 Docker 中使用 nightwatchjs 并行编写的测试。在没有 Selenium Hub 的情况下,我能够在 Docker 中并行进行 运行 的测试,但是,一些子进程会超时导致多次重试。结果非常不一致。我希望使用 Selenium Hub 或类似的东西来消除超时和重试,以便测试结果更加一致、稳定并且不会超时。
但是,现在我运行 docker-compose run --rm nightwatch
,使用下面的代码,selenium server会以并行方式启动,会启动多个子进程,但是只有第一个会执行.然后其他子进程将得到 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
}
}
};
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
Docker文件
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
docker 节点图像配置为 运行 只有一个浏览器实例。您可以通过覆盖环境变量来更改它,如下所示:
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 发现的。
我正在尝试 运行 使用 Selenium Hub 在 Docker 中使用 nightwatchjs 并行编写的测试。在没有 Selenium Hub 的情况下,我能够在 Docker 中并行进行 运行 的测试,但是,一些子进程会超时导致多次重试。结果非常不一致。我希望使用 Selenium Hub 或类似的东西来消除超时和重试,以便测试结果更加一致、稳定并且不会超时。
但是,现在我运行 docker-compose run --rm nightwatch
,使用下面的代码,selenium server会以并行方式启动,会启动多个子进程,但是只有第一个会执行.然后其他子进程将得到 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
}
}
};
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
Docker文件
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
docker 节点图像配置为 运行 只有一个浏览器实例。您可以通过覆盖环境变量来更改它,如下所示:
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 发现的。