我想在Nightwatch-Cucumber
中用Docker容器中的Jenkins CI执行自动化测试。我有一个我想用它的Docker镜像。
这是我想要更详细的内容。
通过GitLab CI我已经通过.gitlab-ci.yml
配置文件实现了它并且它运行得非常好:
image: "my-docker-image"
stages:
- "chrome-tests"
before_script:
- "apt-get update"
- "apt-get install -y wget bzip2"
- "npm install"
cache:
paths:
- node_modules/
run-tests-on-chrome:
stage: "chrome-tests"
script:
- "whereis xvfb-run"
- "xvfb-run --server-args='-screen 0 1600x1200x24' npm run test-chrome"
但我想与Jenkins CI实现相同的程序。什么是最简单的方法,并在Jenkins调用的Docker镜像中运行我的自动化测试?我应该写一个Dockerfile或者不是或者?或者
答案 0 :(得分:0)
查看maintained Selenium Docker images,特别是节点风格。无论您是决定按原样使用容器还是自己动手,都是一个很好的起点。
答案 1 :(得分:0)
我目前正在运行用PHP编写的Selenium Test脚本,并使用Docker Compose通过Jenkins运行它们。你可以做同样的事情,而不必自己处理Xvfb的麻烦。
要使用Docker容器内的无头浏览器运行Selenium测试,并使用docker-compose将其链接到您的应用程序,您只需使用预定义的独立服务器即可。
https://github.com/SeleniumHQ/docker-selenium
我目前正在使用Chrome独立图片。
这是你的docker-compose应该是什么样子:
version: '3'
services:
your-app:
build:
context: .
dockerfile: Dockerfile
your_selenium_application:
build:
context: .
dockerfile: Dockerfile.selenium.test
depends_on:
- chrome-server
- your-app
chrome-server:
image: selenium/standalone-chrome:3.4.0-einsteinium
运行docker-compose时,它会启动您的应用程序,将与您的应用程序交互的selenium环境,以及将为您提供无头浏览器的独立服务器。因为它们是链接的,所以在你的selenium代码中,你可以通过你的app:80向主机发出测试请求。您的无头浏览器将是chrome-server:4444 / wd / hub,这是默认地址。
这一切都可以在Jenkins内部使用Jenkins Job中的Execute Shell中的一个命令完成。 docker-compose也允许您在本地计算机上轻松运行测试,结果应该相同。