Appium Visualizer
This free Appium visualizer explains mobile test automation: desired capabilities, platform drivers, and the client-server architecture that lets a single WebDriver-based API drive both Android and iOS. It is aimed at SDETs adding mobile automation to their skill set or preparing for interviews that increasingly ask about it.
Desired capabilities
Capabilities are key-value pairs sent when a session starts that tell the Appium server what to automate: platformName, deviceName, app, automationName, appPackage and appActivity on Android, or bundleId on iOS. Get these right and the session starts; get one wrong and you get the classic "could not start a new session" error.
Drivers: UiAutomator2, Espresso and XCUITest
Appium does not automate devices directly — it delegates to platform drivers. On Android that is usually UiAutomator2 (or Espresso); on iOS it is XCUITest. Because Appium exposes the same WebDriver API on top of all of them, the same test structure can target both platforms with only the capabilities and locators changing.
The client-server architecture
Your test (the client) sends WebDriver commands to the Appium server, which translates them into native automation calls for the device through the chosen driver, then returns the result. Native, hybrid and mobile-web apps all flow through this same request path — for hybrid and web contexts, Appium switches into a WebView context so you can use familiar web locators.
How to use this tool
- Set the desired capabilities for a target device in the tool.
- Watch the session start and the driver initialise.
- Send a command and follow it from client to server to device.
- Switch between native and WebView contexts to see how hybrid apps are handled.
Worked example
Desired capabilities for an Android session look like this:
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("deviceName", "Pixel_7");
caps.setCapability("automationName", "UiAutomator2");
caps.setCapability("app", "/path/to/app-debug.apk");
AppiumDriver driver = new AndroidDriver(
new URL("http://127.0.0.1:4723/wd/hub"), caps);
These capabilities tell the Appium server which device, driver and app to launch. Common mistakes to avoid
- Mismatched capabilities (wrong appPackage/appActivity) causing session start to fail.
- Using unstable XPath locators instead of accessibility ids, which are faster and more reliable on mobile.
- Forgetting to switch into the WebView context when testing hybrid app screens.
- Not resetting app state between tests, so one test's data leaks into the next.
Frequently asked questions
What is Appium?
Appium is an open-source tool for automating native, hybrid and mobile-web apps on Android and iOS using a single WebDriver-based API.
What are desired capabilities in Appium?
Key-value settings sent when a session starts — such as platformName, deviceName and app — that tell the Appium server which device, app and driver to use.
What is the difference between native, hybrid and mobile-web apps?
Native apps are built with platform SDKs, mobile-web apps run in a mobile browser, and hybrid apps wrap web content inside a native shell; Appium can automate all three.
Which locator should I use in Appium?
Prefer accessibility id, then platform-specific selectors (UiAutomator/predicate strings); use XPath only when nothing else works, as it is slow on mobile.
Is this Appium tool free?
Yes, it runs in your browser with nothing to install and is free for learning and interview prep.