summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_abandonment_type.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_abandonment_type.js')
-rw-r--r--browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_abandonment_type.js109
1 files changed, 109 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_abandonment_type.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_abandonment_type.js
new file mode 100644
index 0000000000..99145d7cc3
--- /dev/null
+++ b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_abandonment_type.js
@@ -0,0 +1,109 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test for the following data of abandonment telemetry.
+// - reason
+
+function checkUrlbarFocus(win, focusState) {
+ let urlbar = win.gURLBar;
+ is(
+ focusState ? win.document.activeElement : !win.document.activeElement,
+ focusState ? urlbar.inputField : !urlbar.inputField,
+ `URL Bar should ${focusState ? "" : "not "}be focused`
+ );
+}
+
+// Tests that a tab switch from a focused URL bar to another tab with a focused
+// URL bar records the correct abandonment telemetry with abandonment type
+// "tab_swtich".
+add_task(async function tabSwitchFocusedToFocused() {
+ await doTest(async browser => {
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "test search",
+ });
+ checkUrlbarFocus(window, true);
+
+ let promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(gBrowser.tabContainer.newTabButton, {});
+ let openEvent = await promiseTabOpened;
+ let tab2 = openEvent.target;
+ checkUrlbarFocus(window, true);
+
+ await assertAbandonmentTelemetry([{ abandonment_type: "tab_switch" }]);
+
+ await BrowserTestUtils.removeTab(tab2);
+ });
+});
+
+// Verifies that switching from a tab with a focused URL bar to a tab where the
+// URL bar loses focus logs abandonment telemetry with abandonment type
+// "blur".
+add_task(async function tabSwitchFocusedToUnfocused() {
+ await doTest(async browser => {
+ await UrlbarTestUtils.promiseAutocompleteResultPopup({
+ window,
+ value: "test search",
+ });
+ checkUrlbarFocus(window, true);
+
+ let tab2 = await BrowserTestUtils.openNewForegroundTab(window.gBrowser);
+ checkUrlbarFocus(window, false);
+
+ await assertAbandonmentTelemetry([{ abandonment_type: "blur" }]);
+
+ await BrowserTestUtils.removeTab(tab2);
+ });
+});
+
+// Ensures that switching from a tab with an unfocused URL bar to a tab where
+// the URL bar gains focus does not record any abandonment telemetry, reflecting
+// no change in focus state relevant to abandonment.
+add_task(async function tabSwitchUnFocusedToFocused() {
+ await doTest(async browser => {
+ checkUrlbarFocus(window, false);
+
+ let promiseTabOpened = BrowserTestUtils.waitForEvent(
+ gBrowser.tabContainer,
+ "TabOpen"
+ );
+ EventUtils.synthesizeMouseAtCenter(gBrowser.tabContainer.newTabButton, {});
+ let openEvent = await promiseTabOpened;
+ let tab2 = openEvent.target;
+ checkUrlbarFocus(window, true);
+
+ const telemetries = Glean.urlbar.abandonment.testGetValue() ?? [];
+ Assert.equal(
+ telemetries.length,
+ 0,
+ "Telemetry event length matches expected event length."
+ );
+
+ await BrowserTestUtils.removeTab(tab2);
+ });
+});
+
+// Checks that switching between two tabs, both with unfocused URL bars, does
+// not trigger any abandonment telmetry.
+add_task(async function tabSwitchUnFocusedToUnFocused() {
+ await doTest(async browser => {
+ checkUrlbarFocus(window, false);
+
+ let tab2 = await BrowserTestUtils.openNewForegroundTab(window.gBrowser);
+ checkUrlbarFocus(window, false);
+
+ const telemetries = Glean.urlbar.abandonment.testGetValue() ?? [];
+ Assert.equal(
+ telemetries.length,
+ 0,
+ "Telemetry event length matches expected event length."
+ );
+
+ await BrowserTestUtils.removeTab(tab2);
+ });
+});