Bug 1458571 - Make talos and raptor use the 'common' base profile, r?rwood draft
authorAndrew Halberstadt <ahalberstadt@mozilla.com>
Thu, 10 May 2018 15:31:31 -0400
changeset 794168 0c6757e12a4e6b99e87c1d4d834cd55d50f9dbe9
parent 794167 9ee954fde02518f7f2b0bc5411cff5d5fa4c8931
push id109588
push userahalberstadt@mozilla.com
push dateFri, 11 May 2018 13:03:42 +0000
reviewersrwood
bugs1458571
milestone62.0a1
Bug 1458571 - Make talos and raptor use the 'common' base profile, r?rwood This factors out the prefs that are common across raptor, talos and mochitest/web-platform-tests. In order to do this a new "unittest" profile has been created. This means, to set a pref across everything that uses this system, edit: testing/profiles/common/user.js To set a pref across unittest frameworks (which excludes raptor and talos), edit: testing/profiles/unittest/user.js Setting a pref for perf frameworks only remains the same. Extensions follow the same rules (drop them in <profile>/extensions). MozReview-Commit-ID: 6AHlYsN0Lb8
testing/profiles/common/user.js
testing/profiles/moz.build
testing/profiles/perf/user.js
testing/profiles/profiles.json
testing/profiles/unittest/extensions/README.txt
testing/profiles/unittest/user.js
--- a/testing/profiles/common/user.js
+++ b/testing/profiles/common/user.js
@@ -1,315 +1,66 @@
-// Base preferences file used by most test harnesses
+// Base preferences file used by both unittest and perf harnesses.
 /* globals user_pref */
-user_pref("accessibility.typeaheadfind.autostart", false);
-// Make sure Shield doesn't hit the network.
-user_pref("app.normandy.api_url", "");
-// Make sure the notification permission migration test doesn't hit the network.
-user_pref("app.support.baseURL", "http://{server}/support-dummy/");
 user_pref("app.update.enabled", false);
-user_pref("app.update.staging.enabled", false);
-user_pref("app.update.url.android", "");
-// Increase the APZ content response timeout in tests to 1 minute.
-// This is to accommodate the fact that test environments tends to be slower
-// than production environments (with the b2g emulator being the slowest of them
-// all), resulting in the production timeout value sometimes being exceeded
-// and causing false-positive test failures. See bug 1176798, bug 1177018,
-// bug 1210465.
-user_pref("apz.content_response_timeout", 60000);
 user_pref("browser.EULA.override", true);
-// Make sure we don't try to load snippets from the network.
-user_pref("browser.aboutHomeSnippets.updateUrl", "nonexistent://test");
 // Disable Bookmark backups by default.
 user_pref("browser.bookmarks.max_backups", 0);
-user_pref("browser.console.showInPanel", true);
-// Don't connect to Yahoo! for RSS feed tests.
-// en-US only uses .types.0.uri, but set all of them just to be sure.
-user_pref("browser.contentHandlers.types.0.uri", "http://test1.example.org/rss?url=%s");
-user_pref("browser.contentHandlers.types.1.uri", "http://test1.example.org/rss?url=%s");
-user_pref("browser.contentHandlers.types.2.uri", "http://test1.example.org/rss?url=%s");
-user_pref("browser.contentHandlers.types.3.uri", "http://test1.example.org/rss?url=%s");
-user_pref("browser.contentHandlers.types.4.uri", "http://test1.example.org/rss?url=%s");
-user_pref("browser.contentHandlers.types.5.uri", "http://test1.example.org/rss?url=%s");
 user_pref("browser.dom.window.dump.enabled", true);
-// Indicate that the download panel has been shown once so that whichever
-// download test runs first doesn't show the popup inconsistently.
-user_pref("browser.download.panel.shown", true);
-user_pref("browser.firstrun.show.localepicker", false);
-user_pref("browser.firstrun.show.uidiscovery", false);
 // Use an empty list of sites to avoid fetching
 user_pref("browser.newtabpage.activity-stream.default.sites", "");
 user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
 user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
 user_pref("browser.newtabpage.activity-stream.telemetry", false);
 user_pref("browser.newtabpage.activity-stream.tippyTop.service.endpoint", "");
-// Background thumbnails in particular cause grief, and disabling thumbnails
-// in general can't hurt - we re-enable them when tests need them.
-user_pref("browser.pagethumbnails.capturing_disabled", true);
-user_pref("browser.ping-centre.production.endpoint", "");
-// Make sure PingCentre doesn't hit the network.
-user_pref("browser.ping-centre.staging.endpoint", "");
-// Point the url-classifier to the local testing server for fast failures
-user_pref("browser.safebrowsing.downloads.remote.url", "http://{server}/safebrowsing-dummy/update");
-user_pref("browser.safebrowsing.provider.google.gethashURL", "http://{server}/safebrowsing-dummy/gethash");
-user_pref("browser.safebrowsing.provider.google.updateURL", "http://{server}/safebrowsing-dummy/update");
-user_pref("browser.safebrowsing.provider.google4.gethashURL", "http://{server}/safebrowsing4-dummy/gethash");
-user_pref("browser.safebrowsing.provider.google4.updateURL", "http://{server}/safebrowsing4-dummy/update");
-user_pref("browser.safebrowsing.provider.mozilla.gethashURL", "http://{server}/safebrowsing-dummy/gethash");
-user_pref("browser.safebrowsing.provider.mozilla.updateURL", "http://{server}/safebrowsing-dummy/update");
 user_pref("browser.search.countryCode", "US");
 // This will prevent HTTP requests for region defaults.
 user_pref("browser.search.geoSpecificDefaults", false);
 // Tell the search service we are running in the US.  This also has the desired
 // side-effect of preventing our geoip lookup.
 user_pref("browser.search.isUS", true);
-user_pref("browser.search.suggest.timeout", 10000); // use a 10s suggestion timeout in tests
 user_pref("browser.shell.checkDefaultBrowser", false);
 // Disable android snippets
 user_pref("browser.snippets.enabled", false);
