summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_impression_timing.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_impression_timing.js')
-rw-r--r--browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_impression_timing.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_impression_timing.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_impression_timing.js
new file mode 100644
index 0000000000..31f64996f3
--- /dev/null
+++ b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_impression_timing.js
@@ -0,0 +1,91 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test for the taking timing for the impression telemetry.
+
+add_setup(async function () {
+ await setup();
+});
+
+add_task(async function cancelImpressionTimerByEngagementEvent() {
+ const additionalInterval = 1000;
+ const originalInterval = UrlbarPrefs.get(
+ "searchEngagementTelemetry.pauseImpressionIntervalMs"
+ );
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ [
+ "browser.urlbar.searchEngagementTelemetry.pauseImpressionIntervalMs",
+ originalInterval + additionalInterval,
+ ],
+ ],
+ });
+
+ for (const trigger of [doEnter, doBlur]) {
+ await doTest(async browser => {
+ await openPopup("https://example.com");
+ await trigger();
+
+ // Check whether the impression timer was canceled.
+ await new Promise(r =>
+ // eslint-disable-next-line mozilla/no-arbitrary-setTimeout
+ setTimeout(r, originalInterval + additionalInterval)
+ );
+ assertImpressionTelemetry([]);
+ });
+ }
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function cancelInpressionTimerByType() {
+ const originalInterval = UrlbarPrefs.get(
+ "searchEngagementTelemetry.pauseImpressionIntervalMs"
+ );
+
+ await doTest(async browser => {
+ await openPopup("x");
+ await new Promise(r =>
+ // eslint-disable-next-line mozilla/no-arbitrary-setTimeout
+ setTimeout(r, originalInterval / 10)
+ );
+ assertImpressionTelemetry([]);
+
+ EventUtils.synthesizeKey(" ");
+ EventUtils.synthesizeKey("z");
+ await UrlbarTestUtils.promiseSearchComplete(window);
+ assertImpressionTelemetry([]);
+ await waitForPauseImpression();
+
+ assertImpressionTelemetry([{ n_chars: 3 }]);
+ });
+});
+
+add_task(async function oneImpressionInOneSession() {
+ await doTest(async browser => {
+ await openPopup("x");
+ await waitForPauseImpression();
+
+ // Sanity check.
+ assertImpressionTelemetry([{ n_chars: 1 }]);
+
+ // Add a keyword to start new query.
+ EventUtils.synthesizeKey(" ");
+ EventUtils.synthesizeKey("z");
+ await UrlbarTestUtils.promiseSearchComplete(window);
+ await waitForPauseImpression();
+
+ // No more taking impression telemetry.
+ assertImpressionTelemetry([{ n_chars: 1 }]);
+
+ // Finish the current session.
+ await doEnter();
+
+ // Should take pause impression since new session started.
+ await openPopup("x z y");
+ await waitForPauseImpression();
+ assertImpressionTelemetry([{ n_chars: 1 }, { n_chars: 5 }]);
+ });
+});