Gaia is Mozilla's Phone UX for the Boot to Gecko (B2G) project.
Boot to Gecko aims to create a complete, standalone operating system for the open web.
You can read more about B2G here:
follow us on twitter: @Boot2Gecko
join the Gaia mailing list:
and talk to us on IRC:
gaia on irc.mozilla.org
The Gaia/Hacking page on MDN has all the information that you need to start working on Gaia, including building and running Gaia on a compatible device or desktop computer.
Opt-into new features by adding +shepherd to your first commit.
Features available:
Unit tests for an app go in apps/<APP>/test/unit/
.
To run all the unit tests with B2G Desktop:
DEBUG=1 make
make test-agent-server &
Run make test-agent-test
or make test-agent-test APP=<APP>
to run unit tests for a
specific app
More importantly, you can use test-agent-server to watch the files on the filesystem and execute relevant tests when they change:
DEBUG=1 make
make test-agent-server &
Note: If you add new files, you will need to restart test-agent-server.
As a convenience, you can also use the gaia-test
script to launch the
test-agent-server and open the Test Agent app in firefox:
$PATH
or set $FIREFOX
to your preferred
firefox/aurora/nightly binary../bin/gaia-test
to run the test-agent-server and launch firefox.make test-agent-test
or modify files as described above.For more details on writing tests, see: https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Gaia_Unit_Tests
Gaia uses marionette-js-runner to run the tests with a custom builder for gaia. Tests should live with the rest of your apps code (in apps/my_app/test/marionette) and test files should end in _test.js.
All integration tests run under a node environment. You need node >= 0.10 for this to work predictably.
Shared code for tests lives under shared/test/integration.
make test-integration TEST_FILES=<test>
For example, we could run the day_view_test.js
test in calendar app with the below command.
make test-integration TEST_FILES=./apps/calendar/test/marionette/day_view_test.js
If you would like to run more than one test, we could do the below command.
make test-integration TEST_FILES="./apps/calendar/test/marionette/day_view_test.js ./apps/calendar/test/marionette/today_test.js"
make test-integration APP=<APP>
For example, we could run all tests for the calendar app with make test-integration APP=calendar
.
NOTE: unless you tests end in _test.js they will not be
automatically picked up by make test-integration
.
make test-integration
If you wish to run many tests in background you might not want to be disturbed by the b2g-desktop window popping everytime, or the sound. One solution for the first issue is to use Xvfb:
xvfb-run make test-integration
If you are using PulseAudio and want to keep the tests quied, then just force an invalid server:
PULSE_SERVER=":" make test-integration
You can of course combine both:
PULSE_SERVER=":" xvfb-run make test-integration
For performance reasons we don't run make profile
for each test
run this means you need to manually remove the profile-test
folder when you make changes to your apps.
If you don't have a b2g folder one will be downloaded for you. This can be problematic if you're offline. You can symlink a b2g-desktop directory to b2g/ in gaia to avoid the download.
If you have some weird node errors, try removing node_modules since things may be stale.
To get debug information from the b2g desktop client, run this:
DEBUG=b2g-desktop ./bin/gaia-marionette name/of/test.js
To get debug information from b2g desktop and all of the marionette
plugins, run this:
DEBUG=* ./bin/gaia-marionette name/of/test.js
See Gaia functional tests README
See how to run the Gaia endurance tests
To generate API reference locally, you have to install grunt with following command:
$ npm -g grunt-cli
then run make docs
command to generate docs.
The generated API docs will be located in docs
folder.