-user_pref("browser.snippets.firstrunHomepage.enabled", false);
 user_pref("browser.snippets.syncPromo.enabled", false);
-user_pref("browser.startup.page", 0); // use about:blank, not browser.startup.homepage
-// Don't show a delay when hiding the audio indicator during tests
-user_pref("browser.tabs.delayHidingAudioPlayingIconMS", 0);
-// Don't allow background tabs to be zombified, otherwise for tests that
-// open additional tabs, the test harness tab itself might get unloaded.
-user_pref("browser.tabs.disableBackgroundZombification", true);
-// Don't use auto-enabled e10s
-user_pref("browser.tabs.remote.autostart", false);
-// Make sure Translation won't hit the network.
-user_pref("browser.translation.bing.authURL", "http://{server}/browser/browser/components/translation/test/bing.sjs");
-user_pref("browser.translation.bing.translateArrayURL", "http://{server}/browser/browser/components/translation/test/bing.sjs");
-user_pref("browser.translation.engine", "bing");
-user_pref("browser.translation.yandex.translateURLOverride", "http://{server}/browser/browser/components/translation/test/yandex.sjs");
-user_pref("browser.ui.layout.tablet", 0); // force tablet UI off
-// Ensure UITour won't hit the network
-user_pref("browser.uitour.pinnedTabUrl", "http://{server}/uitour-dummy/pinnedTab");
-user_pref("browser.uitour.url", "http://{server}/uitour-dummy/tour");
-user_pref("browser.urlbar.speculativeConnect.enabled", false);
-// Turn off search suggestions in the location bar so as not to trigger network
-// connections.
-user_pref("browser.urlbar.suggest.searches", false);
-user_pref("browser.urlbar.usepreloadedtopurls.enabled", false);
 // Turn off the location bar search suggestions opt-in.  It interferes with
 // tests that don't expect it to be there.
 user_pref("browser.urlbar.userMadeSearchSuggestionsChoice", true);
 user_pref("browser.warnOnQuit", false);
 // Disable webapp updates.  Yes, it is supposed to be an integer.
 user_pref("browser.webapps.checkForUpdates", 0);
-// Enable webapps testing mode, which bypasses native installation.
-user_pref("browser.webapps.testing", true);
-user_pref("captivedetect.canonicalURL", "http://{server}/captive-detect/success.txt");
-// Point Firefox Health Report at a local server. We don't care if it actually
-// works. It just can't hit the default production endpoint.
-user_pref("datareporting.healthreport.documentServerURI", "http://{server}/healthreport/");
-user_pref("datareporting.healthreport.uploadEnabled", false);
 // We do not wish to display datareporting policy notifications as it might
 // cause other tests to fail. Tests that wish to test the notification functionality
 // should explicitly disable this pref.
 user_pref("datareporting.policy.dataSubmissionPolicyBypassNotification", true);
-user_pref("devtools.browsertoolbox.panel", "jsdebugger");
 user_pref("devtools.chrome.enabled", false);
-user_pref("devtools.debugger.prompt-connection", true);
 user_pref("devtools.debugger.remote-enabled", false);
-user_pref("devtools.debugger.remote-port", 6023);
-user_pref("devtools.devedition.promo.enabled", false);
-user_pref("devtools.testing", true);
 user_pref("dom.allow_scripts_to_close_windows", true);
 user_pref("dom.disable_open_during_load", false);
-user_pref("dom.experimental_forms", true); // on for testing
-user_pref("dom.forms.color", true); // on for testing
-user_pref("dom.forms.datetime", true); // on for testing
-user_pref("dom.forms.datetime.others", true); // on for testing
-// Enable Gamepad
-user_pref("dom.gamepad.enabled", true);
-user_pref("dom.gamepad.non_standard_events.enabled", true);
-user_pref("dom.ipc.reportProcessHangs", false); // process hang monitor
-// Don't forceably kill content processes after a timeout
-user_pref("dom.ipc.tabs.shutdownTimeoutSecs", 0);
 user_pref("dom.max_chrome_script_run_time", 0);
 user_pref("dom.max_script_run_time", 0); // no slow script dialogs
-user_pref("dom.min_background_timeout_value", 1000);
-user_pref("dom.popup_maximum", -1);
-user_pref("dom.presentation.testing.simulate-receiver", false);
-// Prevent connection to the push server for tests.
-user_pref("dom.push.connection.enabled", false);
 user_pref("dom.send_after_paint_to_content", true);
-user_pref("dom.successive_dialog_time_limit", 0);
-// In the default configuration, we bypass XBL scopes (a security feature) for
-// domains whitelisted for remote XUL, so that intranet apps and such continue
-// to work without major rewrites. However, we also use the whitelist mechanism
-// to run our XBL tests in automation, in which case we really want to be testing
-// the configuration that we ship to users without special whitelisting. So we
-// use an additional pref here to allow automation to use the "normal" behavior.
-user_pref("dom.use_xbl_scopes_for_remote_xul", true);
-user_pref("dom.w3c_touch_events.enabled", 1);
-user_pref("dom.webcomponents.customelements.enabled", true);
-user_pref("dom.webcomponents.shadowdom.enabled", false);
-user_pref("extensions.autoDisableScopes", 0);
-user_pref("extensions.blocklist.detailsURL", "http://{server}/extensions-dummy/blocklistDetailsURL");
-user_pref("extensions.blocklist.itemURL", "http://{server}/extensions-dummy/blocklistItemURL");
-user_pref("extensions.blocklist.url", "http://{server}/extensions-dummy/blocklistURL");
-// XPI extensions are required for test harnesses to load
-user_pref("extensions.defaultProviders.enabled", true);
 // Only load extensions from the application and user profile
 // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
 user_pref("extensions.enabledScopes", 5);
