shamanec / GADS

Simple device farm for remote control of devices and Appium test execution on iOS/Android
MIT License
47 stars 10 forks source link
android appium appium-android appium-ios device-farm go ios linux macos remote-control windows

Intro

GADS is an application for remote control and Appium test execution on mobile devices

The app consists of two main components - hub and provider
The role of the hub is to serve a web interface for the remote control of devices and provider management, as well as act as proxy for providers.
The role of the provider is to set up and provide the mobile devices for remote control/testing
Supports both Android and iOS devices
Supports Linux, macOS and Windows - notes below

Features

Hub features

Provider features

Developed and tested on Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, Windows 10, macOS Ventura 13.5.1

Setup

Currently the project assumes that GADS hub, device providers, MongoDB and Selenium Grid are on the same network. They can all be on the same machine as well.

or build the project from source

Common setup

MongoDB

The project uses MongoDB for storing logs and for synchronization of some data between hub and providers. You can either run MongoDB in a docker container:

or

Hub setup

Docs

Provider setup

Docs

Thanks

About
go-ios Many thanks for creating this CLI tool to communicate with iOS devices, perfect for installing/reinstalling and running WebDriverAgentRunner without Xcode
Appium It would be impossible to control the devices remotely without Appium for the control and WebDriverAgent for the iOS screen stream, kudos!

Videos

Start hub

https://github.com/user-attachments/assets/7a6dab5a-52d1-4c48-882d-48b67e180c89

Add provider configuration

https://github.com/user-attachments/assets/07c94ecf-217e-4185-9465-8b8054ddef7e

Add devices and start provider

https://github.com/user-attachments/assets/a1b323da-0169-463e-9a37-b0364fc52480

Run Appium tests in parallel with TestNG

https://github.com/user-attachments/assets/cb2da413-6a72-4ead-9433-c4d2b41d5f4b

Remote control

https://github.com/user-attachments/assets/2d6b29fc-3e83-46be-88c4-d7a563205975