Integrate with CI/CD tools

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.

JenkinsTeamCity (Jetbrains)Bamboo (Atlassian)GitLab CIOctopus Deploy
Circle CIFastlaneAzure DevopsTravis CIGoCD
Shippable (JFrog)Jenkins XIntegrityBuddyCodeship
Wercker (Oracle)SemaphoreTerraformSpinnakerBuildbot
CodefreshNevercodeGitHub ActionsBuildkiteConcourse CI
BitriseCodemagicXcode CloudVS App CenterAppcircle

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);

Related Posts