- vừa được xem lúc

Appium With Selenium Grid 4

0 0 15

Người đăng: an nguyen

Theo Viblo Asia

Test automation việc chạy parallel là cần thiết với số lượng test case lớn. Với test automation UI, API việc setup chạy parallel khá là dễ dàng do PC hoặc laptop đã có sẵn server (chrome, firefox, Edge, safari,...) run test. Nhưng khi test appium vấn đề lớn nhất là việc chuẩn bị môi trường run parallel là môi trường chạy parallel như nào để 2 hoặc nhiều thiết bị có thể cùng kết nối vào 1 server appium, hay làm cách nào để framework của mình có thể connect được nhiều server appium. Chém gió đủ rồi đi vào giải quyết vấn đề thôi 😃

Mobile Device Lab Architecture

Ở ảnh phía trên chúng ta có 2 devices tương đương với 2 node. Mỗi 1 node config với một file ".toml". Mỗi 1 devices được điều khiển bằng 1 appium server và mỗi appium server được cấu hình bằng file ".xml". Tất cả các node connect với selenium grid (hub). Trong code, URL trình điều khiển sẽ là URL của Hub. HUB sẽ phân phối tất cả các yêu cầu đến các node/device, nhận phản hồi từ các node/device. Code test của chúng nó sẽ kết nối đến địa chỉ hub của selenium grid và thực hiện parallel theo từng dự án.

Pre-requisites

  • Install appium >=2.0.0
  • 2 devices (Android or iOS)

Install Selenium Grid for Appium Parallel Testing

Selenium Grid là một thành phần của Selenium và cho phép bạn mở rộng quy mô test bằng cách phân phối chúng trên một số device. Download selenium grid lastest về máy. selenium-server

Cấu hình appium config

Ở đây chúng ta cần kết nối 2 devices nên cần 2 server appium. Mỗi server được cấu hình trên 1 file yaml để dễ dàng cho việc quản lý. Lưu ý mỗi server có port khác nhau để tránh gây xung đột.

Config Server Appium 1

# appium1.yml
server: port: 4723 use-drivers: - uiautomator2 default-capabilities: wdaLocalPort: 8100 mjpegServerPort: 9100 mjpegScreenshotUrl: "http://localhost:9100"

Config Server Appium 2

# appium2.yml
server: port: 4725 use-drivers: - uiautomator2 default-capabilities: wdaLocalPort: 8110 mjpegServerPort: 9100 mjpegScreenshotUrl: "http://localhost:9100"

Cấu hình Grid node

Mỗi 1 devices chúng ta cấu hình chúng bằng 1 file toml, trong file này mỗi file có port riêng ứng với số port trên node. URL ứng với server appium vừa tạo ở trên. Các thông số config tương ứng với capabilities khi kết nối devices với appium.

#node-emulator1.toml
[server]
port = 5559 [node]
detect-drivers = false [relay]
url = "http://172.21.96.1:4723"
status-endpoint = "/status"
configs = [ "1", "{\"platformName\": \"Android\", \"appium:platformVersion\": \"13\",\"appium:deviceName\": \"Pixel 4 API 33\", \"appium:automationName\": \"uiautomator2\"}"
]
#node-emulator2.toml
[server]
port = 5561 [node]
detect-drivers = false [relay]
url = "http://172.21.96.1:4725"
status-endpoint = "/status"
configs = [ "1", "{\"platformName\": \"Android\", \"appium:platformVersion\": \"12\",\"appium:deviceName\": \"Pixel 4 API 33\", \"appium:automationName\": \"uiautomator2\"}"
]

Lưu ý: Nên lưu tất cả các file vào cùng thư mục như hình bên dưới.

Tận hưởng thành quả

Mỗi một lệnh bên dưới là một session khác nhau. Vì vậy, cuối cùng chúng ta sẽ có 5 quy trình chạy cùng lúc: 2 máy chủ Appium, 2 Grid Node và 1 Grid Hub .

Run server appium 1

appium --config appium1.yml

Run server appium 2

appium --config appium2.yml

Run selenium grid hub

java -jar selenium-server-4.15.0.jar hub

Run selenium grid Node 1

java -jar selenium-server-4.15.0.jar node --config node-emulator1.toml

Run selenium grid Node 2

java -jar selenium-server-4.15.0.jar node --config node-emulator2.toml

Sau khi chạy cả 5 tiến trình ta truy cập http://localhost:4444 để tận hưởng thành quả

Tada 😃

Vậy là việc setup Grid đã thành công. Việc của các bạn bây giờ là kết nối Grid HUB với dự án của bạn và thực hiện parallel. Good luck 😃

Reference

https://appium.io/docs/en/2.1/guides/grid/ https://www.swtestacademy.com/appium-parallel-tests-on-multiple-emulators/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Debugging CSS Grid như 1 Pro

Bây giờ, bạn có thể sử dụng Chrome DevTools để có thể kiểm tra trực quan CSS Grids của bạn và gỡ lỗi chúng. .

0 0 31

- vừa được xem lúc

Vẽ Area Chart với HTML và CSS

Khi nhắc tới biểu đồ trong HTML, đôi khi chúng ta sẽ nghĩ tới việc vẽ bằng SVG hoặc Canvas. Tuy nhiên, với sức mạnh của CSS3 ta hoàn toàn có thể vẽ biểu đồ chỉ với HTML và CSS thuần túy.

0 0 65

- vừa được xem lúc

Tất tần tật về Grid System trong Bootstrap

Như các bạn đã biết thì Bootstrap đang là một trong nhưng framework css phổ biến nhất hiện nay và một tính năng vô cùng mạnh mẽ của nó chính là Grid System (Hệ thống lưới) giúp chúng ta xây dựng layou

0 0 76

- vừa được xem lúc

Trận chiến CSS giữa: Grid và Flexbox

CSS Flexbox đã khá là quen thuộc đối với thế giới của front-end developers trong những năm gần đây. Điều này là hết sức dễ hiểu, vì Flexbox đã đem lại một sự tiện lợi cũng như dễ sử dụng để tạo ra các

0 0 169

- vừa được xem lúc

Các kỹ thuật cần biết để xây dựng layout cho một website

Layout là gì ? Tại sao chúng ta cần phải xây dựng layout trong lập trình web . Tương tự như vậy, trong thiết kế web, layout chính là cách dàn trang, sắp xếp các yếu tố sẽ được hiển thị trên website.

0 0 61

- vừa được xem lúc

Chia bố cục layout với CSS Grid Layout

Với Css Grid, bạn có thể tạo các thiết kế web phức tạp. Nó rất trực quan và được hỗ trợ tốt với nhiều trình duyệt khác nhau.

0 0 52