Mar*_*tin 5 selenium node.js jenkins docker nightwatch.js
我想执行我的自动化测试,用Nightwatch-CucumberDocker容器中的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"
Run Code Online (Sandbox Code Playgroud)
但我想与Jenkins CI实现相同的程序.什么是最简单的方法,并在Jenkins调用的Docker镜像中运行我的自动化测试?我应该写一个Dockerfile或者不是或者或者?
我目前正在运行用 PHP 编写的 Selenium 测试脚本,并使用 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
Run Code Online (Sandbox Code Playgroud)
运行 docker-compose 时,它将启动您的应用程序、将与您的应用程序交互的 selenium 环境以及将为您提供无头浏览器的独立服务器。因为它们是链接的,在您的 selenium 代码中,您可以通过 your-app:80 向主机发出测试请求。您的无头浏览器将是 chrome-server:4444/wd/hub 这是默认地址。
这一切都可以在 Jenkins 内部完成,只需使用 Jenkins 作业内的执行 Shell 中的一个命令即可。docker-compose 还允许您在本地计算机上轻松运行测试,并且结果应该是相同的。