fune/browser/base/content/test/about/browser_aboutHome_search_telemetry.js
Ed Lee e3156bf606 Bug 1399648 - Get browser_aboutHome.js passing on both about:homes with activity stream or not. r=ursula
MozReview-Commit-ID: GtzmDbmSUjH

--HG--
extra : rebase_source : b62d939e325a1aa4d5d34e2501be39b2f0959357
2017-09-13 13:10:23 -07:00

66 lines
2.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
ignoreAllUncaughtExceptions();
add_task(async function() {
info("Check that performing a search fires a search event and records to Telemetry.");
await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, async function(browser) {
let currEngine = Services.search.currentEngine;
let engine = await promiseNewEngine("searchSuggestionEngine.xml");
// Make this actually work in healthreport by giving it an ID:
Object.defineProperty(engine.wrappedJSObject, "identifier",
{ value: "org.mozilla.testsearchsuggestions" });
let p = promiseContentSearchChange(browser, engine.name);
Services.search.currentEngine = engine;
await p;
await ContentTask.spawn(browser, { expectedName: engine.name }, async function(args) {
let engineName = content.wrappedJSObject.gContentSearchController.defaultEngine.name;
is(engineName, args.expectedName, "Engine name in DOM should match engine we just added");
});
let numSearchesBefore = 0;
// Get the current number of recorded searches.
let histogramKey = engine.identifier + ".abouthome";
try {
let hs = Services.telemetry.getKeyedHistogramById("SEARCH_COUNTS").snapshot();
if (histogramKey in hs) {
numSearchesBefore = hs[histogramKey].sum;
}
} catch (ex) {
// No searches performed yet, not a problem, |numSearchesBefore| is 0.
}
let searchStr = "a search";
let expectedURL = Services.search.currentEngine
.getSubmission(searchStr, null, "homepage").uri.spec;
let promise = waitForDocLoadAndStopIt(expectedURL, browser);
// Perform a search to increase the SEARCH_COUNT histogram.
await ContentTask.spawn(browser, { searchStr }, async function(args) {
let doc = content.document;
info("Perform a search.");
let el = doc.querySelector(["#searchText", "#newtab-search-text"]);
el.value = args.searchStr;
doc.getElementById("searchSubmit").click();
});
await promise;
// Make sure the SEARCH_COUNTS histogram has the right key and count.
let hs = Services.telemetry.getKeyedHistogramById("SEARCH_COUNTS").snapshot();
Assert.ok(histogramKey in hs, "histogram with key should be recorded");
Assert.equal(hs[histogramKey].sum, numSearchesBefore + 1,
"histogram sum should be incremented");
Services.search.currentEngine = currEngine;
try {
Services.search.removeEngine(engine);
} catch (ex) {}
});
});