2017-07-10 33 views
5

Tôi muốn thực hiện các thử nghiệm tự động của mình, được viết bằng Nightwatch-Cucumber qua một Jenkins CI trong vùng chứa Docker. Tôi có một hình ảnh Docker mà tôi muốn sử dụng cho nó.Cách dễ nhất để chạy thử nghiệm Selenium trong thùng chứa Docker trên Jenkins CI

Đây là những gì tôi muốn làm chi tiết hơn.

  1. kiểm tra Bắt đầu trên Jenkins CI việc
  2. Trên cùng một máy ảnh Docker được nạp và Docker chứa có liên quan sẽ bắt đầu. Vùng chứa này dựa trên hệ điều hành Unix. Ngoài ra, một số cấu hình trong vùng chứa Docker sẽ được thực thi.
  3. Kiểm tra sẽ được thực hiện (từ địa phương hoặc từ xa) ở chế độ không đầu qua xvfb và báo cáo sẽ được lưu trên máy Jenkins.

Over GitLab CI tôi đã nhận ra nó trong một tập tin cấu hình .gitlab-ci.yml và nó chạy rất tốt:

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" 

Nhưng tôi muốn thực hiện thủ tục tương tự với Jenkins CI. Cách dễ nhất để làm điều đó và ro chạy thử nghiệm tự động của tôi trong một hình ảnh Docker được gọi là bởi Jenkins là gì? Tôi có nên viết một Dockerfile hay không hoặc hoặc hoặc?

Trả lời

0

Tôi hiện đang chạy tập lệnh Kiểm tra Selenium được viết bằng PHP và chạy chúng qua Jenkins bằng cách sử dụng Soạn thảo Docker. Bạn cũng có thể làm tương tự mà không gặp rắc rối khi giao dịch với Xvfb.

Để chạy thử nghiệm Selenium bằng trình duyệt không đầu bên trong vùng chứa docker và liên kết nó với ứng dụng của bạn bằng docker-compose, bạn có thể chỉ cần sử dụng máy chủ độc lập được xác định trước.

https://github.com/SeleniumHQ/docker-selenium

Tôi hiện đang sử dụng hình ảnh độc lập của Chrome.

Đây là những gì Docker-soạn của bạn sẽ giống như thế:

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 

Khi chạy Docker-soạn, nó sẽ quay lên ứng dụng của bạn, môi trường selen sẽ được tương tác với ứng dụng của bạn, và máy chủ độc lập sẽ cung cấp cho bạn trình duyệt không có đầu của bạn. Bởi vì chúng được liên kết, bên trong mã selen của bạn, bạn có thể yêu cầu kiểm tra của bạn cho máy chủ thông qua ứng dụng của bạn: 80 chẳng hạn. Trình duyệt không có đầu của bạn sẽ là chrome-server: 4444/wd/hub là địa chỉ mặc định.

Tất cả điều này có thể được thực hiện bên trong Jenkins chỉ sử dụng một lệnh trong Execute Shell bên trong Công việc Jenkins của bạn. docker-compose cũng sẽ cho phép bạn dễ dàng chạy các bài kiểm tra trên máy cục bộ của bạn, và kết quả phải giống nhau.

+0

Bạn có thể cho ví dụ về cách tệp Jenkins của bạn trông như thế nào không. – NewWorld

+0

@NewWorld Tôi đã sử dụng đường dẫn kiểu Jenkins miễn phí với Docker Compose để chạy thử nghiệm. Chúng chỉ là một loạt các kịch bản shell – Serey

0

Kiểm tra maintained Selenium Docker images, đặc biệt là các hương vị của nút. Đó là một nơi tốt để bắt đầu, cho dù bạn quyết định sử dụng các thùng chứa như là hoặc cuộn của riêng bạn.

Các vấn đề liên quan