Bug 1394777 - Add test for Activity Stream about:home search.
MozReview-Commit-ID: HYjjeGgqshl
--- a/browser/modules/test/browser/browser_UsageTelemetry_content_aboutHome.js
+++ b/browser/modules/test/browser/browser_UsageTelemetry_content_aboutHome.js
@@ -39,16 +39,21 @@ add_task(async function setup() {
Services.search.removeEngine(engineDefault);
Services.search.removeEngine(engineOneOff);
await PlacesTestUtils.clearHistory();
Services.telemetry.setEventRecordingEnabled("navigation", false);
});
});
add_task(async function test_abouthome_simpleQuery() {
+ // Make sure Activity Stream about:home is disabled.
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.newtabpage.activity-stream.aboutHome.enabled", false]
+ ]});
+
// Let's reset the counts.
Services.telemetry.clearScalars();
Services.telemetry.clearEvents();
let search_hist = getAndClearKeyedHistogram("SEARCH_COUNTS");
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
info("Setup waiting for AboutHomeLoadSnippetsCompleted.");
@@ -81,8 +86,57 @@ add_task(async function test_abouthome_s
// Also check events.
let events = Services.telemetry.snapshotEvents(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, false);
events = (events.parent || []).filter(e => e[1] == "navigation" && e[2] == "search");
checkEvents(events, [["navigation", "search", "about_home", "enter", {engine: "other-MozSearch"}]]);
await BrowserTestUtils.removeTab(tab);
});
+
+add_task(async function test_abouthome_activitystream_simpleQuery() {
+ // Make sure Activity Stream about:home is enabled.
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.newtabpage.activity-stream.aboutHome.enabled", true]
+ ]});
+
+ // Let's reset the counts.
+ Services.telemetry.clearScalars();
+ Services.telemetry.clearEvents();
+ let search_hist = getAndClearKeyedHistogram("SEARCH_COUNTS");
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+
+ info("Setup waiting for search input to initialise.");
+ let promiseAboutHomeSearchLoaded = new Promise(resolve => {
+ tab.linkedBrowser.addEventListener("ContentSearchClient", function loadListener(event) {
+ tab.linkedBrowser.removeEventListener("ContentSearchClient", loadListener, true);
+ resolve();
+ }, true, true);
+ });
+
+ info("Load about:home.");
+ tab.linkedBrowser.loadURI("about:home");
+ info("Wait for ActivityStream search input.");
+ await promiseAboutHomeSearchLoaded;
+
+ info("Trigger a simple serch, just test + enter.");
+ let p = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+ await typeInSearchField(tab.linkedBrowser, "test query", "newtab-search-text");
+ await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, tab.linkedBrowser);
+ await p;
+
+ // Check if the scalars contain the expected values.
+ const scalars = getParentProcessScalars(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, true, false);
+ checkKeyedScalar(scalars, SCALAR_ABOUT_HOME, "search_enter", 1);
+ Assert.equal(Object.keys(scalars[SCALAR_ABOUT_HOME]).length, 1,
+ "This search must only increment one entry in the scalar.");
+
+ // Make sure SEARCH_COUNTS contains identical values.
+ checkKeyedHistogram(search_hist, "other-MozSearch.abouthome", 1);
+
+ // Also check events.
+ let events = Services.telemetry.snapshotEvents(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN, false);
+ events = (events.parent || []).filter(e => e[1] == "navigation" && e[2] == "search");
+ checkEvents(events, [["navigation", "search", "about_home", "enter", {engine: "other-MozSearch"}]]);
+
+ await BrowserTestUtils.removeTab(tab);
+});