Auto-tools/Projects/Robocop/GetStarted
Setup
- First step is to Clone the source code from mozilla-central.
- Then Setup the build environment according to platforms.
- Finally, build with the this command in the source directory:
make -f client.mk
Robocop needs two different builds of firefox in order for it to work. One is the desktop build, and the other being the fennec build. When making different builds, it is essential that we should use two different .mozconfig files to generate the correct build. Here's some examples of .mozconfig:
# This is an example .mozconfig file for building fennec . $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
# This is an example for building desktop firefox ac_add_options --enable-application=browser mk_add_options MOZ_OBJDIR=./objdir-firefox
After done cloning and building (which takes an awfully long time), we can now package the fennec builds we just created by using this command under the object directory:
make package
When all of the above is completed, we just need to install the fennec package on our device by using adb:
adb install dist/fennec-*.apk
Running Test Cases
We should be following this link for running test cases.
- Please make sure the MOZ_HOST_BIN environmental variable is set to the correct place. It should point directly to the SOURCE/{objdir}/dist/bin under the DESKTOP build.
- Then run this command under the object directory from the FENNEC build:
make mochitest-robotium
- Or this command for individual test cases:
# using testAwesomebar as example TEST_PATH=testAwesomebar make mochitest-robotium
Creating Test Cases
This link should be used as a guide on how to start writing a robocop test. Here's some examples for some of the actions which may be used in a test case:
// Loading URL from awesomebar, this should be local files only String url = getAbsoluteUrl("/robocop/robocop_blank_01.html"); loadUrl(url);
// Try scrolling across the screen mDriver.setupScrollHandling(); // Calculate where we should be dragging. int midX = mDriver.getGeckoLeft() + mDriver.getGeckoWidth()/2; int midY = mDriver.getGeckoTop() + mDriver.getGeckoHeight()/2; int endY = mDriver.getGeckoTop() + mDriver.getGeckoHeight()/10; for (int i = 0; i < 10; i++) { mActions.drag(midX, midX, midY, endY); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } }
// Sending key press, using BACK key as example mActions.sendSpecialKey(Actions.SpecialKey.BACK);
// Wait for some text to appear within awesome screen mSolo.waitForText("http://www.google.com");
// Assertion within chrome mAsserter.ok(mSolo.waitForText("about:home"), "LOG ENTRY GOES HERE", "");
// Tap on an item within current view mSolo.clickOnView(item);
// Tap on items within current listview mSolo.clickInList(0);
// Tap on text mSolo.clickOnText("Bookmarks");
// Store an element for future use awesomebar = mDriver.findElement(getActivity(), "awesome_bar");
There are way more commands we can use with robocop. We can find more information here: