diff options
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.js | 174 |
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); +}); |