with one click
appium-server-setup
// Install and configure Appium 2.x server, manage drivers (XCUITest/UiAutomator2) via Extension CLI, and compose W3C capabilities for iOS/Android sessions.
// Install and configure Appium 2.x server, manage drivers (XCUITest/UiAutomator2) via Extension CLI, and compose W3C capabilities for iOS/Android sessions.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | appium-server-setup |
| description | Install and configure Appium 2.x server, manage drivers (XCUITest/UiAutomator2) via Extension CLI, and compose W3C capabilities for iOS/Android sessions. |
| tech_stack | ["mobile-native"] |
| capability | ["container","ci-cd"] |
| version | Appium 2.x |
| collected_at | "2025-01-01T00:00:00.000Z" |
Source: https://appium.io/docs/en/2.0/quickstart/, https://appium.io/docs/en/2.0/guides/migrating-1-to-2/, https://appium.io/docs/en/2.0/guides/caps/, https://appium.io/docs/en/2.0/guides/managing-exts/
Appium 2.0 is a platform where drivers (platform automation) and plugins (behavior extensions) are separate, installable modules. Installing Appium only gives the server; you install drivers separately via the Extension CLI.
# Install Appium server (no drivers bundled)
npm install --location=global appium
# Install platform drivers
appium driver install xcuitest # iOS
appium driver install uiautomator2 # Android
# CI one-liner
npm install --location=global appium --drivers=xcuitest,uiautomator2
# Start
appium
The two required capabilities: platformName and appium:automationName. All non-standard capabilities MUST use the appium: vendor prefix.
iOS session:
{
"platformName": "iOS",
"appium:options": {
"automationName": "XCUITest",
"platformVersion": "16.0",
"deviceName": "iPhone 14",
"app": "/path/to/app.ipa"
}
}
Android session:
{
"platformName": "Android",
"appium:options": {
"automationName": "UiAutomator2",
"deviceName": "Android Emulator",
"app": "/path/to/app.apk"
}
}
appium:options — Bundling CapsWrap all appium:-prefixed capabilities into a single object. Values inside appium:options take precedence over same-name top-level keys.
Default is ~/.appium. Set to different paths to manage conflicting driver versions:
APPIUM_HOME=/path/home1 appium driver install [email protected]
APPIUM_HOME=/path/home1 appium # uses xcuitest 4.11.1
| Command | Purpose |
|---|---|
appium driver install <name> | Install latest driver |
appium driver install <name>@<ver> | Pin driver version |
appium driver list --updates | Check for driver updates |
appium driver update <name> | Update a driver |
appium driver uninstall <name> | Remove a driver |
appium plugin install <name> | Install a plugin |
appium --use-plugins=images | Start with plugins active |
| Capability | Required | Purpose |
|---|---|---|
platformName | Yes | "iOS" or "Android" |
appium:automationName | Yes | "XCUITest" or "UiAutomator2" |
appium:deviceName | No | Device/simulator name |
appium:platformVersion | No | OS version |
appium:app | No | Path to .app / .apk |
appium:udid | No | Specific device ID (preferred over deviceName for real devices) |
appium:noReset | No | Skip app reset (default false) |
appium:fullReset | No | Full cleanup (default false) |
appium:newCommandTimeout | No | Seconds before idle session shutdown |
Must prefix with driver name: --driver-xcuitest-webdriveragent-port=5000. Some params moved to capabilities: use --default-capabilities '{"appium:chromedriverExecutable": "..."}'.
appium: prefix will be rejected. Modern clients auto-add it; older ones need manual prefixing./ (was /wd/hub in 1.x). Restore with --base-path=/wd/hub.--port 0 removed — must use explicit port ≥ 1.APPIUM_SKIP_CHROMEDRIVER_INSTALL, CHROMEDRIVER_VERSION, CHROMEDRIVER_CDNURL.--allow-cors).XCUITestOptions, UiAutomator2Options)appium-locators for finding elements and appium-cross-platform-strategy for Page Object Model design--drivers= flag in npm install, or pre-bake APPIUM_HOME into Docker imagesappium driver list --updates regularly — drivers release independently from the server