-// Enable form autofill feature testing.
-user_pref("extensions.formautofill.available", "on");
-// Disable metadata caching for installed add-ons by default
-user_pref("extensions.getAddons.cache.enabled", false);
-// Make sure AddonRepository won't hit the network
-user_pref("extensions.getAddons.get.url", "http://{server}/extensions-dummy/repositoryGetURL");
-user_pref("extensions.getAddons.getWithPerformance.url", "http://{server}/extensions-dummy/repositoryGetWithPerformanceURL");
-user_pref("extensions.getAddons.search.browseURL", "http://{server}/extensions-dummy/repositoryBrowseURL");
-user_pref("extensions.hotfix.url", "http://{server}/extensions-dummy/hotfixURL");
-// Disable intalling any distribution add-ons
-user_pref("extensions.installDistroAddons", false);
 user_pref("extensions.legacy.enabled", true);
-// Disable Screenshots by default for now
-user_pref("extensions.screenshots.disabled", true);
-user_pref("extensions.systemAddon.update.url", "http://{server}/dummy-system-addons.xml");
-user_pref("extensions.update.background.url", "http://{server}/extensions-dummy/updateBackgroundURL");
 // Turn off extension updates so they don't bother tests
 user_pref("extensions.update.enabled", false);
-// Point update checks to the local testing server for fast failures
-user_pref("extensions.update.url", "http://{server}/extensions-dummy/updateURL");
-// Make sure opening about:addons won't hit the network
-user_pref("extensions.webservice.discoverURL", "http://{server}/extensions-dummy/discoveryURL");
-user_pref("findbar.highlightAll", false);
-user_pref("findbar.modalHighlight", false);
-// Existing tests assume there is no font size inflation.
-user_pref("font.size.inflation.emPerLine", 0);
-user_pref("font.size.inflation.minTwips", 0);
 // Disable useragent updates.
 user_pref("general.useragent.updates.enabled", false);
-user_pref("general.useragent.updates.url", "https://example.com/0/%APP_ID%");
-// Always use network provider for geolocation tests
-// so we bypass the OSX dialog raised by the corelocation provider
-user_pref("geo.provider.testing", true);
-user_pref("geo.wifi.logging.enabled", true);
-user_pref("geo.wifi.scan", false);
-user_pref("geo.wifi.timeToWaitBeforeSending", 2000);
-user_pref("geo.wifi.uri", "http://{server}/tests/dom/tests/mochitest/geolocation/network_geolocation.sjs");
-user_pref("gfx.color_management.force_srgb", true);
-user_pref("gfx.logging.level", 1);
 user_pref("hangmonitor.timeout", 0); // no hang monitor
-// We don't want to hit the real Firefox Accounts server for tests.  We don't
-// actually need a functioning FxA server, so just set it to something that
-// resolves and accepts requests, even if they all fail.
-user_pref("identity.fxaccounts.auth.uri", "https://{server}/fxa-dummy/");
-// Ditto for all the FxA content root URI.
-user_pref("identity.fxaccounts.remote.root", "https://{server}/");
-user_pref("javascript.options.showInConsole", true);
-user_pref("layout.accessiblecaret.enabled_on_touch", false);
-// Enable CSS 'contain' for testing
-user_pref("layout.css.contain.enabled", true);
-// Enable CSS Grid 'subgrid' feature for testing
-user_pref("layout.css.grid-template-subgrid-value.enabled", true);
-// Enable CSS initial-letter for testing
-user_pref("layout.css.initial-letter.enabled", true);
-// Enable -webkit-{min|max}-device-pixel-ratio media queries for testing
-user_pref("layout.css.prefixes.device-pixel-ratio-webkit", true);
-// Enable webkit prefixed CSS features for testing
-user_pref("layout.css.prefixes.webkit", true);
-// Make sure CSS error reporting is enabled for tests
-user_pref("layout.css.report_errors", true);
-// Enable CSS shape-outside for testing
-user_pref("layout.css.shape-outside.enabled", true);
-// Disable spammy layout warnings because they pollute test logs
-user_pref("layout.spammy_warnings.enabled", false);
 // Make tests run consistently on DevEdition (which has a lightweight theme
 // selected by default).
 user_pref("lightweightThemes.selectedThemeID", "");
-// Disable all recommended Marionette preferences for Gecko tests.
-// The prefs recommended by Marionette are typically geared towards
-// consumer automation; not vendor testing.
-user_pref("marionette.prefs.recommended", false);
-user_pref("media.autoplay.enabled", true);
-user_pref("media.cache_size", 1000);
-user_pref("media.dormant-on-pause-timeout-ms", 0); // Enter dormant immediately without waiting for timeout.
-// Set the number of shmems the PChromiumCDM protocol pre-allocates to 0,
-// so that we test the case where we under-estimate how many shmems we need
-// to send decoded video frames from the CDM to Gecko.
-user_pref("media.eme.chromium-api.video-shmems", 0);
-user_pref("media.eme.enabled", true);
 user_pref("media.gmp-manager.updateEnabled", false);
-// Make sure GMPInstallManager won't hit the network.
-user_pref("media.gmp-manager.url.override", "http://{server}/dummy-gmp-manager.xml");
-user_pref("media.hls.server.url", "http://{server}/tests/dom/media/test/hls");
 // Don't block old libavcodec libraries when testing, because our test systems
 // cannot easily be upgraded.
 user_pref("media.libavcodec.allow-obsolete", true);
-// Enable Media Source Extensions for testing
-user_pref("media.mediasource.mp4.enabled", true);
-user_pref("media.mediasource.webm.enabled", true);
-user_pref("media.memory_cache_max_size", 32);
-user_pref("media.memory_caches_combined_limit_kb", 256);
-user_pref("media.openUnsupportedTypeWithExternalApp", false);
-user_pref("media.preload.auto", 3); // auto = enough
-user_pref("media.preload.default", 2); // default = metadata
-user_pref("media.suspend-bkgnd-video.enabled", false);
-user_pref("media.test.dumpDebugInfo", true);
-user_pref("media.volume_scale", "0.01");
-// Enable speech synth test service, and disable built in platform services.
-user_pref("media.webspeech.synth.test", true);
-user_pref("network.http.prompt-temp-redirect", false);
 // Disable speculative connections so they aren't reported as leaking when they're hanging around.
 user_pref("network.http.speculative-parallel-limit", 0);
-user_pref("network.manage-offline-status", false);
-// We know the SNTP request will fail, since localhost isn't listening on
-// port 135. The default number of retries (10) is excessive, but retrying
-// at least once will mean that codepath is still tested in automation.
-user_pref("network.sntp.maxRetryCount", 1);
-// Make sure SNTP requests don't hit the network
-user_pref("network.sntp.pools", "{server}");
 // Set places maintenance far in the future (the maximum time possible in an
 // int32_t) to avoid it kicking in during tests. The maintenance can take a
 // relatively long time which may cause unnecessary intermittents and slow down
 // tests. This, like many things, will stop working correctly in 2038.
 user_pref("places.database.lastMaintenance", 2147483647);
-// For Firefox 52 only, ESR will support non-Flash plugins while release will
-// not, so we keep testing the non-Flash pathways
-user_pref("plugin.load_flash_only", false);
-user_pref("privacy.trackingprotection.introURL", "http://{server}/trackingprotection/tour");
-user_pref("security.default_personal_cert", "Select Automatically"); // Need to client auth test be w/o any dialogs
-// Existing tests don't wait for the notification button security delay
-user_pref("security.notification_enable_delay", 0);
-// Make sure SSL Error reports don't hit the network
-user_pref("security.ssl.errorReporting.url", "https://example.com/browser/browser/base/content/test/general/ssl_error_reports.sjs?succeed");
 // Make enablePrivilege continue to work for test code. :-(
 user_pref("security.turn_off_all_security_so_that_viruses_can_take_over_this_computer", true);
-user_pref("security.warn_viewing_mixed", false);
-// Ensure blocklist updates don't hit the network
-user_pref("services.settings.server", "http://{server}/dummy-kinto/v1");
-user_pref("shell.checkDefaultClient", false);
-// Disable password capture, so that mochitests that include forms aren't
-// influenced by the presence of the persistent doorhanger notification.
-user_pref("signon.rememberSignons", false);
-user_pref("startup.homepage_welcome_url", "about:blank");
-user_pref("startup.homepage_welcome_url.additional", "");
-user_pref("test.mousescroll", true);
-// Don't send 'bhr' ping during tests, otherwise the testing framework might
-// wait on the pingsender to finish and slow down tests.
-user_pref("toolkit.telemetry.bhrPing.enabled", false);
-// Don't send the 'first-shutdown' during tests, otherwise tests expecting
-// main and subsession pings will fail.
-user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
-// Don't send 'new-profile' ping on new profiles during tests, otherwise the testing framework
-// might wait on the pingsender to finish and slow down tests.
-user_pref("toolkit.telemetry.newProfilePing.enabled", false);
-// We want to collect telemetry, but we don't want to send in the results.
-user_pref("toolkit.telemetry.server", "https://{server}/telemetry-dummy/");
-// Don't send the 'shutdown' ping using the pingsender on the first session using
-// the 'pingsender' process. Valgrind marks the process as leaky (e.g. see bug 1364068
-// for the 'new-profile' ping) but does not provide enough information
-// to suppress the leak. Running locally does not reproduce the issue,
-// so disable this until we rewrite the pingsender in Rust (bug 1339035).
-user_pref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false);
-// A couple of preferences with default values to test that telemetry preference
-// watching is working.
-user_pref("toolkit.telemetry.test.pref1", true);
-user_pref("toolkit.telemetry.test.pref2", false);
-// Disable the caret blinking so we get stable snapshot
-user_pref("ui.caretBlinkTime", -1);
-user_pref("webextensions.tests", true);
 user_pref("xpinstall.signatures.required", false);
--- a/testing/profiles/moz.build
+++ b/testing/profiles/moz.build
@@ -3,15 +3,16 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 profile_files = [
     'common/*',
     'perf/*',
     'profiles.json',
+    'unittest/*',
 ]
 
 TEST_HARNESS_FILES.testing.mochitest.profile_data += profile_files
 TEST_HARNESS_FILES['web-platform'].prefs += profile_files
 
 with Files("**"):
     BUG_COMPONENT = ("Testing", "General")
--- a/testing/profiles/perf/user.js
+++ b/testing/profiles/perf/user.js
@@ -1,108 +1,70 @@
 // Base preferences file used by performance harnesses
 /* globals user_pref */
 user_pref("app.normandy.api_url", "https://127.0.0.1/selfsupport-dummy/");
-user_pref("app.update.enabled", false);
-user_pref("browser.EULA.override", true);
 user_pref("browser.aboutHomeSnippets.updateUrl", "https://127.0.0.1/about-dummy/");
 user_pref("browser.addon-watch.interval", -1); // Deactivate add-on watching
-user_pref("browser.bookmarks.max_backups", 0);
 user_pref("browser.cache.disk.smart_size.enabled", false);
 user_pref("browser.cache.disk.smart_size.first_run", false);
 user_pref("browser.chrome.dynamictoolbar", false);
 user_pref("browser.contentHandlers.types.0.uri", "http://127.0.0.1/rss?url=%s");
 user_pref("browser.contentHandlers.types.1.uri", "http://127.0.0.1/rss?url=%s");
 user_pref("browser.contentHandlers.types.2.uri", "http://127.0.0.1/rss?url=%s");
 user_pref("browser.contentHandlers.types.3.uri", "http://127.0.0.1/rss?url=%s");
 user_pref("browser.contentHandlers.types.4.uri", "http://127.0.0.1/rss?url=%s");
 user_pref("browser.contentHandlers.types.5.uri", "http://127.0.0.1/rss?url=%s");
-user_pref("browser.dom.window.dump.enabled", true);
 user_pref("browser.link.open_newwindow", 2);
