App Automation on real device

張庭瑋 Gary Chang 2025/02/21 09:00:00
14

Intro

 

  During a recent project, I’ve tested various frameworks that support physical devices—this is often important because many frameworks only focus on simulators or emulators. After experimenting, here are two tools I found helpful:

 

 

TD;LR

 

  iOS devices → Try Appium

 

  Android devices → Try Maestro

 

 

 

Here’re some break down for them :

 

Appium:

https://github.com/appium/appium

 

Robust, mature, and customizable

 

 

WebView & Hybrid App Support :

 If your app uses WebView for certain screens, Appium is well-equipped to handle it.

Example from stackoverflow

 

Deep interaction with System Apps :

Need to do system-level tasks (e.g., uninstalling after tests)? Appium can handle that.

Example from stackoverflow

 

Extension support : 

You can use or build Appium plugins for extra functionality.

https://appium.io/docs/en/2.0/ecosystem/#plugins

 

Cross-Language Compatibility

Ideal for teams writing tests in Python, Java, JavaScript, etc.

 

Cons 

 

1. Complex Setup:

    Especially tricky for iOS (Xcode, certificates, etc.).

2. Slower than Maestro in many cases, due to its reliance on the WebDriver protocol.

 

 

 

Maestro

https://github.com/mobile-dev-inc/Maestro

Beginner-friendly, fast, and great for quick UI checks

 

Declarative, No-Code Testing

Test scripts are in YAML, so even non-developers can write them.

All Command

 

 

Faster & More Reliable

No WebDriver overhead. Has a built-in auto-retry to reduce flaky tests.

Example from Maestro

 

Minimal Setup

Almost zero heavy SDK/config requirements. Great for quickly spinning up tests.

 

Cons:

 

1.   Limit customization


Less flexible than Appium for complex or edge-case scenarios.

 

2.  WebView / Hybrid Issues

 

Not as robust for WebView-heavy apps.

 

3.  Not support iOS physical device

 

 

 

張庭瑋 Gary Chang