Project Fission/Enabling Tests with Fission
Enabling Tests with Fission
The Mochitests that are not working with Fission enabled have been annotated with either "skip-if = fission" or "fail-if = fission". Both of these cases need to be fixed.
Cross-origin (or "xorigin") mode allows for mochitests to be run in a cross origin iframe. Used in conjunction with fission mode, xorigin mode can be used validate site isolation in Firefox.
The list of all tests that are currently failing or skipped with xorigin and fission mode enabled can be seen here.
Enabling cross-origin mode
Xorigin mode can be enabled by a flag or environment variable:
./mach mochitest --enable-xorigin-tests [path to test] MOZ_XORIGIN_MOCHITEST=1 ./mach mochitest [path to test]
Failing or hanging tests should be annotated at the manifest level using the "xorigin" keyword, for example:
skip-if = xorigin fail-if = xorigin
Running cross-origin mochitests in Treeherder
- currently supported for mochitest-plain jobs
- will enable on tier2 to start
- To run a mochitest with Fission enabled locally, use --enable-fission with mach test. If the test is marked as a "fail-if" however, then you also need to disable that annotation. Otherwise, the test will report a false success (resulting from an expected fail). The skipped tests do not need this extra step.
- SpecialPowers.useRemoteSubframes can be used to check if Fission is enabled from a mochitest. In browser mochitests, use gFissionBrowser.
- SpecialPowers.spawn() is typically used when you have a cross-process iframe and you need to interact with it in some way that is not supported cross-process. In such a case, one can use SpecialPowers.spawn() to send a script over to the process of the iframe to assert and/or return a value.
- If a test complains that the remote type is “webIsolated=<some URI>”, but it expected “web”, then you can use E10SUtils.isWebRemoteType() instead to check the remote type (added in bug 1574543).
- Some XPConnect and bindings related tests check that cross-origin operations fail. With Fission, they will fail, but in a different way. These tests can be changed to use http://test1.mochi.test:8888/ (instead of, say, example.org) so that they will be cross-origin but still same-process even with Fission. See bug 1572895. It would probably be good to also check the cross-origin, out-of-process case.
- SpecialPowers push and pop for prefs have been fixed to work with Fission, but the equivalent methods for permissions have not been.
- If the test failure cause is a shutdown hang, leak or crash, reach out to the DOM Fission team, as this is a known Fission issue.