-user_pref("browser.newtabpage.activity-stream.default.sites", "");
-user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
-user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
-user_pref("browser.newtabpage.activity-stream.telemetry", false);
-user_pref("browser.newtabpage.activity-stream.tippyTop.service.endpoint", "");
 user_pref("browser.ping-centre.production.endpoint", "https://127.0.0.1/pingcentre/dummy/");
 user_pref("browser.ping-centre.staging.endpoint", "https://127.0.0.1/pingcentre/dummy/");
 user_pref("browser.reader.detectedFirstArticle", true);
 user_pref("browser.safebrowsing.blockedURIs.enabled", false);
 user_pref("browser.safebrowsing.downloads.enabled", false);
 user_pref("browser.safebrowsing.downloads.remote.url", "http://127.0.0.1/safebrowsing-dummy/downloads");
 user_pref("browser.safebrowsing.malware.enabled", false);
 user_pref("browser.safebrowsing.passwords.enabled", false);
 user_pref("browser.safebrowsing.phishing.enabled", false);
 user_pref("browser.safebrowsing.provider.google.gethashURL", "http://127.0.0.1/safebrowsing-dummy/gethash");
 user_pref("browser.safebrowsing.provider.google.updateURL", "http://127.0.0.1/safebrowsing-dummy/update");
 user_pref("browser.safebrowsing.provider.google4.gethashURL", "http://127.0.0.1/safebrowsing4-dummy/gethash");
 user_pref("browser.safebrowsing.provider.google4.updateURL", "http://127.0.0.1/safebrowsing4-dummy/update");
 user_pref("browser.safebrowsing.provider.mozilla.gethashURL", "http://127.0.0.1/safebrowsing-dummy/gethash");
 user_pref("browser.safebrowsing.provider.mozilla.updateURL", "http://127.0.0.1/safebrowsing-dummy/update");
-user_pref("browser.search.countryCode", "US");
-user_pref("browser.search.geoSpecificDefaults", false);
 user_pref("browser.search.geoip.url", "");
-user_pref("browser.search.isUS", true);
-user_pref("browser.shell.checkDefaultBrowser", false);
-user_pref("browser.snippets.enabled", false);
-user_pref("browser.snippets.syncPromo.enabled", false);
 user_pref("browser.tabs.remote.autostart", true);
-user_pref("browser.urlbar.userMadeSearchSuggestionsChoice", true);
-user_pref("browser.warnOnQuit", false);
-user_pref("browser.webapps.checkForUpdates", 0);
 user_pref("datareporting.healthreport.documentServerURI", "http://127.0.0.1/healthreport/");
-user_pref("datareporting.policy.dataSubmissionPolicyBypassNotification", true);
-user_pref("devtools.chrome.enabled", false);
-user_pref("devtools.debugger.remote-enabled", false);
 user_pref("devtools.theme", "light");
 user_pref("devtools.timeline.enabled", false);
-user_pref("dom.allow_scripts_to_close_windows", true);
-user_pref("dom.disable_open_during_load", false);
 user_pref("dom.disable_window_flip", true);
 user_pref("dom.disable_window_move_resize", true);
-user_pref("dom.max_chrome_script_run_time", 0);
-user_pref("dom.max_script_run_time", 0);
-user_pref("dom.send_after_paint_to_content", true);
 user_pref("extensions.autoDisableScopes", 10);
 user_pref("extensions.blocklist.enabled", false);
 user_pref("extensions.blocklist.url", "http://127.0.0.1/extensions-dummy/blocklistURL");
 user_pref("extensions.checkCompatibility", false);
-user_pref("extensions.enabledScopes", 5);
 user_pref("extensions.getAddons.get.url", "http://127.0.0.1/extensions-dummy/repositoryGetURL");
 user_pref("extensions.getAddons.getWithPerformance.url", "http://127.0.0.1/extensions-dummy/repositoryGetWithPerformanceURL");
 user_pref("extensions.getAddons.search.browseURL", "http://127.0.0.1/extensions-dummy/repositoryBrowseURL");
 user_pref("extensions.hotfix.url", "http://127.0.0.1/extensions-dummy/hotfixURL");
-user_pref("extensions.legacy.enabled", true);
 user_pref("extensions.systemAddon.update.url", "http://127.0.0.1/dummy-system-addons.xml");
 user_pref("extensions.update.background.url", "http://127.0.0.1/extensions-dummy/updateBackgroundURL");
-user_pref("extensions.update.enabled", false);
 user_pref("extensions.update.notifyUser", false);
 user_pref("extensions.update.url", "http://127.0.0.1/extensions-dummy/updateURL");
 user_pref("extensions.webservice.discoverURL", "http://127.0.0.1/extensions-dummy/discoveryURL");
-user_pref("general.useragent.updates.enabled", false);
-user_pref("hangmonitor.timeout", 0);
 user_pref("identity.fxaccounts.auth.uri", "https://127.0.0.1/fxa-dummy/");
 user_pref("identity.fxaccounts.migrateToDevEdition", false);
-user_pref("lightweightThemes.selectedThemeID", "");
 user_pref("media.capturestream_hints.enabled", true);
-user_pref("media.gmp-manager.updateEnabled", false);
 user_pref("media.gmp-manager.url", "http://127.0.0.1/gmpmanager-dummy/update.xml");
-user_pref("media.libavcodec.allow-obsolete", true);
 user_pref("media.navigator.enabled", true);
 user_pref("media.navigator.permission.disabled", true);
 user_pref("media.peerconnection.enabled", true);
-user_pref("network.http.speculative-parallel-limit", 0);
 user_pref("network.proxy.http", "localhost");
 user_pref("network.proxy.http_port", 80);
 user_pref("network.proxy.type", 1);
-user_pref("places.database.lastMaintenance", 2147483647); // Set places maintenance far in the future (the maximum time possible in an int32_t)
 user_pref("plugin.state.flash", 0);
 user_pref("plugins.flashBlock.enabled", false);
 user_pref("privacy.reduceTimerPrecision", false); // Bug 1445243 - reduces precision of tests
 user_pref("privacy.trackingprotection.annotate_channels", false);
 user_pref("privacy.trackingprotection.enabled", false);
 user_pref("privacy.trackingprotection.introURL", "http://127.0.0.1/trackingprotection/tour");
 user_pref("privacy.trackingprotection.pbmode.enabled", false);
 user_pref("security.enable_java", false);
 user_pref("security.fileuri.strict_origin_policy", false);
