Top
Search
Aaron Train
Github
Saturday
Apr212012

Android MonkeyRunner Automation

A few folks have asked me what's involved with my simple automation script that ultimately produces screenshots of running browsers on Android. It's rather uncomplicated, I am using the monkeyrunner tool that is bundled with the Android SDK. As the Android Developers guide indicates:

The monkeyrunner tool provides an API for writing programs that control an Android device or emulator from outside of Android code. With monkeyrunner, you can write a Python program that installs an Android application or test package, runs it, sends keystrokes to it, takes screenshots of its user interface, and stores screenshots on the workstation. The monkeyrunner tool is primarily designed to test applications and devices at the functional/framework level and for running unit test suites, but you are free to use it for other purposes.

Intended mainly as a tool for synthesizing input on Android, one can also easily get a capture of the Android screen with its Python/Jython API. The code below listens and connects to an Android device, loops through a list of provided Android browser package/activities, visits a site (provided by a CSV), waits a couple seconds for page-load (Hack! How can I go about better doing this?), snaps a picture and writes it out to a directory provided by argument.

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
import sys, csv

browsers = ['com.android.chrome/.Main',
                'org.mozilla.fennec/.App']

# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection()

#Start each browser activity with the provided URL
for run, browser in enumerate(browsers):

    # Visit each site
    for visit, site in enumerate(csv.reader(open(sys.argv[1]).readlines())):

        # Start the activity with the provided site
        device.startActivity(component=browser, uri=site[0])

        # Wait for page load timeout
MonkeyRunner.sleep(20)
        # Snap a screenshot of the running activity
        device.takeSnapshot().writeToFile("%s%s-%s.png" % (sys.argv[2], visit, run), 'png')
Friday
Apr202012

Call for Help: Testing Firefox on your Android Device

As part of Mozilla Mobile QA’s release criteria for continually testing Firefox on Android, we want to again extend our efforts in leveraging the community for assistance in areas of device.

We want you to test and provide feedback in regards to how Firefox operates on your Android device. 

A problematic challenge we face is the ability to truly test and qualify the ever increasing and vast assortment of Android based devices (phone, tablet and soon to be more) out there in the wild;  the nature of which the carriers and combination of an open platform presents us with. With so many devices available, it is difficult to to ultimately attest and standby the truth in acknowledging if a device will be truly compatible with Firefox or not based on a range of criteria. Compatibility on each device can also very well be a subjective opinion based on overall experience, fulfillment and value. As each device has different hardware and different processes and configurations, it is challenging to produce an appropriate label and or level of compatibility for a device. This is where we want your help.

To gather information from community based testing, we have created a simple survey that can assist in defining and painting the overall picture of a device at hand. We currently have a backlog of untested devices that we not have access to, and we could use your help in testing!

How to Help

  • First, we would like for you to download the new Firefox on Android (currently on the Nightly channel) available here and install it onto your Android device

  • Complete the survey available here: http://bit.ly/firefox-android-survey

  • Create a Bugzilla account in our bug tracker so that you can file bugs you find against Firefox on Android in Bugzilla. Reminder, effective bug reports are likely to be fixed. There are excellent bug writing guidelines for your pleasure to read here. Detail the issues you find to significantly increase the chances that a developer can act on the bug thus increasing the likelihood of positive resolution — provide in-browser Android screenshots, website URL, browser build information, and steps to reproduce the issues
Join and chat with us on IRC on the server irc.mozilla.org in the rooms #mobile and #qa to talk with Mobile QA and mobile developers.

A few minutes of your time in completing the survey will be largely valuable, and you will be contributing towards the testing efforts of Firefox.