Free tool

Appium capabilities generator.

Paste the three values from a SpawnDroid session and get a working UiAutomator2 capability block for Java, Kotlin, Python or WebdriverIO. The tool runs entirely in your browser.

Session values

Start a runner, then paste the endpoint, serial and package it returns. Nothing leaves your browser.

The session's webdriverUrl, not the stable hub.

device.serial from the session.

app.package from the session.

Only needed when the APK has a non-default launcher activity.

CheckoutTest.java
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("appium:automationName", "UiAutomator2");
caps.setCapability("appium:udid", "emulator-5554");
caps.setCapability("appium:appPackage", "com.acme.checkout");
caps.setCapability("appium:autoGrantPermissions", true);
// The build is already installed — do not set appium:app.

AndroidDriver driver = new AndroidDriver(new URL("https://stream.spawndroid.io/ci/sess_.../wd/hub"), caps);

Generated locally in your browser. The values are placeholders; copy the real ones from the session response.

How to use it

Three values, one block.

01

Start a runner

Upload a build and start a hosted runner from the console, or use the CI session API.

02

Copy three values

The session response carries webdriverUrl, device.serial and app.package.

03

Paste and run

Paste them above, copy the generated block, and run your existing suite. There is no appium:app capability.

Need the endpoint and package? Read Run Appium tests on a cloud Android device or the capabilities guide.

No session, no install

The generated code assumes the build is already on the session device. Setting appium:app makes Appium install it again.

Copy-ready, not a screenshot

The output is plain text with a copy button, so it survives a paste into your editor or CI config.

Four clients

Java and Kotlin use DesiredCapabilities; Python uses UiAutomator2Options; JavaScript uses WebdriverIO's remote().

Start free

Generate it against a real device.

Hobby includes one runner and 200 device-minutes a month, no card. Start a session, copy the values, and run the generated block.