我不知道如何使用我的nodejs应用程序运行硒服务器,该应用程序位于自定义e2e:latest
Docker Image的./bundle
文件夹中。
我认为我必须将Selenium Server和Web Driver Chrome添加到e2e:latest
图像的Dockerfile中,不是吗?
这是我到目前为止所做的:
我已经创建了一个Java:带有Nodejs和Nightwatchjs的基于8-JRE的Docker映像:
dockerfile
FROM java:8-jre
## Node.js setup
RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
RUN apt-get install -y nodejs
## Nightwatch
RUN npm install -g nightwatch
然后将此图像用于测试:
gitlab-ci.yml
build:
stage: build
tags:
- deploy
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- meteor npm install --production
- meteor build $PACKAGE_PATH --directory
# Maybe something like...? - docker build -t $CI_REGISTRY_IMAGE:e2e .
nightwatch:
image: e2e:latest
stage: e2e
tags:
- e2e
before_script:
- cd ./bundle
script:
- nightwatch
配置看起来像这样:
nightwatch.conf.js
module.exports = {
'src_folders' : ['test/e2e'],
'output_folder' : 'reports',
'custom_commands_path' : '',
'custom_assertions_path': '',
'page_objects_path' : '',
'globals_path' : '',
'test_runner' : {
'type' : 'mocha',
'options': {
'ui' : 'bdd',
'reporter': 'list'
}
},
'selenium': {
'start_process': false,
'server_path' : '',
'log_path' : '',
'host' : '127.0.0.1',
'port' : 4444,
'cli_args' : {
'webdriver.chrome.driver': './bin/chromedriver'
}
},
'test_settings': {
'default': {
'launch_url' : 'http://localhost',
'selenium_port': 4444,
'selenium_host': 'localhost',
'silent' : true,
'screenshots' : {
'enabled': true,
'path' : 'reports/error-screenshots'
},
'desiredCapabilities': {
'browserName' : 'chrome',
'javascriptEnabled': true,
'acceptSslCerts' : true
}
},
'chrome': {
'desiredCapabilities': {
'browserName' : 'chrome',
'javascriptEnabled': true,
'acceptSslCerts' : true
}
}
}
}
不确定这是否适用于gitlab ci,但请看一下硒的项目。这是一个小的(6 MB(二进制文件,可在单独的Docker容器中或直接启动WebDriver进程启动浏览器。因此,如果容器方法不适合您的需求,请尝试包装硒s 例如Chromedriver Chrome到具有Node.js的同一容器。不需要使用硒时安装Java。