-user_pref("security.turn_off_all_security_so_that_viruses_can_take_over_this_computer", true);
 user_pref("toolkit.telemetry.server", "https://127.0.0.1/telemetry-dummy/");
-user_pref("xpinstall.signatures.required", false);
--- a/testing/profiles/profiles.json
+++ b/testing/profiles/profiles.json
@@ -1,8 +1,8 @@
 {
-    "mochitest": ["common"],
-    "profileserver": ["common"],
-    "raptor": ["perf", "raptor"],
-    "talos": ["perf"],
-    "valgrind": ["common"],
-    "web-platform-tests": ["common"]
+    "mochitest": ["common", "unittest"],
+    "profileserver": ["common", "unittest"],
+    "raptor": ["common", "perf", "raptor"],
+    "talos": ["common", "perf"],
+    "valgrind": ["common", "unittest"],
+    "web-platform-tests": ["common", "unittest"]
 }
new file mode 100644
--- /dev/null
+++ b/testing/profiles/unittest/extensions/README.txt
@@ -0,0 +1,2 @@
+Dropping extensions here will get them installed in all test harnesses
+that make use of this profile.
new file mode 100644
--- /dev/null
+++ b/testing/profiles/unittest/user.js
@@ -0,0 +1,251 @@
+// Base preferences file for unittests.
+/* globals user_pref */
+user_pref("accessibility.typeaheadfind.autostart", false);
+// Make sure Shield doesn't hit the network.
+user_pref("app.normandy.api_url", "");
+// Make sure the notification permission migration test doesn't hit the network.
+user_pref("app.support.baseURL", "http://{server}/support-dummy/");
+user_pref("app.update.staging.enabled", false);
+user_pref("app.update.url.android", "");
+// Increase the APZ content response timeout in tests to 1 minute.
+// This is to accommodate the fact that test environments tends to be slower
+// than production environments (with the b2g emulator being the slowest of them
+// all), resulting in the production timeout value sometimes being exceeded
+// and causing false-positive test failures. See bug 1176798, bug 1177018,
+// bug 1210465.
+user_pref("apz.content_response_timeout", 60000);
+// Make sure we don't try to load snippets from the network.
+user_pref("browser.aboutHomeSnippets.updateUrl", "nonexistent://test");
+user_pref("browser.console.showInPanel", true);
+// Don't connect to Yahoo! for RSS feed tests.
+// en-US only uses .types.0.uri, but set all of them just to be sure.
+user_pref("browser.contentHandlers.types.0.uri", "http://test1.example.org/rss?url=%s");
+user_pref("browser.contentHandlers.types.1.uri", "http://test1.example.org/rss?url=%s");
+user_pref("browser.contentHandlers.types.2.uri", "http://test1.example.org/rss?url=%s");
+user_pref("browser.contentHandlers.types.3.uri", "http://test1.example.org/rss?url=%s");
+user_pref("browser.contentHandlers.types.4.uri", "http://test1.example.org/rss?url=%s");
+user_pref("browser.contentHandlers.types.5.uri", "http://test1.example.org/rss?url=%s");
+// Indicate that the download panel has been shown once so that whichever
+// download test runs first doesn't show the popup inconsistently.
+user_pref("browser.download.panel.shown", true);
+user_pref("browser.firstrun.show.localepicker", false);
+user_pref("browser.firstrun.show.uidiscovery", false);
+// Background thumbnails in particular cause grief, and disabling thumbnails
+// in general can't hurt - we re-enable them when tests need them.
+user_pref("browser.pagethumbnails.capturing_disabled", true);
+user_pref("browser.ping-centre.production.endpoint", "");
+// Make sure PingCentre doesn't hit the network.
+user_pref("browser.ping-centre.staging.endpoint", "");
+// Point the url-classifier to the local testing server for fast failures
+user_pref("browser.safebrowsing.downloads.remote.url", "http://{server}/safebrowsing-dummy/update");
+user_pref("browser.safebrowsing.provider.google.gethashURL", "http://{server}/safebrowsing-dummy/gethash");
+user_pref("browser.safebrowsing.provider.google.updateURL", "http://{server}/safebrowsing-dummy/update");
+user_pref("browser.safebrowsing.provider.google4.gethashURL", "http://{server}/safebrowsing4-dummy/gethash");
+user_pref("browser.safebrowsing.provider.google4.updateURL", "http://{server}/safebrowsing4-dummy/update");
+user_pref("browser.safebrowsing.provider.mozilla.gethashURL", "http://{server}/safebrowsing-dummy/gethash");
+user_pref("browser.safebrowsing.provider.mozilla.updateURL", "http://{server}/safebrowsing-dummy/update");
+user_pref("browser.search.suggest.timeout", 10000); // use a 10s suggestion timeout in tests
+user_pref("browser.snippets.firstrunHomepage.enabled", false);
+user_pref("browser.startup.page", 0); // use about:blank, not browser.startup.homepage
+// Don't show a delay when hiding the audio indicator during tests
+user_pref("browser.tabs.delayHidingAudioPlayingIconMS", 0);
+// Don't allow background tabs to be zombified, otherwise for tests that
+// open additional tabs, the test harness tab itself might get unloaded.
+user_pref("browser.tabs.disableBackgroundZombification", true);
+// Don't use auto-enabled e10s
+user_pref("browser.tabs.remote.autostart", false);
+// Make sure Translation won't hit the network.
+user_pref("browser.translation.bing.authURL", "http://{server}/browser/browser/components/translation/test/bing.sjs");
+user_pref("browser.translation.bing.translateArrayURL", "http://{server}/browser/browser/components/translation/test/bing.sjs");
+user_pref("browser.translation.engine", "bing");
+user_pref("browser.translation.yandex.translateURLOverride", "http://{server}/browser/browser/components/translation/test/yandex.sjs");
+user_pref("browser.ui.layout.tablet", 0); // force tablet UI off
+// Ensure UITour won't hit the network
+user_pref("browser.uitour.pinnedTabUrl", "http://{server}/uitour-dummy/pinnedTab");
+user_pref("browser.uitour.url", "http://{server}/uitour-dummy/tour");
+user_pref("browser.urlbar.speculativeConnect.enabled", false);
+// Turn off search suggestions in the location bar so as not to trigger network
+// connections.
+user_pref("browser.urlbar.suggest.searches", false);
+user_pref("browser.urlbar.usepreloadedtopurls.enabled", false);
+// Enable webapps testing mode, which bypasses native installation.
+user_pref("browser.webapps.testing", true);
+user_pref("captivedetect.canonicalURL", "http://{server}/captive-detect/success.txt");
+// Point Firefox Health Report at a local server. We don't care if it actually
+// works. It just can't hit the default production endpoint.
+user_pref("datareporting.healthreport.documentServerURI", "http://{server}/healthreport/");
+user_pref("datareporting.healthreport.uploadEnabled", false);
+user_pref("devtools.browsertoolbox.panel", "jsdebugger");
+user_pref("devtools.debugger.prompt-connection", true);
+user_pref("devtools.debugger.remote-port", 6023);
+user_pref("devtools.devedition.promo.enabled", false);
+user_pref("devtools.testing", true);
+user_pref("dom.experimental_forms", true); // on for testing
+user_pref("dom.forms.color", true); // on for testing
+user_pref("dom.forms.datetime", true); // on for testing
+user_pref("dom.forms.datetime.others", true); // on for testing
+// Enable Gamepad
+user_pref("dom.gamepad.enabled", true);
+user_pref("dom.gamepad.non_standard_events.enabled", true);
+user_pref("dom.ipc.reportProcessHangs", false); // process hang monitor
+// Don't forceably kill content processes after a timeout
+user_pref("dom.ipc.tabs.shutdownTimeoutSecs", 0);
+user_pref("dom.min_background_timeout_value", 1000);
+user_pref("dom.popup_maximum", -1);
+user_pref("dom.presentation.testing.simulate-receiver", false);
+// Prevent connection to the push server for tests.
+user_pref("dom.push.connection.enabled", false);
+user_pref("dom.successive_dialog_time_limit", 0);
+// In the default configuration, we bypass XBL scopes (a security feature) for
+// domains whitelisted for remote XUL, so that intranet apps and such continue
+// to work without major rewrites. However, we also use the whitelist mechanism
+// to run our XBL tests in automation, in which case we really want to be testing
+// the configuration that we ship to users without special whitelisting. So we
+// use an additional pref here to allow automation to use the "normal" behavior.
+user_pref("dom.use_xbl_scopes_for_remote_xul", true);
+user_pref("dom.w3c_touch_events.enabled", 1);
+user_pref("dom.webcomponents.customelements.enabled", true);
+user_pref("dom.webcomponents.shadowdom.enabled", false);
+user_pref("extensions.autoDisableScopes", 0);
+user_pref("extensions.blocklist.detailsURL", "http://{server}/extensions-dummy/blocklistDetailsURL");
+user_pref("extensions.blocklist.itemURL", "http://{server}/extensions-dummy/blocklistItemURL");
+user_pref("extensions.blocklist.url", "http://{server}/extensions-dummy/blocklistURL");
+// XPI extensions are required for test harnesses to load
+user_pref("extensions.defaultProviders.enabled", true);
+// Enable form autofill feature testing.
+user_pref("extensions.formautofill.available", "on");
+// Disable metadata caching for installed add-ons by default
+user_pref("extensions.getAddons.cache.enabled", false);
+// Make sure AddonRepository won't hit the network
+user_pref("extensions.getAddons.get.url", "http://{server}/extensions-dummy/repositoryGetURL");
+user_pref("extensions.getAddons.getWithPerformance.url", "http://{server}/extensions-dummy/repositoryGetWithPerformanceURL");
+user_pref("extensions.getAddons.search.browseURL", "http://{server}/extensions-dummy/repositoryBrowseURL");
+user_pref("extensions.hotfix.url", "http://{server}/extensions-dummy/hotfixURL");
+// Disable intalling any distribution add-ons
+user_pref("extensions.installDistroAddons", false);
+// Disable Screenshots by default for now
+user_pref("extensions.screenshots.disabled", true);
+user_pref("extensions.systemAddon.update.url", "http://{server}/dummy-system-addons.xml");
+user_pref("extensions.update.background.url", "http://{server}/extensions-dummy/updateBackgroundURL");
+// Point update checks to the local testing server for fast failures
+user_pref("extensions.update.url", "http://{server}/extensions-dummy/updateURL");
+// Make sure opening about:addons won't hit the network
+user_pref("extensions.webservice.discoverURL", "http://{server}/extensions-dummy/discoveryURL");
+user_pref("findbar.highlightAll", false);
+user_pref("findbar.modalHighlight", false);
+// Existing tests assume there is no font size inflation.
+user_pref("font.size.inflation.emPerLine", 0);
+user_pref("font.size.inflation.minTwips", 0);
+user_pref("general.useragent.updates.url", "https://example.com/0/%APP_ID%");
+// Always use network provider for geolocation tests
+// so we bypass the OSX dialog raised by the corelocation provider
+user_pref("geo.provider.testing", true);
+user_pref("geo.wifi.logging.enabled", true);
+user_pref("geo.wifi.scan", false);
+user_pref("geo.wifi.timeToWaitBeforeSending", 2000);
+user_pref("geo.wifi.uri", "http://{server}/tests/dom/tests/mochitest/geolocation/network_geolocation.sjs");
+user_pref("gfx.color_management.force_srgb", true);
+user_pref("gfx.logging.level", 1);
+// We don't want to hit the real Firefox Accounts server for tests.  We don't
+// actually need a functioning FxA server, so just set it to something that
+// resolves and accepts requests, even if they all fail.
+user_pref("identity.fxaccounts.auth.uri", "https://{server}/fxa-dummy/");
+// Ditto for all the FxA content root URI.
+user_pref("identity.fxaccounts.remote.root", "https://{server}/");
+user_pref("javascript.options.showInConsole", true);
+user_pref("layout.accessiblecaret.enabled_on_touch", false);
+// Enable CSS 'contain' for testing
+user_pref("layout.css.contain.enabled", true);
+// Enable CSS Grid 'subgrid' feature for testing
+user_pref("layout.css.grid-template-subgrid-value.enabled", true);
+// Enable CSS initial-letter for testing
+user_pref("layout.css.initial-letter.enabled", true);
+// Enable -webkit-{min|max}-device-pixel-ratio media queries for testing
+user_pref("layout.css.prefixes.device-pixel-ratio-webkit", true);
+// Enable webkit prefixed CSS features for testing
+user_pref("layout.css.prefixes.webkit", true);
+// Make sure CSS error reporting is enabled for tests
+user_pref("layout.css.report_errors", true);
+// Enable CSS shape-outside for testing
+user_pref("layout.css.shape-outside.enabled", true);
+// Disable spammy layout warnings because they pollute test logs
+user_pref("layout.spammy_warnings.enabled", false);
+// Disable all recommended Marionette preferences for Gecko tests.
+// The prefs recommended by Marionette are typically geared towards
+// consumer automation; not vendor testing.
+user_pref("marionette.prefs.recommended", false);
+user_pref("media.autoplay.enabled", true);
+user_pref("media.cache_size", 1000);
+user_pref("media.dormant-on-pause-timeout-ms", 0); // Enter dormant immediately without waiting for timeout.
+// Set the number of shmems the PChromiumCDM protocol pre-allocates to 0,
+// so that we test the case where we under-estimate how many shmems we need
+// to send decoded video frames from the CDM to Gecko.
+user_pref("media.eme.chromium-api.video-shmems", 0);
+user_pref("media.eme.enabled", true);
+// Make sure GMPInstallManager won't hit the network.
+user_pref("media.gmp-manager.url.override", "http://{server}/dummy-gmp-manager.xml");
+user_pref("media.hls.server.url", "http://{server}/tests/dom/media/test/hls");
+// Enable Media Source Extensions for testing
+user_pref("media.mediasource.mp4.enabled", true);
+user_pref("media.mediasource.webm.enabled", true);
+user_pref("media.memory_cache_max_size", 32);
+user_pref("media.memory_caches_combined_limit_kb", 256);
+user_pref("media.openUnsupportedTypeWithExternalApp", false);
+user_pref("media.preload.auto", 3); // auto = enough
+user_pref("media.preload.default", 2); // default = metadata
+user_pref("media.suspend-bkgnd-video.enabled", false);
+user_pref("media.test.dumpDebugInfo", true);
+user_pref("media.volume_scale", "0.01");
+// Enable speech synth test service, and disable built in platform services.
+user_pref("media.webspeech.synth.test", true);
+user_pref("network.http.prompt-temp-redirect", false);
+user_pref("network.manage-offline-status", false);
+// We know the SNTP request will fail, since localhost isn't listening on
+// port 135. The default number of retries (10) is excessive, but retrying
+// at least once will mean that codepath is still tested in automation.
+user_pref("network.sntp.maxRetryCount", 1);
+// Make sure SNTP requests don't hit the network
+user_pref("network.sntp.pools", "{server}");
+// For Firefox 52 only, ESR will support non-Flash plugins while release will
+// not, so we keep testing the non-Flash pathways
+user_pref("plugin.load_flash_only", false);
+user_pref("privacy.trackingprotection.introURL", "http://{server}/trackingprotection/tour");
+user_pref("security.default_personal_cert", "Select Automatically"); // Need to client auth test be w/o any dialogs
+// Existing tests don't wait for the notification button security delay
+user_pref("security.notification_enable_delay", 0);
+// Make sure SSL Error reports don't hit the network
+user_pref("security.ssl.errorReporting.url", "https://example.com/browser/browser/base/content/test/general/ssl_error_reports.sjs?succeed");
+user_pref("security.warn_viewing_mixed", false);
+// Ensure blocklist updates don't hit the network
+user_pref("services.settings.server", "http://{server}/dummy-kinto/v1");
+user_pref("shell.checkDefaultClient", false);
+// Disable password capture, so that mochitests that include forms aren't
+// influenced by the presence of the persistent doorhanger notification.
+user_pref("signon.rememberSignons", false);
+user_pref("startup.homepage_welcome_url", "about:blank");
+user_pref("startup.homepage_welcome_url.additional", "");
+user_pref("test.mousescroll", true);
+// Don't send 'bhr' ping during tests, otherwise the testing framework might
+// wait on the pingsender to finish and slow down tests.
+user_pref("toolkit.telemetry.bhrPing.enabled", false);
+// Don't send the 'first-shutdown' during tests, otherwise tests expecting
+// main and subsession pings will fail.
+user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
+// Don't send 'new-profile' ping on new profiles during tests, otherwise the testing framework
+// might wait on the pingsender to finish and slow down tests.
+user_pref("toolkit.telemetry.newProfilePing.enabled", false);
+// We want to collect telemetry, but we don't want to send in the results.
+user_pref("toolkit.telemetry.server", "https://{server}/telemetry-dummy/");
+// Don't send the 'shutdown' ping using the pingsender on the first session using
+// the 'pingsender' process. Valgrind marks the process as leaky (e.g. see bug 1364068
+// for the 'new-profile' ping) but does not provide enough information
+// to suppress the leak. Running locally does not reproduce the issue,
+// so disable this until we rewrite the pingsender in Rust (bug 1339035).
+user_pref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false);
+// A couple of preferences with default values to test that telemetry preference
+// watching is working.
+user_pref("toolkit.telemetry.test.pref1", true);
+user_pref("toolkit.telemetry.test.pref2", false);
+// Disable the caret blinking so we get stable snapshot
+user_pref("ui.caretBlinkTime", -1);
+user_pref("webextensions.tests", true);