Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
*/
ignoreAllUncaughtExceptions();
add_task(async function () {
info(
"Check that performing a search fires a search event and records to Telemetry."
);
await SpecialPowers.pushPrefEnv({
set: [
[
"browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar",
false,
],
],
});
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:home" },
async function (browser) {
let engine;
await promiseContentSearchChange(browser, async () => {
engine = await SearchTestUtils.promiseNewSearchEngine({
url: getRootDirectory(gTestPath) + "searchSuggestionEngine.xml",
setAsDefault: true,
});
return engine.name;
});
await SpecialPowers.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 = `other-${engine.name}.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 = (await Services.search.getDefault()).getSubmission(
searchStr,
null,
"homepage"
).uri.spec;
let promise = BrowserTestUtils.waitForDocLoadAndStopIt(
expectedURL,
browser
);
// Perform a search to increase the SEARCH_COUNT histogram.
await SpecialPowers.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"
);
}
);
await SpecialPowers.popPrefEnv();
});