Need help with gaia?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

2.1K Stars 2.4K Forks Other 53.9K Commits 1.2K Opened issues


Gaia is a HTML5-based Phone UI for the Boot 2 Gecko Project. NOTE: For details of what branches are used for what releases, see

Services available


Need anything else?

Contributors list


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:

#fxos on

Hacking Gaia

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.

Autolander (bot)

Autolander is a bot which integrates github and bugzilla workflows.

Features available: - Automatic pull request to bugzilla attachment linking. - Automatic landing, on green integration run, with a R+ from a suggested reviewer and the autoland keyword. - Comments in the bug with the landed commit, and marks the bug as fixed. - Validates pull request title and commit message formats. - Currently only runs a subset of the gaia CI tests which are stable on taskcluster. Ensure you have a green gaia-try run before adding the autoland keyword. - See more at: The Autolander guide on MDN


Unit Tests

Unit tests for an app go in


To run all the unit tests with B2G Desktop:

  1. Run
    DEBUG=1 make
  2. Run
    make test-agent-server &
  3. Run B2G Desktop and open the Test Agent app
  4. Run
    make test-agent-test


make test-agent-test 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:

  1. Run
    DEBUG=1 make
  2. Run
    make test-agent-server &
  3. Run B2G Desktop and open the Test Agent app
  4. Edit files and when you save them, glance at the console with test-agent-server running

Note: If you add new files, you will need to restart test-agent-server.

As a convenience, you can also use the

script to launch the test-agent-server and open the Test Agent app in firefox:
  1. Add firefox to your
    or set
    to your preferred firefox/aurora/nightly binary.
  2. Run
    to run the test-agent-server and launch firefox.
  3. Run
    make test-agent-test
    or modify files as described above.

For more details on writing tests, see:

Integration Tests

Gaia uses marionette-js-runner for ui testing. Tests need to live in

and should be named
. Gaia's marionette tests run on nodejs and you'll need nodejs>=v0.12 and npm>=v2.0 installed.

Shared code for tests lives in plugins at

or in helpers at

For more details on writing integration tests, see:

Running integration tests

make test-integration

Invoking tests for a specific app

APP= make test-integration

Invoking specific test files

TEST_FILES="/abs/path/to/some_test.js /abs/path/to/other_test.js" make test-integration
Running tests on device

You can run tests on device by plugging in your phone and adding the BUILDAPP=device to the make command:

BUILDAPP=device make test-integration

More things

    pipes gecko logs to your command line process for debugging.

Build System Tests

Build system has its own unit test and integration test. Both are running on Node.js

Build System Unit Tests

To run unit test locally, using following command:

$ make build-test-unit

Build System Integration Tests

To run integration test locally, using following command:

$ make build-test-integration

Invoking specific test files

Both the build unit or integration test can invoke specific test files by TEST_FILES

make build-test-unit TEST_FILES=
make build-test-integration TEST_FILES=

For example, we could run the

build integration test in keyboard app with the below command.
make build-test-integration TEST_FILES=apps/keyboard/test/build/integration/keyboard_test.js

If you would like to run more than one test, we could do the below command.

make build-test-integration TEST_FILES="apps/keyboard/test/build/integration/keyboard_test.js apps/keyboard/test/build/integration/keyboard_layout_test.js"

Generate JSDOC

To generate API reference locally, run

make docs
command to generate docs. The generated per app API docs will be located in

You could generate single app doc with this:

$ gulp jsdoc:system

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.