Real Time Mobile UI Inspector - Alternative with Appium Inspector
Tags: mobile, ui, qa, opensource
Published: 2023-06-29 10:53:59

When it comes to automating end-to-end testing for mobile apps, several widely used frameworks come to mind, including Appium, Espresso, XCTest, Robotium, and more. Appium stands out among them due to its unique advantage of supporting both Android and iOS platforms, making it a popular choice among developers. Moreover, Appium has introduced the Appium Inspector for desktop apps, which greatly enhances convenience by providing an easy way to identify UI elements on the device screen and enabling the creation of test scripts.

Even Dogu, which has recently transitioned to open source, allows app testing using Appium. In this article, I will have a direct experience and briefly compare the Dogu Inspector, one of the features to be added in the upcoming update version 1.1.0, with the Appium Inspector!

* Dogu Inspector: https://github.com/dogu-team/dogu
* Appium Inspector: https://github.com/appium/appium-inspector

## Dogu Inspector
The Dogu Inspector enables real-time identification of UI elements within the device screen through the use of WebRTC technology on a web browser.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zttgn0wzqwzk6r0jr5wm.gif)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b6ksvwwi5cifcjgajy90.gif)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1crrjr7ik14tg1fcigew.gif)


### Adventages
#### Game UI Support
If your game project includes Gamium, Dogu Inspector allows you to switch to the Gamium context, regardless of the device platform, and browse game UI elements. This seems to be a necessary feature for game automation.

#### No Distance Limitation with Devices
Dogu provides device farm functionality, allowing management of devices through a web browser and real-time screen streaming or remote control, even when the physical distance between the devices and the user is significant. The Dogu Inspector can be used without the device being physically nearby.

#### Easy Device Remote Control
You can interact with the device screen by touching or dragging as if using the actual device, using the mouse on the streaming screen. Furthermore, key inputs can also be sent as if using a physical keyboard, making it easy to manipulate the device.

#### Low Learning Curve
Although Dogu Inspector internally utilizes Appium, users can use the Inspector without any knowledge of Appium. Therefore, if the device is connected to Dogu without the need for configuring Appium capabilities, Appium server, etc., you can immediately use the Inspector.

### Drawbacks
#### iOS Initial Setup
When installing Dost on macOS, there is a part where you need to manually perform initial setup for connecting iOS devices to the Dogu device farm, following the instructions provided. It would be great to improve this process, making it easier to use iOS devices after completing Signing & Build using XCode. (This aspect of Apple's setup is always a bit disappointing.. 🥲)

#### UI Tree View UI/UX
The Dogu Inspector also has a tree view for displaying UI elements on the device, but there are still many areas that need improvement. Transforming the UI like XML format and further enhancing the functionality during Inspector usage would be beneficial.

## Appium Inspector
Appium Inspector allows capturing the device screen on a desktop app and provides the ability to analyze the UI.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rnk4shlw3pj1oo65t4gh.gif)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ca5jpwvriy7ffbm0szym.gif)

### Advantages
#### Recording and Script Generation
Appium Inspector offers a recording feature that allows you to browse the UI, interact with the device, and generate scripts automatically. It supports various languages such as JavaScript, Python, etc., making it easy and fast to create scripts.

#### Easy iOS Setup
To use an iOS device, you can start right away with just the XCode Team ID. By adding it to the Appium capabilities and starting a session, the app will be built, installed, and launched. Since the Inspector functionality is the main focus, it was relatively easier to get started compared to Dogu Inspector.

#### Various Device Commands
The Command menu provides many functionalities. Although the supported features may vary slightly across platforms, there are capabilities to uninstall apps, open apps, manipulate network menus, transfer files, and more.

### Drawbacks
#### Learning Curve
When I initially tried to use Appium Inspector, I found myself reading a lot of Appium documentation and troubleshooting articles related to environment variables. I also had some experiences where the Inspector did not function correctly due to incorrect Capabilities input, causing it to misunderstand UI elements. Using Appium Inspector requires a bit of study and understanding of Appium.

#### Challenging UX for Device Remote Control
Performing actions like touching or dragging on the device screen required pressing certain buttons before execution. Similarly, sending key inputs required selecting UI elements, entering input in the input field, and pressing the send button. These steps felt cumbersome in the user experience.

## Summary

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/33clf2fmsw0qo2bh5gmm.png)


## Wrapped up
After trying and summarizing the two inspectors briefly, Dogu Inspector has the advantages of supporting game apps, having a low learning curve, and no limitation on device distance. On the other hand, Appium Inspector has advantages such as recording and scripting capabilities and various device commands.

As expected, Appium, being an open-source project with long-term maintenance, offers many convenient and excellent features like recording and various device control commands. We, at Dogu, should continue updating and filling the gaps in features that are not yet supported in the Appium Inspector, taking them as benchmarks for improvement.

* Dogu Inspector: https://github.com/dogu-team/dogu
* Appium Inspector: https://github.com/appium/appium-inspector