summaryrefslogtreecommitdiffstats
path: root/browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js')
-rw-r--r--browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js174
1 files changed, 174 insertions, 0 deletions
diff --git a/browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js b/browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js
index b30a7bc0c1..8f7f7f4e05 100644
--- a/browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js
+++ b/browser/components/search/test/browser/telemetry/browser_search_telemetry_engagement_target.js
@@ -22,6 +22,7 @@ const TEST_PROVIDER_INFO = [
/^https:\/\/example.org\/browser\/browser\/components\/search\/test\/browser\/telemetry\/searchTelemetryAd_nonAdsLink_redirect.html/,
],
extraAdServersRegexps: [/^https:\/\/example\.com\/ad/],
+ ignoreLinkRegexps: [/^https:\/\/example\.org\/consent\?data=/],
components: [
{
type: SearchSERPTelemetryUtils.COMPONENTS.AD_CAROUSEL,
@@ -90,6 +91,44 @@ const TEST_PROVIDER_INFO = [
type: SearchSERPTelemetryUtils.COMPONENTS.AD_LINK,
default: true,
},
+ {
+ type: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ topDown: true,
+ included: {
+ parent: {
+ selector: "#banner",
+ },
+ children: [
+ {
+ selector: "#cookie_accept",
+ eventListeners: [
+ {
+ eventType: "click",
+ action: SearchSERPTelemetryUtils.ACTIONS.CLICKED_ACCEPT,
+ },
+ ],
+ },
+ {
+ selector: "#cookie_reject",
+ eventListeners: [
+ {
+ eventType: "click",
+ action: SearchSERPTelemetryUtils.ACTIONS.CLICKED_REJECT,
+ },
+ ],
+ },
+ {
+ selector: "#cookie_more_options",
+ eventListeners: [
+ {
+ eventType: "click",
+ action: SearchSERPTelemetryUtils.ACTIONS.CLICKED_MORE_OPTIONS,
+ },
+ ],
+ },
+ ],
+ },
+ },
],
},
];
@@ -455,3 +494,138 @@ add_task(async function test_click_link_with_special_characters_in_path() {
SearchSERPTelemetry.overrideSearchTelemetryForTests(TEST_PROVIDER_INFO);
await waitForIdle();
});
+
+// Test that clicking the accept button on the cookie banner is correctly
+// tracked as an engagement event.
+add_task(async function test_click_cookie_banner_accept() {
+ resetTelemetry();
+ let url = getSERPUrl("searchTelemetryAd_components_cookie_banner.html");
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
+ await waitForPageWithAdImpressions();
+
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ "#cookie_accept",
+ {},
+ tab.linkedBrowser
+ );
+
+ assertSERPTelemetry([
+ {
+ impression: {
+ provider: "example",
+ tagged: "true",
+ partner_code: "ff",
+ source: "unknown",
+ is_shopping_page: "false",
+ is_private: "false",
+ shopping_tab_displayed: "false",
+ },
+ engagements: [
+ {
+ action: SearchSERPTelemetryUtils.ACTIONS.CLICKED_ACCEPT,
+ target: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ },
+ ],
+ adImpressions: [
+ {
+ component: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ ads_loaded: "1",
+ ads_visible: "1",
+ ads_hidden: "0",
+ },
+ ],
+ },
+ ]);
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+// Test that clicking the reject button on the cookie banner is accurately
+// recorded as an engagement event.
+add_task(async function test_click_cookie_banner_reject() {
+ resetTelemetry();
+ let url = getSERPUrl("searchTelemetryAd_components_cookie_banner.html");
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
+ await waitForPageWithAdImpressions();
+
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ "#cookie_reject",
+ {},
+ tab.linkedBrowser
+ );
+
+ assertSERPTelemetry([
+ {
+ impression: {
+ provider: "example",
+ tagged: "true",
+ partner_code: "ff",
+ source: "unknown",
+ is_shopping_page: "false",
+ is_private: "false",
+ shopping_tab_displayed: "false",
+ },
+ engagements: [
+ {
+ action: SearchSERPTelemetryUtils.ACTIONS.CLICKED_REJECT,
+ target: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ },
+ ],
+ adImpressions: [
+ {
+ component: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ ads_loaded: "1",
+ ads_visible: "1",
+ ads_hidden: "0",
+ },
+ ],
+ },
+ ]);
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+// Test that clicking the more options button on the cookie banner is accurately
+// recorded as an engagement event.
+add_task(async function test_click_cookie_banner_more_options() {
+ resetTelemetry();
+ let url = getSERPUrl("searchTelemetryAd_components_cookie_banner.html");
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
+ await waitForPageWithAdImpressions();
+
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ "#cookie_more_options",
+ {},
+ tab.linkedBrowser
+ );
+
+ assertSERPTelemetry([
+ {
+ impression: {
+ provider: "example",
+ tagged: "true",
+ partner_code: "ff",
+ source: "unknown",
+ is_shopping_page: "false",
+ is_private: "false",
+ shopping_tab_displayed: "false",
+ },
+ engagements: [
+ {
+ action: SearchSERPTelemetryUtils.ACTIONS.CLICKED_MORE_OPTIONS,
+ target: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ },
+ ],
+ adImpressions: [
+ {
+ component: SearchSERPTelemetryUtils.COMPONENTS.COOKIE_BANNER,
+ ads_loaded: "1",
+ ads_visible: "1",
+ ads_hidden: "0",
+ },
+ ],
+ },
+ ]);
+
+ BrowserTestUtils.removeTab(tab);
+});