Hướng dẫn cài đặt Selenium Grid bằng kỹ thuật Docker

Hướng dẫn cài đặt Selenium Grid bằng kỹ thuật Docker

Đối với bất kỳ test automation framework nào đang sử dụng kỹ thuật Selenium thì việc triển khai hệ thống Selenium để development là điều không thể thiếu. Và để cài đặt Selenium GRID (selenium Hub, Selenium node, Selenium standalone) hiện tại có rất nhiều công cụ hỗ trợ như: vagrant, docker, selenoid.

Trong bài viết này, tôi sẽ hướng dẫn cách cài đặt Selenium GRID bằng Docker cho test framework WebdriverIO

Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng.(https://aws.amazon.com/vi/docker/). Trong phạm vi bài viết này chúng ta không đi sâu vào kỹ thuật này

Nhắc lại về Selenium GRID

Selenium Grid là 1 trong số những bộ tool của Selenium. Selenium Grid được sử dụng để khởi chạy nhiều kịch bản test song song cùng một lúc, và có thể chạy trên nhiều máy, nhiều hệ điều hành và nhiều trình duyệt khác nhau.

Để có thể hình dung rõ hơn về cách này, bạn có thể checkout repository code-samples-e2e. Trong repo này chứa boilerplate code hoàn chỉnh để cài đặt Selenium GRID bằng Docker. Và boiplerplate code này được đặt trong folder setup-selenium-grid

Các bạn hãy theo các bước bên dưới để tiến hành cài đặt.

Download và cài đặt những software cần thiết

  1. NodeJS

  2. Docker

Cấu hình hệ thống Selenium GRID

Trong boiplerplate setup-selenium-grid, tôi đã chuẩn bị cho các bạn 1 docker tool, được đặt ở folder tools/docker/selenium/

Trong tool này, chúng ta sử dụng kỹ thuật docker compose để triển khai hệ thống Selenium GRID, bao gồm Selenium Hub và 1 Selenium Chrome node. Bạn có thể xem chi tiết ở file tools/docker/selenium/docker-compose.yml

Copy
#
# Run Docker containers for End-to-End test on local environment.
#
version: "3.7"

services:
  selenium-hub:
    image: selenium/hub:3.141.59-20210105
    ports:
      - "4444:4444"
  selenium-chrome:
    image: selenium/node-chrome-debug:3.141.59-20210105
    shm_size: '2gb'
    ports:
      - "15900:5900"
    environment:
      HUB_PORT_4444_TCP_ADDR: selenium-hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_INSTANCES: 10
      NODE_MAX_SESSION: 10
      SCREEN_WIDTH: 1920
      SCREEN_HEIGHT: 1200

networks:
  default:
    name: end-to-end-test

docker-compose yml file

Giải thích nhanh docker-compose (docker-compose.yml file)

Như docker-compose.yml ở trên, hệ thống ta cài đặt bao gồm 2 containers: selenium-hub và selenium-chrome

Trong container selenium-hub tôi sử dụng image: selenium/hub:3.141.59-20210105

Còn selenium-chrome thì sử dụng: selenium/node-chrome-debug:3.141.59-20210105

Có một lưu ý nhỏ khi sử dụng “node-chrome-debug“ đó là: “node-chrome-debug“ cho phép chúng ta có thể remote vào container thông qua vnc tool để xem việc tự động hoá diễn ra như thế nào trên browser. Và điều này theo tôi nó cực kỳ hữu ích cho các Developer khi cần debug test case.

Khởi động hệ thống Selenium GRID

Khởi động hệ thống Selenium Grid với những thông tin như mô tả trong docker-compose.yml theo các bước như bên dưới:

  1. Mở Terminal và cd tới boiplerplate folder

    cd code-samples-e2e/setup-selenium-grid

  2. Tiếp tục cd tới folder tools/docker/e2e-test-tool

    cd tools/docker/selenium

  3. Đảm bảo Docker trên máy tính của bạn đang running

    screen shot 2021 05 21 at 11 08 15


    Sau đó run command sau để start container

    docker-compose up

    Nếu các bạn thấy log message như hình bên dưới, đồng nghĩa là bạn đã start hệ thống Selenium thành công

    start selenium grid

Start testing

Bước cuối cùng là run test để đảm bảo môi trường selenium đã cài đặt thành công.

  1. Mở 1 Terminal mới và cd tới boiplerplate folder

    cd code-samples-e2e/setup-selenium-grid

  2. Install Nodejs packages

    npm install

  3. Run command sau để thực thi test

    npm test

    Kết quả:

    start test selenium grid

  4. Sau khi command được chạy, thông qua terminal bạn sẽ thấy là test case đang được thực thi, tuy nhiên thì không có browser nào được mở lên. Lý do, là việc thực thi được diễn ra bên trong docker. Do đó, muốn thấy được quá trình này bạn phải thông qua hệ thống vnc để truy cập vào docker.

    Bên dưới là các thao tác truy cập docker container từ máy Macbook.
    Đầu tiên bạn hãy mở 1 terminal mới, sau đó run command sau để truy cập vào docker container:

    open vnc://localhost:15900

    Password mặc định là: secret

    remote vnc

  5. Sau khi đã truy cập docker container thành công, bạn hãy chạy test 1 lần nữa để xem kết quả

==> Như vậy, chúng ta đã hoàn thành bài hướng dẫn cài đặt Selenium GRID bằng Docker, rất đơn giản phải không nào :)

Bạn cũng có thể thêm vào 1 số browser node khác để có thể tiến hành thực thi cross browser testing.

Có 1 lưu ý nhỏ đó là: nếu testing site là localhost, ví dụ: https://localhost:10080/index, thì bạn hãy đổi thành https://{your IP address}:10080/index, bởi vì docker container sẽ không thể truy cập testing site là localhost.

Một số thuật ngữ trong bài viết

branch: git branch
cross browser testing: Hay còn dùng với tên gọi khác là configuration testing, là một tính năng được thực thi trên nhiều trình duyệt, ví dụ: Firefox, Google chrome, IE,...

Các bài viết cùng chủ đề