通过Jenkins CI

时间:2017-07-10 14:30:41

标签: node.js selenium docker jenkins nightwatch.js

我想在Nightwatch-Cucumber中用Docker容器中的Jenkins CI执行自动化测试。我有一个我想用它的Docker镜像。

这是我想要更详细的内容。

  1. 开始对Jenkins CI工作进行测试
  2. 在同一台机器上加载Docker镜像,相关的Docker容器将启动。这个容器基于Unix OS。此外,将执行Docker容器中的某些配置。
  3. 测试将通过xvfb以无头模式执行(从本地或远程),报告将保存在Jenkins机器上。
  4. 通过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或者不是或者?或者

2 个答案:

答案 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也允许您在本地计算机上轻松运行测试,结果应该相同。