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
- Web interface
- Authentication
- Login, session expiry
- Add users (for admins)
- Devices control (most of interaction is wrapped around Appium APIs)
- Live video
- NB Videos are essentially MJPEG streams so they are very bandwidth hungry
- Basic remote control - tap, swipe, touch&hold, home, lock, unlock, type text to active element, get clipboard
- Install/Uninstall apps
- Take high quality screenshots
- Reservation - loading a device sets it
In use
and can't be used by another person until it is released
- Live video
- Authentication
- Backend
- Serving the web interface
- Proxy the communication to the provider instances
- Experimental Appium grid replacement for Selenium Grid
- Integrated with UI to reserve devices currently running Appium tests
- Straightforward dependencies setup
- Devices administration via the hub UI
- Automatic provisioning when registered devices are connected
- Dependencies automatically installed on devices
- Appium server set up and started for each device
- Remote control APIs for the hub
- iOS MJPEG video stream using WebDriverAgent
- Android MJPEG video stream using GADS-Android-stream
- Interaction wrapped around Appium - tap, swipe, touch&hold, type text, lock and unlock device, get clipboard
- Appium test execution - each device has its Appium server proxied on a provider endpoint for easier access
- Optionally Selenium Grid 4 nodes can be registered for each device Appium server
- macOS
- Supports both Android / iOS
- Linux
- Supports both Android / iOS < 17 && iOS >= 17.4
- Has some limitations to Appium execution with iOS devices due to actual Xcode tools being unavailable on Linux
- Windows 10
- Supports Android / iOS < 17 && ios >= 17.4
- Has some limitations to Appium execution with iOS devices due to actual Xcode tools being unavailable on Windows
Developed and tested on Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, Windows 10, macOS Ventura 13.5.1
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.
- Download the latest binary for your OS from releases.
or build the project from source
- Clone the project.
- Open the
hub/gads-ui
folder in Terminal. - Execute
npm install
- Execute
npm run build
- Go back to the main repo folder.
- Execute
go build .
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:
- You need to have Docker(Docker Desktop on macOS, Windows) installed.
- Execute
docker run -d --restart=always --name mongodb -p 27017:27017 mongo:6.0
. This will pull the official MongoDB 6.0 image from Docker Hub and start a container binding ports27017
for the MongoDB instance. - You can use MongoDB Compass or another tool to access the db if needed.
or
- Start MongoDB instance in the way you prefer
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! |