Mobile app testing: XCUITest and Espresso for native apps, Appium, Detox and Maestro across platforms, Flutter tests, and mobile accessibility checks. XCUITest also covers macOS desktop apps, and a tiered device matrix keeps CI cost down. An authoring agent (mobile-test-author) detects the driver, scaffolds a harness when none exists, and writes one test per spec. Mobile-web viewport emulation lives in qa-web-e2e.

Install this plugin
/plugin install qa-mobile@testland-qa

First time? Add the marketplace with /plugin marketplace add testland/qa

View source (opens in a new tab)
Plugin
Version
v1.7.0
Contents
8 skills · 1 agent

Skills8

Agents1

About qa-mobile

Mobile E2E testing - closes the platform gap. Native frameworks (XCUITest for iOS + macOS desktop, Espresso for Android), cross-platform drivers (Appium, Detox, Maestro), Flutter widget/integration tests, plus a device-matrix dispatcher and mobile accessibility authoring. For mobile-WEB viewport emulation, see playwright-testing in qa-web-e2e.

Choosing a driver

Read down the "Signal in project root" column and stop at the first row that matches your project:

Signal in project rootDriverWhyStart with
package.json with react-native in dependencies AND detox in devDependenciesDetoxNative-side gray-box runner; idle-resource synchronization avoids flakedetox-testing
package.json with react-native, no DetoxAppiumCross-OS black-box driver; the team can add Detox later for speedappium-testing
pubspec.yaml with flutter: block + lib/main.dartflutter_test + integration_testFirst-party Dart test packages; widget tests + on-device integration testsflutter-testing
*.xcodeproj / Package.swift targeting iOS, no package.jsonXCUITestApple's first-party UI test harness, accessibility-tree backed, ships in Xcodexcuitest-suite
app/build.gradle or build.gradle.kts with com.android.applicationEspressoGoogle's first-party Android UI test framework, runs in the same JVM as the appespresso-suite
Both ios/ AND android/ dirs, no RN and no FlutterAppium (one suite, both OSes) OR XCUITest + Espresso (one per OS)Appium when test-team capacity is small; native + native when each OS has a dedicated teamappium-testing
.maestro/ directory with *.yaml flowfilesMaestro for black-box flows alongside the native driverDeclarative flowfiles survive UI churn better than imperative driversmaestro-flows

Tie-breakers: don't default to Appium for every cross-platform need (native drivers are faster when per-OS capacity exists); Detox needs the React Native bridge, so it never fits native-only apps; Maestro pairs WITH a native driver rather than replacing one; and don't switch driver mid-project to "fix" flake - triage the flake first (qa-flake-triage). Picking the DEVICE matrix to run against is a separate decision - see mobile-device-matrix-toolkit.