Based on my own experience and discussions with others, the workflow for adding 
new mochitests isn't great. Commonly, it looks like: "copy/paste a test in the 
same directory, add the new test to the relevant manifest file, empty out the 
actual test bits, write your test". In my experience this is prone to issues 
like forgetting to add the new test to the manifest, or not fully replacing 
boilerplate like bug numbers from the copied test.

There's a script in tree I was unaware of until last week called 
gen_template.pl that's intended to help here, but it does leave a few issues 
open:

1) It doesn't help with finding the manifest file and adding the new test to it.
2) The boilerplate it generates is outdated (for example, it sets 
type="application/javascript" even in HTML documents, it doesn't include 
add_task, etc).
3) It supports only mochitest-chrome and mochitest-plain.

Last week I prototyped a new mach command to fix (1) and (2), and expand (3) to 
include browser-chrome mochitests. If it's helpful, it could be extended to 
more test types as well. When you run the command it will create a file with 
the appropriate boilerplate and add it to the manifest file (chrome.ini, 
mochitest.ini, browser.ini depending on the type). This way you can immediately 
run the test with `./mach mochitest`. It looks like this:

```
# Chrome mochitests
./mach addtest js/xpconnect/tests/chrome/test_chrome.html
./mach addtest js/xpconnect/tests/chrome/test_chrome.xhtml
./mach addtest js/xpconnect/tests/chrome/test_chrome.xul

# Plain mochitests
./mach addtest js/xpconnect/tests/mochitest/test_plain.html
./mach addtest js/xpconnect/tests/mochitest/test_plain.xhtml
./mach addtest js/xpconnect/tests/mochitest/test_plain.xul

# Browser mochitests
./mach addtest browser/base/content/test/alerts/browser_mochitest.js
```

It's not landed because I’d like to get some feedback (see next paragraph), but 
if you'd like to try it locally it can be applied from 
https://phabricator.services.mozilla.com/D25482.

This change modifies the existing templates used by gen_template.pl and removes 
the perl script. I think the template changes are mostly uncontroversial, but 
there is one notable change that I'd like feedback on before landing. We 
currently add a bug number to new tests generated with the script (in 4 
places). For example, see "{BUGNUMBER}" in 
https://searchfox.org/mozilla-central/source/testing/mochitest/static/chrome.template.txt.
 My patch removes this. The reasoning is:

1) To tighten up the boilerplate and prevent the bug number from not being 
updated in any or all of the spots when a test is created via copy/paste.
2) Require less information up front when generating the test (in case you are 
building a test before filing a bug, or have a test not associated with any one 
particular bug).

Links to bugs/comments/etc can be added in the test if they are relevant, but I 
don't know that it's important enough to add another step in front of getting a 
useful test case built. I did also consider adding a TODO comment in the 
template to add a bug link (though in a single place instead of 4), but not to 
require that information up front.

If I don’t hear objections on this point I’ll work towards getting it landed 
soon.

Thanks,
Brian

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to