最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

通过Jenkins CI在Docker容器中运行Selenium测试的最简单方法

IT培训 admin 2浏览 0评论

通过Jenkins CI在Docker容器中运行Selenium测试的最简单方法

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

这就是我想要做的更详细的事情。

  1. 开始测试Jenkins CI作业
  2. 在同一台机器上加载Docker镜像,相关的Docker容器将启动。这个容器基于Unix OS。此外,将执行Docker容器中的某些配置。
  3. 测试将通过xvfb以无头模式执行(从本地或远程),报告将保存在Jenkins机器上。

通过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或者不是或者或者?

回答如下:

我目前正在运行用PHP编写的Selenium Test脚本,并使用Docker Compose通过Jenkins运行它们。您也可以这样做,而无需自己处理Xvfb的麻烦。

要使用Docker容器内的无头浏览器运行Selenium测试并使用docker-compose将其链接到您的应用程序,您只需使用预定义的独立服务器即可。

https://github/SeleniumHQ/docker-selenium

我目前正在使用Chrome Standalone图片。

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

通过Jenkins CI在Docker容器中运行Selenium测试的最简单方法

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

这就是我想要做的更详细的事情。

  1. 开始测试Jenkins CI作业
  2. 在同一台机器上加载Docker镜像,相关的Docker容器将启动。这个容器基于Unix OS。此外,将执行Docker容器中的某些配置。
  3. 测试将通过xvfb以无头模式执行(从本地或远程),报告将保存在Jenkins机器上。

通过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或者不是或者或者?

回答如下:

我目前正在运行用PHP编写的Selenium Test脚本,并使用Docker Compose通过Jenkins运行它们。您也可以这样做,而无需自己处理Xvfb的麻烦。

要使用Docker容器内的无头浏览器运行Selenium测试并使用docker-compose将其链接到您的应用程序,您只需使用预定义的独立服务器即可。

https://github/SeleniumHQ/docker-selenium

我目前正在使用Chrome Standalone图片。

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

发布评论

评论列表 (0)

  1. 暂无评论