- GADS is a web UI for remote control of devices provisioned by GADS-devices-provider.
NB New React based UI - work in progress
Provider logs for debuggingTODO in new UI- Authentication
a. Log in, session expiry
b. Add users (for admins) - Devices control (most of interaction is wrapped around Appium API)
- Android
- GADS-Android-stream video stream
- iOS
- WebDriverAgent video stream
- Both
- Basic functionalities - Home, Lock, Unlock, Type text, Clear text
- Basic remote control - tap, swipe
Basic web Appium inspector - see elements tree with info onlyTODO in new UI- Take high quality screenshots
Simple logs display - Appium/WebDriverAgent logs when provider is inTODO in new UIdebug
, some simple interaction logsReservation - loading a device sets itTODO in new UIIn use
and can't be used by another person until it is released- Appium session refresh mechanism if a session timed out or was closed
Developed and tested on Ubuntu 18.04 LTS, Windows 10, macOS Ventura 13.5.1
Currently the project assumes that GADS UI, MongoDB, Selenium Grid and device providers are on the same network. They can all be on the same machine as well.
- Install Go version 1.21.0 or higher
- Install Node > 16.
The project uses MongoDB for syncing devices info between providers and GADS UI.
- 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.
Clone the project and the GADS-devices-provider code from both repos.
- Open the
config.json
file. - Change the
gads_host_address
value to the IP of the host machine. - Change the
gads_port
value to the port you wish the service to run on - default is 10000. - Change the
mongo_db
value to the IP address and port of the MongoDB instance. Example:192.168.1.2:32771
- If you are registering devices to Selenium Grid via providers, you can visualize the grid directly in the UI - change
selenium_grid_instance
to the instance url, e.g.http://192.168.1.6:4444
and access it via the UI
- Open the
gads-ui
folder in Terminal. - Execute
npm install
- Execute
npm run build
- Open terminal and execute
go build .
in the main project folder - Execute
./GADS --auth=true
- Access the UI on
http://{gads_host_address}:{gads_port}
If you want to work on the UI you need to add a proxy in package.json
to point to the Go backend
- Open the
gads-ui
folder. - Open the
package-json
file. - Add a new field
"proxy": "http://192.168.1.28:10000/"
providing the host and port of the Go backend service. - Run
npm start
This is only the UI, to actually have devices available you need to have at least one GADS-devices-provider instance running on the same host(or another host on the same network) that will actually set up and provision the devices. Follow the setup steps in the linked repository to create a provider instance.
About | |
---|---|
Appium | It would be impossible to control the devices remotely without Appium for the control and WebDriverAgent for the iOS screen stream, kudos! |