Appetizer 1.0.0 Get Started


Appetizer is a DevOps tool intended for mobile app development. The goal is to improve developer’s efficiency in developing, testing and maintaining mobile apps.

Appetizer 1.0.x is in the beta stage and we are open to suggestions and welcome bug reports.

Platform Support

Appetizer client software is developed with Electron, which is a web app platform that runs on Windows, Mac OS and Linux. Current Appetizer only supports Android apps and devices, 2.3+, no root required. Appetizer’s functionality can be used with native Android apps (View based), web Android apps (WebView-based or H5-based or Cordova-based), Hybrid Apps, Mobile Games(Unity3D-based and Cocos2D-x-based). In the future, we plan to support iOS platform and iOS apps as well.

Appetizer Platform Supportappetizer-tutorial-intro.png

Getting Appetizer

Appetizer 1.0.0’s all functionality is free to use. Follow the below steps to start using Appetizer.

  1. Download Appetizer software to your development computer
  2. Register an Appetizer account at or use Github to login
  3. Login the software with Appetizer account

Download Appetizer Desktop Software

After registration, you can download the software on your user profile page.

Download Desktop Software

Register a new account

  • Browse to get to Register Page. Fill in the information and submit. Appetizer infrastructure is protected by HTTPS with high standard protecting user privacy and security.

Appetizer Register UI

  • GitHub Login: Appetizer supports GitHub OAuth login. Once clicked, the page will redirect to Github for authorization. After that, the user profile page will look the same as an ordinary Appetizer account. Appetizer will retrieve user information from Github profile.

GitHub Authentication

Appetizer Features

The user needs to login the software for the first time, which is similar to that on the website, either with an Appetizer account of Github account.

Main UI

Setting up ADB

Appetizer requires the development computer to have Android SDK installed and requires adb in the PATH environment variable. If Appetizer can detects adb automatically, it will get to the main UI directly. Otherwise a popup dialog will request the path to the adb program. By default, on Windows, adb is located at C:\Users\<UserName>\AppData\Local\Android\sdk\; on MacOS, the default path is /Users/<UserName>/Library/Android/sdk/platform-tools/; on Linux, the default path is Android-sdk/platform-tools/

Appetizer requesting adb path

After choosing the correct adb path, Appetizer will confirm the existence of the adb program and enter the main UI. In most cases, adb needs only to be specified once. In some special cases (e.g., Android SDK is moved), the user can re-specify the adb path in the Settings tab on the main UI.

Device Control

Connect at least one Android device with the development computer via USB. Click Device Control on the navigation bar on the left to enter device control panel. Click the Refresh Devices button on the right side to detect all connected devices. Those devices must have adb debugging enabled and authorized. Appetizer will show the information and images of all properly connected devices. If you are missing some devices, please double check the USB connection and adb debugging options. On the right side, the Filter Tab offers choices to filter connected devices with name, aspect ratio, and Android version.

The Select Device at the bottom of the device card is intended to mark the device as selected. Most Appetizer features require at least one device being selected. The Command Tab below Filter Tab offers batch control over selected devices, e.g., installing an app, uninstalling an app, running shell command, etc.

The below picture showcases how to Run Shell Command on five selected devices. The feature would execute the cat /system/build.prop | grep ro.product command all at once on the five selected devices. On the emulated terminal tab, you can check the output from these devices.

Executing Shell Command on Multiple Devices

In addition to these basic controls, Appetizer also offers three advanced features, as follows.

Mirror Touches

Mirroring operation requires at least two devices, one as the master device and the others as slave devices. The Mirroring operation would synchronize all touch screen events of the master device (X, Y coordinate) to slave devices, as if one is controlling multiple devices from one device. Mirroring supports tap, long click, swipe and even complicated gestures. It also fully support multi-touch, which means all multi-finger zooming gestures.

Note: Mirroring requires all slave devices to have the same aspect ratio as the master device.
The below video demonstrates the real-time Mirroring feature.

Appetizer-MirrorTouch from AppetizerIO on Vimeo.

Record & Replay Touches

Appetizer can not only mirror touches to many devices, but also record these touch events to a file. These touch events can be automatically replayed to many devices in the future, for arbitrary times. Recording works on one device. Once the button is clicked, Appetizer pops up to select where to save the trace file. After selecting that, the recording starts and you can start operating the device. Click the Finish button to finish recording. After getting the trace file, one can replay that to many other devices with same aspect ratio. Appetizer would precisely record the touch position, timing and precisely replay that.

Record and Replay feature could be used to create tests with complicated and timing-sensitive gestures. The below video demonstrates these two features with a game app:

Appetizer-RecordReplay from AppetizerIO on Vimeo.

Replay Testing Solution

Record testing is a core feature of Appetizer. It integrates the record and replay features to create complicated and automated test procedures.

In the first tab, replay testing requires an APK file to start. Later, when the test starts, the old version of the APK will be uninstalled and the specified APK would be installed and started.

In the second tab, test steps can be customized to be one of the three steps: replay a trace file; take screenshots or pause for a while. Replay testing allows arbitrary number of steps and steps can be reordered easily, just dragging the steps around. The trace file being replayed needs to be recorded in advance. Screenshots and pauses allow to have better timing control and correctness checks during the tests.

In the third tab, select the devices to test with.

Finally, select an result folder and start testing! The test might take a while with flashing icon telling which step the device is running at.

After the test, click on the button to get to the result folder to see all the screenshots. The result folder contains sub-folder per test device and screenshots for each device is stored chronologically in its sub-folder.

The below video demonstrates a full replay testing with a game app:

Setting Testing Steps

Appetizer Replay Testing for Unity3D-based Android Game from AppetizerIO on Vimeo.


Appetizer desktop software would check the latest version and automatically update itself. Simply click on update and restart to use stay updated. The current Appetizer version for Mac OS does not support auto-updating. Clicking on the update button would take you to the website to download the full latest version.

Appetizer Auto-update

Community and Future Features

Appetizer is a fast-developing DevOps tool, with actively support from core developers. Please visit the Appetizer Github repository to submit a bug report. We welcome all kinds of suggestions. The new features we are incubating include:

  • Android Studio Plugin support. From Android Studio build to automated Appetizer testing for just one click
  • Appetizer’s Recording, Replaying and Mirroring would open APIs soon to the developers to integrate that into their own QA procedures (e.g., Jenkins, Appium)
  • Screenshot comparison plugin: after testing, the plugin would compare screenshots with a set of correct screenshots with computer vision. This plugin then filter wrong screenshots that indicate app’s wrong doing to locate the problem faster
  • Crash diagnosis plugin: crashes (uncaught exceptions and ANRs) during tests will be captured by this plugin and to generate a report with details for the developers. The reports will free testers from checking screenshots manually
  • Performance diagnosis plugin: the plugin will collect performance data to generate reports about lags
  • (We welcome your suggestions and feedbacks)