QA SoftVision Team/Mobile/Robocop automation setup

General Info

  • This document will help you set up the enviroment and create the builds to test, create and run automated tests using Robocop
  • In order to run the tests you will need one build to be installed on the device - the Firefox Mobile build - and a second desktop build to send the commands to device - the automation build.

Steps to setup enviroment and start running tests

Note: To make things easyer you can run $sudo su in the Terminal you use so that all commands are run in admin mode and you do not need to add sudo befoare each command but make sure you are carefull with what you run in the terminal as admin mode will allow you to make changes to core file system

  • Install Java and kDiff
  • Install Mercurial
  • Setup Mercurial
  • Clone sources twice
  • Install Android SDK and NDK
  • Build sources using .mozconfig files
  • Package the mobile build and install
  • Run tests

Detailed steps

Install Java and kDiff

  • kDiff3 is a merge tool that can verify the differences between the source codes allowing the user to download only the code that is different when updating the source files
  • The easiest way to install them is from the Ubuntu Software Manager

Install Mercurial

  • Here is a link to the detailed information about Installing and setting up mercurial
  • To install Mercurial run in a Terminal the following commands:
sudo apt-get install python-setuptools python-dev build-essential
sudo easy_install -U mercurial

Configuring Mercurial and downloading souces

  • All content of the configuration is general. Please update field where needed to work with your configuration

Mercurial configuration

  • Create the file .hgrc in your home directory – you can use $ sudo gedit and save the file with the name .hgrc
  • Add in $HOME/.hgrc
[ui]
username = Your Real Name <user@example.com>
merge = your-merge-program (or internal:merge)

[diff]
git = 1
showfunc = 1
unified = 8
[defaults]
commit = -v

Configure kDiff as merge tool

  • Setting kDiff as the merge tool for Mercuial
  • Add in .hgrc
[merge-tools]
kdiff3.args=--auto -L1 base --L2 local --L3 other $base $local $other -o $output
kdiff3.regkey=Software\KDiff3
kdiff3.regappend=\kdiff3.exe
kdiff3.fixeol=True
kdiff3.gui=True

Configure mq

  • Add in .hgrc
[extensions]
mq =
[defaults]
qnew = -U
[mq]
plain = True

Configure repository

  • Add in .hgrc
[paths]
try = ssh://hg.mozilla.org/try/

Download sources using Mercurial

  • Replace <src> with desired directory
  • Clone the sources twice: 1 for the mobile build and one for the automation build
  • In order to clone the source code run the hg clone command
hg clone http://hg.mozilla.org/mozilla-central/ <src> 
  • Change "mozilla-central" to "mozilla-inbound", "mozilla-aurora", "mozilla-beta" or "mozilla-release" depending on which branch you want to run the tests on

Update sources

  • run command in the source directory
hg pull -u

Install and configure Android SDK and NDK

  • in order to run tests you will need the Android SDK (Software development kit) and the Android NDK (Native-code development kit)

Install Geko Requirements

  • Run in the terminal the command
sudo apt-get build-dep firefox

Install ia32-lib binaries

  • These binaries are required in order to get the Android SDK to work on Linux x64
  • Run in the terminal the command
sudo apt-get install ia32-libs

Install Android SDK

  • Download the archive and unpack it
wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2
tar -xjf android-ndk-r5c-linux-x86.tar.bz2

Install Android NDK

  • Download the archive and unpack it
wget http://dl.google.com/android/android-sdk_r15-linux.tgz
tar -xzf android-sdk_r15-linux.tgz

Update Android SDK

  • run in the terminal from the home file
./android-sdk-linux/tools/android update sdk -u
./android-sdk-linux/tools/android update adb

Create .mozconfig files

  • You have to create a .mozconfig file for each build
  • Use gedi or any other file editor to create the .mozconfig file in the root directory of the build
  • Update the filepaths in the config file to mirror the locations on your system

Config file for Firefox Mobile

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-android
mk_add_options MOZ_MAKE_FLAGS="-s -j10"
ac_add_options --enable-debug
ac_add_options --disable-optimize
ac_add_options --with-ccache
ac_add_options --disable-crashreporter
# Android SDK/NDK
ac_add_options --with-android-ndk="/dir/to/android-tools/android-ndk-r5c"
ac_add_options --with-android-sdk="/dir/to/android-tools/android-sdk-macosx/platforms/android-14"
ac_add_options --with-android-version=5
ac_add_options --with-android-tools="/dir/to/android-tools/android-sdk-macosx/tools"
ac_add_options --with-android-toolchain="/dir/to/android-tools/android-ndk-r5c/toolchains/arm-linux-androideabi- 4.4.3/prebuilt/darwin-x86"
ac_add_options --with-android-platform="/dir/to/android-tools/android-ndk-r5c/platforms/android-5/arch-arm"
# Android options
## Native UI:
ac_add_options --enable-application=mobile/android
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-endian=little

Config file for the automation build

ac_add_options --enable-application=browser
mk_add_options MOZ_OBJDIR=./objdir-firefox

Make the builds

Make the builds

  • run command in the source directory for each build
make -f client.mk

Make the Android package

make package

Run Tests

Set up the MOZ_HOST_BIN environment variable

  • The command can be added to .bashrc / .bash_profile for convinence or just run in the Terminal
export MOZ_HOST_BIN=/ABSOLUTE/PATH/TO/FIREFOX/SOURCE/{objdir}/dist/bin

Running all the tests

make mochitest-robotium

Running a single test

  • testLoad is the name of one of the tests
TEST_PATH=testLoad make mochitest-robotium