Genymotion SaaS offers automation features useful for automating tests and continuous integration, regardless of your test framework (Espresso, Robotium, Selenium, Appium) or continuous integration server (Jenkins, TeamCity, Travis or Bamboo). Those features are exposed through a development tools: gmsaas. It is a command line tool specific to Genymotion SaaS that allows you to manage the lifecycle of your virtual devices and enable any ADB interactions between your environment and your instance.
This chapter details how to automate actions in Genymotion SaaS using gmsaas.
Automating actions with gmsaas¶
This section explains how to automate your instrumented tests from your desktop and run them locally or in using the command line tool
gmsaas for Genymotion SaaS. Please refer to gmsaas command line tool for
gmsaas installation and usage.
To run instrumented tests from your desktop, you must be authenticated on
Running instrumented tests¶
Create and start your instance by running:
gmsaas instances start <RECIPE_UUID> <INSTANCE_NAME>
<RECIPE_UUID>is the recipe identifier and
<INSTANCE_NAME>is the name you wish to give to the instance. Once up, the command returns and shows the
The list of available recipes can be retrieved using this command:
gmsaas recipes list.
Connect the instance to ADB
gmsaas instances adbconnect <INSTANCE_NAME> [--adb-serial-port <VALUE>]
Run your instrumented tests using:
- AndroidStudio in Gradle toolbox: Tasks > verification > connectedAndroidTest
You can view your tests running in the virtual device by signing in to Genymotion SaaS.
Once your tests have run, stop the virtual devices using:
gmsaas instances stop <INSTANCE_UUID>
<INSTANCE_UUID>is the UUID (not the name!) of the instance used for the test. All data generated on the virtual device during the tests are destroyed.
Running instrumented tests with Genymotion Java API¶
To run your instrumented tests, you can also use the Genymotion Java API in order to automate the modification of sensor values such as battery, GPS, ID, SMS, calls... For more information on the implementation of the Genymotion Java API, please refer to the official documentation.
A sample project is available at https://github.com/Genymobile/genymotion-binocle.
Running instrumented tests from Jenkins¶
This section explains how to automate your instrumented tests from your Jenkins continuous integration server using
Configuring a Jenkins job with gmsaas¶
- To configure the Jenkins job that will run your instrumented test, from Jenkins, go to menu Configure.
- In Source Code Management, enter the location of the application source code.
From the Build section:
Add Execute shell to run commands and add the following commands:
<GMSAAS_PATH>/gmsaas auth login <EMAIL> <PASSWORD>
<GMSAAS_PATH>is the location of gmsaas on your Jenkins,
<PASSWORD>are the email and password of your Cloud account. This authenticates you to Genymotion SaaS.
<GMSAAS_PATH>/gmsaas instances start <RECIPE_UUID> <NAME>
<RECIPE_UUID>is the device recipe/template uuid (you can get all the recipes by using the command
gmsaas recipes list) and
<NAME>is the name you wish to give to the instance.
Please note that
<NAME>is only used as a tag - you should not use it to issue commands from
gmsaasto an instance. Use the instance UUID instead.
Add Invoke Gradle script to run your instrumented test.
- Tick Root Build Script Dir.
- To have more logs, in Switches, enter
- In Tasks, add
From the Post Build section:
- Add Publish JUnit test result report & Publish HTML reports to get test reports.
- Add Execute a set of scripts to stop the device where the tests were run. In Build steps, add Execute shell section and add the following command:
<GMSAAS_PATH>/gmsaas instances stop <UUID>where
<UUID>is the UUID of the virtual device you created (not the
Running the builds¶
You can run the builds manually by clicking Build with Parameters or have it automatically built by configuring a scheduled build.
Viewing test reports¶
Once your tests have run, you can view your test reports from Test Report.