← All skills

Appium Skill

Hot
Mobile testingJavaPythonJavaScriptRubyC#

Copy and Paste in your Terminal

npx skills add https://github.com/LambdaTest/agent-skills.git --skill appium-skill

Cloud integration

Cloud execution and TestMu AI integration.

Appium — TestMu AI Cloud Integration

For full device catalog, capabilities, and LT:Options reference, see shared/testmu-cloud-reference.md.

App Upload

# Android APK
curl -u "$LT_USERNAME:$LT_ACCESS_KEY" \
  --location --request POST 'https://manual-api.lambdatest.com/app/upload/realDevice' \
  --form 'name="MyApp"' \
  --form 'appFile=@"/path/to/app.apk"'

# iOS IPA
curl -u "$LT_USERNAME:$LT_ACCESS_KEY" \
  --location --request POST 'https://manual-api.lambdatest.com/app/upload/realDevice' \
  --form 'name="MyApp"' \
  --form 'appFile=@"/path/to/app.ipa"'

# Response: { "app_url": "lt://APP1234567890", "name": "MyApp", ... }

Android Capabilities

UiAutomator2Options options = new UiAutomator2Options();
options.setPlatformName("android");
options.setDeviceName("Pixel 8");
options.setPlatformVersion("14");
options.setApp("lt://APP1234567890");
options.setAutomationName("UiAutomator2");

HashMap<String, Object> ltOptions = new HashMap<>();
ltOptions.put("w3c", true);
ltOptions.put("build", "Android Build");
ltOptions.put("name", "Login Test");
ltOptions.put("isRealMobile", true);
ltOptions.put("video", true);
ltOptions.put("network", true);
ltOptions.put("devicelog", true);
options.setCapability("LT:Options", ltOptions);

String hub = "https://" + LT_USERNAME + ":" + LT_ACCESS_KEY
           + "@mobile-hub.lambdatest.com/wd/hub";
AndroidDriver driver = new AndroidDriver(new URL(hub), options);

iOS Capabilities

XCUITestOptions options = new XCUITestOptions();
options.setPlatformName("ios");
options.setDeviceName("iPhone 16");
options.setPlatformVersion("18");
options.setApp("lt://APP1234567890");
options.setAutomationName("XCUITest");

HashMap<String, Object> ltOptions = new HashMap<>();
ltOptions.put("w3c", true);
ltOptions.put("build", "iOS Build");
ltOptions.put("name", "Login Test");
ltOptions.put("isRealMobile", true);
ltOptions.put("video", true);
options.setCapability("LT:Options", ltOptions);

String hub = "https://" + LT_USERNAME + ":" + LT_ACCESS_KEY
           + "@mobile-hub.lambdatest.com/wd/hub";
IOSDriver driver = new IOSDriver(new URL(hub), options);

Available Real Devices

Android: Pixel 8/7/6/5, Samsung Galaxy S24/S23/S22/S21, OnePlus 11/10 Pro, Xiaomi 13 iOS: iPhone 16/15/14/13 Pro Max, iPad Pro (M2), iPad Air

Parallel Execution

Use TestNG with different device capabilities per test:

<suite name="Mobile Parallel" parallel="tests" thread-count="5">
  <test name="Pixel 8">
    <parameter name="device" value="Pixel 8"/>
    <parameter name="platform" value="android"/>
    <parameter name="version" value="14"/>
    <classes><class name="tests.LoginTest"/></classes>
  </test>
  <test name="iPhone 16">
    <parameter name="device" value="iPhone 16"/>
    <parameter name="platform" value="ios"/>
    <parameter name="version" value="18"/>
    <classes><class name="tests.LoginTest"/></classes>
  </test>
</suite>

Test Status Reporting

// Java
((JavascriptExecutor) driver).executeScript("lambda-status=" + status);

// Python
driver.execute_script("lambda-status=" + status)

// JavaScript
await driver.execute("lambda-status=" + status);