Stop 14 · Build Your QA PortfolioProjects · 5/7

Mobile Automation Project

Part of the QA Testing Roadmap

In short

Mobile automation is a separate skill from web automation, and many QA job posts ask for it. One Appium project with real gestures and clean structure makes you stand out.

An Appium-based automation project testing a real or practice mobile app — showcasing Phase 9's mobile-specific skills as a standalone project distinct from your web automation work.

The purple blob works a giant smartphone puppet on strings above a small puppet stage.

Think of it like this

The puppet show

A puppeteer moves strings above the stage, and the puppet walks, waves and bows. Appium is your set of strings: your test code sits outside the phone and makes the app tap, type and swipe.

Watch it happen

How a tap travels from your test to the phone

Your test
Appium
Driver
Emulator

new session

1/6Your test starts a session with capabilities: Android, the UiAutomator2 driver, and the app file.

The big ideas

What you need to know

Accessibility IDs

Ask developers to add accessibility IDs. They're the most stable way to find mobile elements on both platforms.

Real gestures

Include a swipe, scroll or long-press. It shows you can handle more than simple taps.

Emulator first

Android Studio's emulator is free. Start there, and mention real-device runs if you can do them.

Same patterns as web

Use screen objects, config and reports, just like your web framework.

See it in code

Walk through the code

ts
1// test/specs/login.e2e.ts (WebdriverIO + Appium)2describe("Login", () => {3  it("shows an error for a wrong password", async () => {4    await $("~email-input").setValue("riya@test.com");5    await $("~password-input").setValue("wrong123");6    await $("~login-button").click();7 8    const error = await $("~login-error");9    await expect(error).toBeDisplayed();10  });11});

1/2Find fields by accessibility ID, type into them, and tap the login button.

In WebdriverIO, a selector starting with ~ finds an element by accessibility ID. Capabilities like platformName and the app path go in wdio.conf.ts.

Save yourself the pain

Common mistakes

Oops

Using long XPath locators copied from Appium Inspector.

Do this instead

Prefer accessibility IDs. XPath on mobile is slow and breaks when layouts change.

Oops

Adding fixed sleeps because the app is slow to load.

Do this instead

Wait for a specific element to be displayed instead, with a sensible timeout.

Your mission

First mobile session

~45 min

Quick check

Why are accessibility IDs preferred for mobile locators?

Go deeper

  1. 1Choose a stable practice mobile app (many exist specifically for automation practice).
  2. 2Automate 8-10 test cases covering key mobile user flows.
  3. 3Document your setup process, since mobile automation environment setup is notoriously fiddly.

More projects at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge