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}`,