Integrate your Appium test automation project with your favourite CI/CD tool and use Momentum Suite’s M-Lab device cloud for testing native and hybrid apps. These tools automate the build and deployment process of your applications. By running your Appium test suite, you also automate testing as part of the build process. With M-Lab mobile devices, your apps can be tested across 150+ real devices.
Prerequisites
You need the following set-up before you begin
- An existing CI/CD server
- A MomentumSuite M-Live account
Usage
Upload your APK, AAB or IPA file to the M-Live Application Library
accessToken=$(curl -X POST -H "Content-Type: application/json" \ -d "{\"username\":\"YOUR_EMAIL_ADDRESS\",\"password\":\"YOUR_PASSWORD\",\"grant_type\":\"password\"}" \ "https://console.momentumsuite.com/rdcApi/api/auth" \ | jq --raw-output '.result.accessToken') echo $accessToken appId=$(curl -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer $accessToken" \ -F "Title=SmartMobile" \ -F "IsReSignable=false" \ -F "ApplicationFile=@/Users/User/Documents/APK/mymobileapp.apk" \ "https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries" \ | jq --raw-output '.result.appId') echo ms://$appId
Start your automation suite with the latest app file
This is an example of usage with a parameterized Java-Maven project. You can use it as an appium:app capability value.
mvn clean test -DappiumAppFile=ms://$appId
DesiredCapabilities capabilities = new DesiredCapabilities(); HashMap<String, Object> momentumOptions = new HashMap<String, Object>(); momentumOptions.put("user", momentumUser); momentumOptions.put("token", momentumToken); momentumOptions.put("gw", momentumAndroidDeviceId); capabilities.setCapability("momentum:options", momentumOptions); capabilities.setCapability("appium:platformName", "Android"); capabilities.setCapability("appium:automationName", "UIAutomator2"); capabilities.setCapability("appium:deviceName", ""); capabilities.setCapability("appium:udid", ""); capabilities.setCapability("appium:app", appiumAppFile); capabilities.setCapability("appium:fullReset", true); capabilities.setCapability("appium:noReset", false);