簡體   English   中英

通過Jenkins CI在Docker容器中運行Selenium測試的最簡單方法

[英]Easiest way to run Selenium tests in a Docker container over Jenkins CI

我想用Dockers容器中的Jenkins CI執行我的自動化測試,用Nightwatch-Cucumber編寫。 我有一個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或者不是或者或者?

查看維護的Selenium Docker映像 ,特別是節點風格。 無論您是決定按原樣使用容器還是自己動手,這都是一個好的起點。

我目前正在運行用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還允許您在本地計算機上輕松運行測試,結果應該相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM