DevTools/GetInvolved: Difference between revisions

→‎Hacking: - moved to DevTools/Hacking
(→‎Hacking: - moved to DevTools/Hacking)
Line 45: Line 45:
== Hacking ==
== Hacking ==


=== Getting the Source ===
If you are ready to get the source code and start working on DevTools, check out our [[DevTools/Hacking|guide to hacking DevTools]].
 
Follow the instructions on [https://developer.mozilla.org/En/Simple_Firefox_build how to build Firefox], except that you will need to use:
 
hg clone http://hg.mozilla.org/integration/fx-team
 
Instead of:
 
hg clone http://hg.mozilla.org/mozilla-central
 
==== Incremental Builds ====
 
Once you've already built Firefox once, and you just want to incrementally update your build with your latest devtools changes, you can run:
 
  $ ./mach build toolkit/devtools browser
 
Which is much faster and should only take a few seconds.
 
=== Running your build ===
 
==== First Run ====
 
Once you have built Firefox, you can run it with
 
  $ ./mach run -p development
 
What is the <code>-p development</code>?  It is a flag telling Firefox to use a different [https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data profile], named "development" (this name can be anything you want).  If it does not exist the first time you run it, Firefox will open a popup and you can create a new profile with the name you passed in.  This will prevent you from seeing an error message telling you that you need to close your main browser window, and it will let you make settings changes without worrying about messing up your normal profile.
 
Once this command runs, you should see a new Firefox window, called "Nightly".  You will want to make a couple of quick changes to the profile.
 
Open DevTools, and click the "Toolbox Options" gear in the top left.  Make sure the following two options are checked: '''Enable Chrome Debugging''' and '''Enable Remote Debugging'''.  These settings allow you to use the [https://developer.mozilla.org/en-US/docs/Debugging_JavaScript#JavaScript_Debugger browser debugger] to set breakpoints inside of the DevTools code, and let you run the [https://developer.mozilla.org/en-US/docs/Tools/Scratchpad Scratchpad] in the ''Browser'' environment. 
 
[[Image:DevToolsDeveloperSettings.png|center|600px|Settings for developer tools - "Enable Chrome Debugging" and "Enable Remote Debugging"]]  
 
Depending on what you are working on, you may want to make some more changes to your profile.  If you type  '''about:config''' in the URL bar, click through the warning page, and search for '''devtools''' you can see some of them.
 
  # This setting prints all packets sent over the remote debugging protocol to stdout:
  '''devtools.debugger.log''' = true
 
Restart the browser to apply any configuration changes.
 
==== Development workflow ====
 
As you make changes to the code, you can run the following commands to see your changes (you may want to store these in a script for reuse).
 
  $ ./mach build toolkit/devtools browser
  $ ./mach run -p development
 
=== Running the Developer Tools Tests ===
 
We have two suites of tests:
 
* '''xpcshell''': More unit-test style of tests. No browser window, just a JavaScript shell. Mostly testing APIs directly.
* '''mochitest''': More of an integration style of tests. Fires up a whole browser window with every test and you can test clicking on buttons, etc.
 
==== xpcshell Tests ====
 
To run all of the xpcshell tests:
 
  $ ./mach xpcshell-test toolkit/devtools
 
To run a specific xpcshell test:
 
  $ ./mach xpcshell-test toolkit/devtools/path/to/the/test_you_want_to_run.js
 
==== Mochitests ====
 
To run the whole suite of mochitests for devtools (sit back and relax):
 
  $ ./mach mochitest-browser browser/devtools
 
To run a specific tool's suite of mochitests:
 
  $ ./mach mochitest-browser browser/devtools/<tool>
 
For example, run all of the debugger mochitests:
 
  $ ./mach mochitest-browser browser/devtools/debugger
 
To run a specific mochitest:
 
  $ ./mach mochitest-browser browser/devtools/path/to/the/test_you_want_to_run.js
 


== Resources ==
== Resources ==
Confirmed users
66

edits