const { Region } = ChromeUtils.importESModule( "resource://gre/modules/Region.sys.mjs" ); const { ASRouter } = ChromeUtils.import( "resource://activity-stream/lib/ASRouter.jsm" ); const initialHomeRegion = Region._home; const intialCurrentRegion = Region._current; const initialLocale = Services.locale.appLocaleAsBCP47; // Helper to run tests for specific regions async function setupRegions(home, current) { Region._setHomeRegion(home || ""); Region._setCurrentRegion(current || ""); } // Helper to run tests for specific locales function setLocale(locale) { Services.locale.availableLocales = [locale]; Services.locale.requestedLocales = [locale]; } add_task(async function test_focus_promo_in_allowed_region() { ASRouter.resetMessageState(); const allowedRegion = "ES"; // Spain setupRegions(allowedRegion, allowedRegion); const { win, tab } = await openTabAndWaitForRender(); await SpecialPowers.spawn(tab, [], async function () { const promoContainer = content.document.querySelector(".promo"); // container which is present if promo is enabled and should show ok(promoContainer, "Focus promo is shown for allowed region"); }); await BrowserTestUtils.closeWindow(win); setupRegions(initialHomeRegion, intialCurrentRegion); // revert changes to regions }); add_task(async function test_focus_promo_in_disallowed_region() { ASRouter.resetMessageState(); const disallowedRegion = "CN"; // China setupRegions(disallowedRegion); const { win, tab } = await openTabAndWaitForRender(); await SpecialPowers.spawn(tab, [], async function () { const promoContainer = content.document.querySelector(".promo"); // container which is removed if promo is disabled and/or should not show ok(!promoContainer, "Focus promo is not shown for disallowed region"); }); await BrowserTestUtils.closeWindow(win); setupRegions(initialHomeRegion, intialCurrentRegion); // revert changes to regions }); add_task( async function test_klar_promo_in_certain_regions_with_English_locale() { const testLocale = "en-US"; // US English setLocale(testLocale); const testRegion = async region => { setupRegions(region); ASRouter.resetMessageState(); const { win, tab } = await openTabAndWaitForRender(); await SpecialPowers.spawn(tab, [], async function () { const buttonText = content.document.querySelector( "#private-browsing-promo-link" ).textContent; Assert.equal( buttonText, "Download Firefox Klar", "The promo button text reads 'Download Firefox Klar'" ); }); await BrowserTestUtils.closeWindow(win); }; await testRegion("AT"); // Austria await testRegion("DE"); // Germany await testRegion("CH"); // Switzerland setupRegions(initialHomeRegion, intialCurrentRegion); // revert changes to regions setLocale(initialLocale); // revert changes to locale } );