diff --git a/head.html b/head.html index 9f71a839c..3359cb012 100644 --- a/head.html +++ b/head.html @@ -2,6 +2,5 @@ - diff --git a/solutions/scripts/scripts.js b/solutions/scripts/scripts.js index df4292395..fef410943 100644 --- a/solutions/scripts/scripts.js +++ b/solutions/scripts/scripts.js @@ -20,7 +20,6 @@ import { } from './utils.js'; import { loadAnalytics } from './analytics.js'; -import runTargetExperiment from './target.js'; const LCP_BLOCKS = ['hero']; // add your LCP blocks to the list const TRACKED_PRODUCTS = []; @@ -516,7 +515,11 @@ async function loadEager(doc) { await window.hlx.plugins.run('loadEager'); - const targetExperimentDetails = await runTargetExperiment(TARGET_TENANT); + let targetExperimentDetails = null; + if (getMetadata('target-experiment') !== '') { + const { runTargetExperiment } = await import('./target.js'); + targetExperimentDetails = await runTargetExperiment(TARGET_TENANT); + } pushPageLoadToDataLayer(targetExperimentDetails); diff --git a/solutions/scripts/target.js b/solutions/scripts/target.js index bd6858e4f..f85d55906 100644 --- a/solutions/scripts/target.js +++ b/solutions/scripts/target.js @@ -7,13 +7,10 @@ const ADOBE_TARGET_SESSION_ID_PARAM = 'adobeTargetSessionId'; * @param url * @returns {*|string} */ -function toRelativeUrl(url) { - try { - const parsedUrl = new URL(url); - return parsedUrl.pathname + parsedUrl.search + parsedUrl.hash; - } catch (e) { - return url; - } +function getPlainPageUrl(url) { + const { pathname, search, hash } = new URL(url, window.location.href); + const plainPagePathname = pathname.endsWith('/') ? `${pathname}index.plain.html` : `${pathname}.plain.html`; + return `${plainPagePathname}${search}${hash}`; } /** @@ -95,21 +92,27 @@ async function fetchChallengerPageUrl(tenant, targetLocation) { * @param url The challenger page url. * @returns {Promise} */ -async function switchToChallengerPage(url) { - const relativePath = toRelativeUrl(url); - const plainPath = relativePath.endsWith('/') ? `${relativePath}index.plain.html` : `${relativePath}.plain.html`; +async function navigateToChallengerPage(url) { + const plainPath = getPlainPageUrl(url); + + // eslint-disable-next-line no-console + console.debug(`Navigating to challenger page: ${plainPath}`); + const resp = await fetch(plainPath); if (!resp.ok) { throw new Error(`Failed to fetch challenger page: ${resp.status}`); } + const mainElement = document.querySelector('main'); if (!mainElement) { throw new Error('Main element not found'); } + mainElement.innerHTML = await resp.text(); } -export default async function runTargetExperiment(clientId) { +// eslint-disable-next-line import/prefer-default-export +export async function runTargetExperiment(clientId) { try { const experimentId = getMetadata('target-experiment'); const targetLocation = getMetadata('target-experiment-location'); @@ -126,7 +129,7 @@ export default async function runTargetExperiment(clientId) { // eslint-disable-next-line no-console console.debug(`Challenger page url: ${pageUrl}`); - await switchToChallengerPage(pageUrl); + await navigateToChallengerPage(pageUrl); sampleRUM('target-experiment', { source: `target:${experimentId}`,