微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

>开始对Jenkins CI工作进行测试
>在同一台机器上加载Docker镜像,相关的Docker容器将启动.这个容器基于Unix OS.此外,将执行Docker容器中的某些配置.
>测试将通过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.com/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还允许您在本地计算机上轻松运行测试,结果应该相同.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