mozilla-b2g/gaia
{ "createdAt": "2011-09-03T01:38:46Z", "defaultBranch": "master", "description": "DEPRECATED - 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", "fullName": "mozilla-b2g/gaia", "homepage": "https://wiki.mozilla.org/B2G", "language": "JavaScript", "name": "gaia", "pushedAt": "2021-07-05T07:06:28Z", "stargazersCount": 2099, "topics": [ "abandoned", "unmaintained" ], "updatedAt": "2025-09-20T20:03:10Z", "url": "https://github.com/mozilla-b2g/gaia"}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 irc.mozilla.org
Hacking Gaia
Section titled “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)
Section titled “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: https://github.com/mozilla/autolander The Autolander guide on MDN
Unit Tests
Section titled “Unit Tests”Unit tests for an app go in apps/<APP>/test/unit/.
To run all the unit tests with B2G Desktop:
-
Run
DEBUG=1 make -
Run
make test-agent-server & -
Run B2G Desktop and open the Test Agent app
-
Run
make test-agent-testor
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:
- Run
DEBUG=1 make - Run
make test-agent-server & - Run B2G Desktop and open the Test Agent app
- 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 gaia-test script to launch the
test-agent-server and open the Test Agent app in firefox:
- Add firefox to your
$PATHor set$FIREFOXto your preferred firefox/aurora/nightly binary. - Run
./bin/gaia-testto run the test-agent-server and launch firefox. - Run
make test-agent-testor modify files as described above.
For more details on writing tests, see: https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Gaia_Unit_Tests
Integration Tests
Section titled “Integration Tests”Gaia uses
marionette-js-runner
for ui testing. Tests need to live in apps/<some app>/test/marionette and should be named *_test.js. 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
tests/jsmarionette/plugins or in helpers at shared/test/integration.
For more details on writing integration tests, see: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_integration_tests
Running integration tests
Section titled “Running integration tests”make test-integrationInvoking tests for a specific app
Section titled “Invoking tests for a specific app”APP=<APP> make test-integrationInvoking specific test files
Section titled “Invoking specific test files”TEST_FILES="/abs/path/to/some_test.js /abs/path/to/other_test.js" make test-integrationRunning tests on device
Section titled “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-integrationMore things
Section titled “More things”VERBOSE=1pipes gecko logs to your command line process for debugging.
Build System Tests
Section titled “Build System Tests”Build system has its own unit test and integration test. Both are running on Node.js
Build System Unit Tests
Section titled “Build System Unit Tests”To run unit test locally, using following command:
$ make build-test-unitBuild System Integration Tests
Section titled “Build System Integration Tests”To run integration test locally, using following command:
$ make build-test-integrationInvoking specific test files
Section titled “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=<test file path>make build-test-integration TEST_FILES=<test file path>For example, we could run the keyboard_test.js build integration test in keyboard app with the below command.
make build-test-integration TEST_FILES=apps/keyboard/test/build/integration/keyboard_test.jsIf 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
Section titled “Generate JSDOC”To generate API reference locally, run make docs command to generate docs. The generated per app API docs will be located in docs folder.
You could generate single app doc with this:
$ gulp jsdoc:system