Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
/**
* These tests load SERPs and click on links.
*/
"use strict";
const TEST_PROVIDER_INFO = [
{
telemetryId: "example",
searchPageRegexp:
/^https:\/\/example.org\/browser\/browser\/components\/search\/test\/browser\/telemetry\/searchTelemetry/,
queryParamNames: ["s"],
codeParamName: "abc",
taggedCodes: ["ff"],
adServerAttributes: ["mozAttr"],
nonAdsLinkRegexps: [
/^https:\/\/example.org\/browser\/browser\/components\/search\/test\/browser\/telemetry\/searchTelemetry_redirect_with_js/,
],
nonAdsLinkQueryParamNames: ["url"],
extraAdServersRegexps: [/^https:\/\/example\.com\/ad/],
shoppingTab: {
regexp: "&page=shopping",
selector: "nav a",
inspectRegexpInSERP: true,
},
components: [
{
type: SearchSERPTelemetryUtils.COMPONENTS.AD_LINK,
default: true,
},
],
},
];
add_setup(async function () {
SearchSERPTelemetry.overrideSearchTelemetryForTests(TEST_PROVIDER_INFO);
await waitForIdle();
registerCleanupFunction(async () => {
SearchSERPTelemetry.overrideSearchTelemetryForTests();
resetTelemetry();
});
});
add_task(async function test_click_absolute_url_in_query_param() {
resetTelemetry();
let url = getSERPUrl(
"searchTelemetryAd_searchbox_with_redirecting_links.html"
);
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
await waitForPageWithAdImpressions();
let browserLoadedPromise = BrowserTestUtils.browserLoaded(
tab.linkedBrowser,
true
);
await BrowserTestUtils.synthesizeMouseAtCenter(
"#shopping-redirect-absolute-link",
{},
tab.linkedBrowser
);
await browserLoadedPromise;
await waitForPageWithAdImpressions();
assertSERPTelemetry([
{
impression: {
provider: "example",
tagged: "true",
partner_code: "ff",
source: "unknown",
is_shopping_page: "false",
is_private: "false",
shopping_tab_displayed: "true",
is_signed_in: "false",
},
engagements: [
{
action: SearchSERPTelemetryUtils.ACTIONS.CLICKED,
target: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
},
],
adImpressions: [
{
component: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
ads_loaded: "1",
ads_visible: "1",
ads_hidden: "0",
},
],
},
{
impression: {
provider: "example",
tagged: "true",
partner_code: "ff",
source: "unknown",
is_shopping_page: "true",
is_private: "false",
shopping_tab_displayed: "true",
is_signed_in: "false",
},
adImpressions: [
{
component: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
ads_loaded: "1",
ads_visible: "1",
ads_hidden: "0",
},
],
},
]);
BrowserTestUtils.removeTab(tab);
// Reset state for other tests.
SearchSERPTelemetry.overrideSearchTelemetryForTests(TEST_PROVIDER_INFO);
await waitForIdle();
});
add_task(async function test_click_relative_href_in_query_param() {
resetTelemetry();
let url = getSERPUrl(
"searchTelemetryAd_searchbox_with_redirecting_links.html"
);
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
await waitForPageWithAdImpressions();
let browserLoadedPromise = BrowserTestUtils.browserLoaded(
tab.linkedBrowser,
true
);
await BrowserTestUtils.synthesizeMouseAtCenter(
"#shopping-redirect-relative-link",
{},
tab.linkedBrowser
);
await browserLoadedPromise;
await waitForPageWithAdImpressions();
assertSERPTelemetry([
{
impression: {
provider: "example",
tagged: "true",
partner_code: "ff",
source: "unknown",
is_shopping_page: "false",
is_private: "false",
shopping_tab_displayed: "true",
is_signed_in: "false",
},
engagements: [
{
action: SearchSERPTelemetryUtils.ACTIONS.CLICKED,
target: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
},
],
adImpressions: [
{
component: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
ads_loaded: "1",
ads_visible: "1",
ads_hidden: "0",
},
],
},
{
impression: {
provider: "example",
tagged: "true",
partner_code: "ff",
source: "unknown",
is_shopping_page: "true",
is_private: "false",
shopping_tab_displayed: "true",
is_signed_in: "false",
},
adImpressions: [
{
component: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
ads_loaded: "1",
ads_visible: "1",
ads_hidden: "0",
},
],
},
]);
BrowserTestUtils.removeTab(tab);
// Reset state for other tests.
SearchSERPTelemetry.overrideSearchTelemetryForTests(TEST_PROVIDER_INFO);
await waitForIdle();
});
add_task(async function test_click_irrelevant_href_in_query_param() {
resetTelemetry();
let url = getSERPUrl(
"searchTelemetryAd_searchbox_with_redirecting_links.html"
);
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
await waitForPageWithAdImpressions();
let browserLoadedPromise = BrowserTestUtils.browserLoaded(
tab.linkedBrowser,
true,
);
await BrowserTestUtils.synthesizeMouseAtCenter(
"#organic-redirect",
{},
tab.linkedBrowser
);
await browserLoadedPromise;
assertSERPTelemetry([
{
impression: {
provider: "example",
tagged: "true",
partner_code: "ff",
source: "unknown",
is_shopping_page: "false",
is_private: "false",
shopping_tab_displayed: "true",
is_signed_in: "false",
},
engagements: [
{
action: SearchSERPTelemetryUtils.ACTIONS.CLICKED,
target: SearchSERPTelemetryUtils.COMPONENTS.NON_ADS_LINK,
},
],
adImpressions: [
{
component: SearchSERPTelemetryUtils.COMPONENTS.SHOPPING_TAB,
ads_loaded: "1",
ads_visible: "1",
ads_hidden: "0",
},
],
},
]);
BrowserTestUtils.removeTab(tab);
// Reset state for other tests.
SearchSERPTelemetry.overrideSearchTelemetryForTests(TEST_PROVIDER_INFO);
await waitForIdle();
});