Full-stack-skills appium
Provides comprehensive guidance for Appium mobile testing including mobile app automation, element location, gestures, and cross-platform testing. Use when the user asks about Appium, needs to test mobile applications, automate mobile apps, or write Appium test scripts.
install
source · Clone the upstream repo
git clone https://github.com/partme-ai/full-stack-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/partme-ai/full-stack-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/testing-skills/appium" ~/.claude/skills/partme-ai-full-stack-skills-appium && rm -rf "$T"
manifest:
skills/testing-skills/appium/SKILL.mdsource content
When to use this skill
Use this skill whenever the user wants to:
- Write automated tests for Android and iOS native or hybrid mobile applications
- Locate elements using accessibility ID, ID, XPath, or class name
- Perform gestures (tap, swipe, scroll) and handle device interactions
- Configure desired capabilities for different devices and platforms
- Integrate Appium tests into CI/CD pipelines (Jenkins, GitHub Actions)
How to use this skill
Workflow
- Set up the environment: install Appium Server, drivers (UiAutomator2 for Android, XCUITest for iOS), and language bindings
- Define capabilities: specify device name, platform, app path, and automation engine
- Write test scripts: locate elements, perform actions, and assert results
- Run in CI: execute on real devices or emulators with parallel execution and reporting
1. Desired Capabilities
desired_caps = { "platformName": "Android", "deviceName": "Pixel_6", "app": "/path/to/app.apk", "automationName": "UiAutomator2", "noReset": True, }
2. Test Example (Python)
from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) wait = WebDriverWait(driver, 10) # Login flow username = wait.until(EC.presence_of_element_located((AppiumBy.ACCESSIBILITY_ID, "username"))) username.send_keys("testuser") driver.find_element(AppiumBy.ACCESSIBILITY_ID, "password").send_keys("secret") driver.find_element(AppiumBy.ACCESSIBILITY_ID, "login-button").click() # Assert welcome = wait.until(EC.presence_of_element_located((AppiumBy.ACCESSIBILITY_ID, "welcome"))) assert welcome.is_displayed() driver.quit()
3. Test Example (Java)
DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability("platformName", "Android"); caps.setCapability("deviceName", "Pixel_6"); caps.setCapability("app", "/path/to/app.apk"); caps.setCapability("automationName", "UiAutomator2"); AndroidDriver driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), caps); WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); driver.findElement(AppiumBy.accessibilityId("username")).sendKeys("testuser"); driver.findElement(AppiumBy.accessibilityId("login-button")).click(); assertTrue(wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy.accessibilityId("welcome"))).isDisplayed()); driver.quit();
Best Practices
- Prefer accessibility ID or resource ID for element location; avoid fragile XPath expressions
- Use explicit waits and retry logic; capture screenshots and logs on failure
- Test across multiple devices and OS versions using a device matrix
- Store sensitive information (app paths, credentials) in environment variables
- Use Appium's built-in gesture APIs for swipe, scroll, and long-press actions
Resources
- Official documentation: https://appium.io/docs/en/latest/
- GitHub: https://github.com/appium/appium
Keywords
appium, mobile automation, Android, iOS, UiAutomator2, XCUITest, accessibility ID, desired capabilities, cross-platform, UI testing, mobile testing