Mobile/Fennec Chrome: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 41: Line 41:
Chrome tests are run just like mochitests except they have the --chrome flag set on the command line when launching.
Chrome tests are run just like mochitests except they have the --chrome flag set on the command line when launching.


Out of the box, these do not run on the device. You can run them on the desktop version of fennec which means that we are running into resource issues on the device.
<pre>
python /media/mmc1/unittests/mochitest/runtests.py --autorun --close-when-done --chrome --utility-path=/media/mmc1/unittests/bin --appname=/media/mmc1/unittests/fennec/fennec --xre-path=/media/mmc1/unittests/fennec/xulrunner --certificate-path=/media/mmc1/unittests/certs --log-file=logs/log_content.txt
</pre>


I have followed the methods of running mochitests and have started running the chrome tests one directory at a time.  This is trickier as you cannot specify a directory via the command line. Instead, I do this:
The Chrome tests will fail when run on a device.  This is because we don't have enough memory available to load the whole set of tests into memory and execute.


To work around this, we run a subset of tests at a time.  We have found that running one subdirectory under the chrome/ folder works out well.  Once we have a --test-path that works for directories in chrome, we can do this easier.  At the moment, we remove all files from the chrome/ directory and move the files over one directory at a time:
<pre>
<pre>
cd _tests/testing/mochitest
cd /media/mmc1/unittests/mochitest
cp -R chrome chrome.bak
cp -R chrome chrome.bak


Line 53: Line 56:
rm -Rf chrome/*
rm -Rf chrome/*
cp -R chrome.bak/content chrome/
cp -R chrome.bak/content chrome/
python runtests.py --appname=../../../../fennec --chrome --log-file=chrome_content.log --autorun --close-when-done
</pre>
</pre>
I have a basic python [[http://people.mozilla.com/~jmaher/fennec/run_chrome_chunked.py script]] which will achieve this.  I still need to clean it up and make it accept command line arguments as well as stitch the chunked log files together.


== TODO ==
== TODO ==

Revision as of 19:02, 27 March 2009

Getting the Tests

Edit your mozconfig to contain the following lines:

ac_add_options --enable-tests

Get the source and build according to instructions.

to learn more about the tests, visit the MDC Guide]


Porting tests to N800

With changes from bug 421611 we have made this process much simpler.

If following directions for running fennec on N800/N810 devices, you will need to package up the tests from the xulrunner directory and the test harness from the source tree:

cd $(xul_objdir)
make package-tests
cd dist
bunzip2 xulrunner-*tests.tar.bz2
scp xulrunner-*tests.tar root@<deviceip>:/media/mmc1

On the device, untar the xulrunner-*tests.tar in your test directory alongside the fennec-*.tar:

cd /media/mmc1
mkdir unittests
mv fennec-*.tar unittests
mv xulrunner-*tests.tar unittests
cd unittests
tar -xvf fennec-*.tar
tar -xvf xulrunner-*tests.tar

Running Chrome tests on Fennec

Chrome tests are run just like mochitests except they have the --chrome flag set on the command line when launching.

python /media/mmc1/unittests/mochitest/runtests.py --autorun --close-when-done --chrome --utility-path=/media/mmc1/unittests/bin --appname=/media/mmc1/unittests/fennec/fennec --xre-path=/media/mmc1/unittests/fennec/xulrunner --certificate-path=/media/mmc1/unittests/certs --log-file=logs/log_content.txt

The Chrome tests will fail when run on a device. This is because we don't have enough memory available to load the whole set of tests into memory and execute.

To work around this, we run a subset of tests at a time. We have found that running one subdirectory under the chrome/ folder works out well. Once we have a --test-path that works for directories in chrome, we can do this easier. At the moment, we remove all files from the chrome/ directory and move the files over one directory at a time:

cd /media/mmc1/unittests/mochitest
cp -R chrome chrome.bak

## NOTE: you need to do the following steps in a look for each directory
## dirs: [content, docshell, dom, toolkit, widget]
rm -Rf chrome/*
cp -R chrome.bak/content chrome/

TODO

  • HACK: in order to work around bugs bug 472334 and bug 472341, we need to turn on sessionhistory by setting a user_pref("browser.sessionhistory.max_total_viewers", -1) in automation.py
  • HACK: in order to get a [session store test] running, we need to set dom.storage.default_quota=640 in automation.py and change domstorage_global.js#88 from 32767 to 8191 in the for loop