Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 1 | # Getting Started with Snippets for Mobly |
| 2 | |
| 3 | Mobly Snippet Lib is a library for triggering device-side code from host-side |
| 4 | [Mobly](http://github.com/google/mobly) tests. This tutorial teaches you how to |
| 5 | use the snippet lib to trigger custom device-side actions. |
| 6 | |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 7 | Note: Mobly and the snippet lib are not official Google products. |
| 8 | |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 9 | |
| 10 | ## Prerequisites |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 11 | |
| 12 | - These examples and tutorials assume basic familiarity with the Mobly |
| 13 | framework, so please follow the |
| 14 | [Mobly tutorial](http://github.com/google/mobly) before doing this one. |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 15 | - You should know how to create an Android app and build it with gradle. If |
| 16 | not, follow the |
| 17 | [Android app tutorial](https://developer.android.com/training/basics/firstapp/index.html). |
| 18 | |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 19 | |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 20 | ## Overview |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 21 | |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 22 | The Mobly Snippet Lib allows you to write Java methods that run on Android |
| 23 | devices, and trigger the methods from inside a Mobly test case. The Java methods |
| 24 | invoked this way are called `snippets`. |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 25 | |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 26 | The `snippet` code can either be written in its own standalone apk, or as a |
| 27 | [product flavor](https://developer.android.com/studio/build/build-variants.html#product-flavors) |
| 28 | of an existing apk. This allows you to write snippets that instrument or |
| 29 | automate another app. |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 30 | |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 31 | Under the hood, the snippet lib starts a web server which listens for requests |
| 32 | to trigger snippets. It locates the corrsponding methods by reflection, runs |
| 33 | them, and returns results over the tcp socket. All common built-in variable |
| 34 | types are supported as arguments. |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 35 | |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 36 | |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 37 | ## Usage |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 38 | |
Alexander Dorokhine | 0d91300 | 2016-12-08 11:15:59 -0800 | [diff] [blame] | 39 | The [examples/](examples/) folder contains examples of how to use the |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 40 | mobly snippet lib along with detailed tutorials. |
Alexander Dorokhine | b1b8b50 | 2016-11-10 13:52:59 -0800 | [diff] [blame] | 41 | |
adorokhine | 787e6a7 | 2017-01-10 18:19:50 -0800 | [diff] [blame^] | 42 | * [ex1_standalone_app](examples/ex1_standalone_app): Basic example of a |
| 43 | snippet which is compiled into its own standalone apk. |
| 44 | * [ex2_espresso](examples/ex2_espresso): Example of a snippet which |
| 45 | instruments a main app to drive its UI using |
Alexander Dorokhine | a113c04 | 2016-12-05 15:07:55 -0800 | [diff] [blame] | 46 | [Espresso](https://google.github.io/android-testing-support-library/docs/espresso/). |