MoQuality

The MoQuality Developer Hub

Welcome to the MoQuality developer hub. You'll find comprehensive guides and documentation to help you start working with MoQuality as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Android Testing using Barista

This guide will show you how you can record, edit, replay and run an Android test for a sample app.

Setup your Android Device

To get started with Android testing, you will need an Android phone and connect it to the computer's USB port. Barista communicates with the phone over USB. To allow it to do so, enable USB debugging under Developer Options in the Android Settings App.

Enable USB Debugging on your Android phone.

Enable USB Debugging on your Android phone.

Android phone needed to be in Developer mode

If you don't see Developer options under Settings, follow these instructions to enable it

You can use a Mac or a Windows 10 PC. You only need to install Barista on it. See Installation to find how you can install Barista. The best way to install Barista with all its dependencies is using brew:

brew cask install moquality/brew/barista

Install the Sample App

To compile the sample app and install it on the device clone our sample-apps repository and compile the android-apidemos app. This will install the Debug version of ApiDemos.

git clone git@github.com:moquality/sample-apps.git
git submodule update --init --recursive
cd android/android-apidemos
./gradlew installDebug

You can also download the pre-compiled APK and install it using

adb install ApiDemos-debug.apk

Record a Test

Login to Barista using its direct link (that you must have received in a welcome email) or using the API Key. Read Login into Barista. Connect the phone to your machine and click on the Android logo. Barista should detect your Android phone.

Select Keyboard Type

When you create a test in Barista you don't use the keyboard on the phone as you can just use the keyboard on your machine for setting text. Using keyboards in tests might make your tests flaky. Hence, if your app doesn't use any special keyboards we recommend setting the keyboard type to "Disabled". This will disable the keyboard on your phone temporarily.

Select Team

If you are a tester in a Team, you can select your Team in the drop down.

Click on the phone on which you want to record the test. Barista will initialize itself by installing UiAutomation libraries with which it can communicate with. If all goes well, you will see Barista is mirroring your phone.

Select the App

The app list detects all the apps on your phone. Select the io.appium.android.apis app from the drop-down of the app list. This is the Android package name (application ID) of the sample app.

Record the Test

Click the Create Test button to start recording the test. Barista launches the ApiDemos app. Start interacting with the app as you normally would. As you do so Barista recognizes the actions such as click, input, swipes, and assertions and record them on the right of your screen.

1. Click on Views
2. Swipe until you find WebView2
3. Click on WebView2
4. Click on the text box widget
5. Enter some text like "abc"
6. Add an Assertion
     - Select the text widget
     - Select the type as Text Matches
     - Click Add to add the assertion

After recording the test flow, click Done to save the test. Save the test as "Sample Test".

You can also add sleep as action if you know that your app is going to perform some background operations and the UI might take some time to load. This is not usually needed. However, if your app has animations or uses animations to cover up long-running background tasks, it is a good idea to use sleeps to make your tests less flaky.

  • Click: Click anywhere on the mirrored screen in Barista.
  • Input: Start typing and a text box will appear where you can enter the entire text.
  • Swipe: Click, drag, and release. Swipes are performed after you release the mouse.
  • Assertions: Click the Add Assertion button. You can choose a widget from the view hierarchy and choose an assertion.
  • Sleep: Click the Add Sleep button to add sleep.

For every click action, Barista finds the expected widget and the best selector for it. Every input action recognizes the correct widget and sets the input text. Swipe action might be converted to scrolls if they are performed on lists. Now you are ready to check if the test recorded is correct or not.

Note

Barista always clears any cache associated with the app when you start recording a test. Any functions of your app that use local storage such as login will get deleted.

Check the Recorded Test

To check the recorded test press the play button next to it. This will immediately replay the test back on the device connected. If the test fails at any step, it might need to be edited.

Our "Sample Test" that we created above will convert clicks to proper widgets and selector selections. The swipes will be converted to scrolls. The input text action will recognize the correct widget too.

Barista automates the process of scripting tests by finding the intended widget at every test step and then finding a unique selector for it. Sometimes edits are necessary to tell Barista the expected intent of an action. For example in the ApiDemos app, if the desired test is to select any widget in a list, the selector will be different than the one required to select a unique widget.

Edit the Test

To edit the test, click the Edit icon next to the test.

In the Edit Test mode, you will see each test step in detail. Click on the test step to see the screenshot associated with it. You can edit a test step by clicking on Select New Element.

For example, select the test step where you select the text box. The current test step uses the widget properties class name and text to select the widget. Let's say we want to see if we can change the selectors on this test step.

1. Select the test step and click on Select This Element
2. Highlight the text box to see the properties of this widget on the right
3. The text box has a resource-id as 'i_am_a_textbox'
4. Click on Select This Element
5. Barista will now prompt you with new selectors available for this widget
6. Select "Click i have no focus with resource-id" and click Save Changes to save this test.

With these changes, you can replay the test to verify if your change is as intended and the test runs successfully. In this way, you can change the widget and selectors for that widget on each test step and ensure that you have created the test as you intended.

You can also delete a test step, change the description of a test step or add a post-sleep action for any test step in the Edit Mode.

Run the Test

After the test is recorded as intended, running the test is as easy as clicking the Play button. The test immediately runs on the connected device.

The test execution stops only if an assertion fails, otherwise it keeps going. If at a test step a widget is not found, you will see it marked as such under the test. At the end of the execution, you will see if the test run succeeded or not with the steps that might have failed.

View results on Dashboard

To see the test run on the Dashboard go to app.moquality.com. Select the io.appium.android.apis. Find the Tests tab and the "Sample Test" test in it.

The dashboard shows you the test as a series of screenshots. You will also see the runs done on this test in this view along with a screen-by-screen comparison between the original test recording and the selected test run.