- GADS is a web UI for remote control and management of devices provisioned by GADS-devices-provider.
NB New React based UI - work in progress
- 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
- Basic remote control - tap, swipe, touch&hold
- Take high quality screenshots
- Reservation - loading a device sets it
In 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
- Basic browser Appium inspector
- Provider and devices log display
- Extend features - better administration, more control options - e.g. simulate location
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.
- 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.
- Start MongoDB instance in the way you prefer
You can potentially use any other way you prefer to create a MongoDB instance, doesn't have to be Docker in particular
- Download the prebuilt binary for your respective operating system.
- Clone the project.
- Open the
gads-ui
folder in Terminal. - Execute
npm install
- Execute
npm run build
- Go back to the main repo folder.
- Execute
go build .
- Execute
./GADS
providing the following flags: a.--auth=
- true/false to enable actual authentication (default isfalse
) b.--host-address=
- local IP address of the host machine, e.g.192.168.1.6
(default islocalhost
, I would advise against using the default value) c.--port=
- port on which the UI and backend service will run (default is10000
) d.--mongo-db=
- address and port of the MongoDB instance, e.g192.168.1.6:27017
(default islocalhost:27017
) e.--admin-username=
- username of the default admin user (default isadmin
) f.--admin-password=
- password of the default admin user (default ispassword
) g.--admin-email=
- email of the default admin user (default isadmin@gads.ui
) h.--ui-files-dir=
- directory where the UI static files will be unpacked and served from. By default the app tries to use a temp folder available on the host. Use this flag only if you have issues with the default behaviour. - Access the UI on
http://{host-address}:{port}
- Log in with an admin user.
- Go to the
Admin
section - Open
Providers administration
- On the
New provider
tab fill in all needed data and save. - You should see a new provider tab. You can now start up a provider instance using the new configuration.
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 devices. Follow the setup steps in the linked repository to create a provider instance. You can have multiple provider instances on different hosts providing devices.
About | |
---|---|
Appium | It would be impossible to control the devices remotely without Appium for the control and WebDriverAgent for the iOS screen stream, kudos! |
https://github.com/shamanec/GADS/assets/60219580/3142fb7b-74a6-49bd-83c9-7e8512dee5fc