diff --git a/src/app/legacy/components/ScrollablePromo/index.jsx b/src/app/legacy/components/ScrollablePromo/index.jsx
index 31bf3d4a399..ceae5f1408d 100644
--- a/src/app/legacy/components/ScrollablePromo/index.jsx
+++ b/src/app/legacy/components/ScrollablePromo/index.jsx
@@ -20,6 +20,7 @@ import { GridItemMediumNoMargin } from '#components/Grid';
import useViewTracker from '#hooks/useViewTracker';
import useClickTrackerHandler from '#hooks/useClickTrackerHandler';
import idSanitiser from '#lib/utilities/idSanitiser';
+import { OptimizelyContext } from '@optimizely/react-sdk';
import { ServiceContext } from '../../../contexts/ServiceContext';
import Promo from './Promo';
import PromoList from './PromoList';
@@ -59,10 +60,12 @@ const LabelComponent = styled.strong`
const ScrollablePromo = ({ blocks, blockGroupIndex = null }) => {
const { script, service, dir, translations } = useContext(ServiceContext);
+ const { optimizely } = useContext(OptimizelyContext);
const eventTrackingData = {
componentName: `edoj${blockGroupIndex}`,
format: 'CHD=edoj',
+ optimizely,
};
const viewRef = useViewTracker(eventTrackingData);
diff --git a/src/app/legacy/components/ScrollablePromo/index.test.jsx b/src/app/legacy/components/ScrollablePromo/index.test.jsx
index e8cb12d1046..22ce2c6c025 100644
--- a/src/app/legacy/components/ScrollablePromo/index.test.jsx
+++ b/src/app/legacy/components/ScrollablePromo/index.test.jsx
@@ -78,6 +78,7 @@ describe('ScrollablePromo', () => {
expect(viewTrackerSpy).toHaveBeenCalledWith({
componentName: 'edoj1',
format: 'CHD=edoj',
+ optimizely: null,
});
});
@@ -94,10 +95,12 @@ describe('ScrollablePromo', () => {
expect(viewTrackerSpy).toHaveBeenCalledWith({
componentName: 'edoj1',
format: 'CHD=edoj',
+ optimizely: null,
});
expect(viewTrackerSpy).toHaveBeenCalledWith({
componentName: 'edoj2',
format: 'CHD=edoj',
+ optimizely: null,
});
});
@@ -110,6 +113,7 @@ describe('ScrollablePromo', () => {
expect(clickTrackerSpy).toHaveBeenCalledWith({
componentName: 'edoj1',
format: 'CHD=edoj',
+ optimizely: null,
});
});
@@ -126,10 +130,12 @@ describe('ScrollablePromo', () => {
expect(clickTrackerSpy).toHaveBeenCalledWith({
componentName: 'edoj1',
format: 'CHD=edoj',
+ optimizely: null,
});
expect(clickTrackerSpy).toHaveBeenCalledWith({
componentName: 'edoj2',
format: 'CHD=edoj',
+ optimizely: null,
});
});
});
diff --git a/src/app/lib/config/optimizely/index.js b/src/app/lib/config/optimizely/index.js
index 01a1be5fbb2..bbc78961b22 100644
--- a/src/app/lib/config/optimizely/index.js
+++ b/src/app/lib/config/optimizely/index.js
@@ -1,5 +1,5 @@
export default {
- flagId: 'ws_test_flag',
+ flagId: 'scrollable_promo',
viewClickAttributeId: 'wsoj',
variationMappings: {
on: 'on',
diff --git a/src/app/pages/ArticlePage/ArticlePage.tsx b/src/app/pages/ArticlePage/ArticlePage.tsx
index d5232c573dc..0c138eee97d 100644
--- a/src/app/pages/ArticlePage/ArticlePage.tsx
+++ b/src/app/pages/ArticlePage/ArticlePage.tsx
@@ -41,6 +41,10 @@ import CpsRecommendations from '#containers/CpsRecommendations';
import InlinePodcastPromo from '#containers/PodcastPromo/Inline';
import { Article, OptimoBylineBlock } from '#app/models/types/optimo';
+import useOptimizelyVariation from '#app/hooks/useOptimizelyVariation';
+import OptimizelyArticleCompleteTracking from '#app/legacy/containers/OptimizelyArticleCompleteTracking';
+import OptimizelyPageViewTracking from '#app/legacy/containers/OptimizelyPageViewTracking';
+import useOptimizelyScrollDepth from '#app/hooks/useOptimizelyScrollDepth';
import ImageWithCaption from '../../components/ImageWithCaption';
import AdContainer from '../../components/Ad';
import EmbedImages from '../../components/Embeds/EmbedImages';
@@ -133,6 +137,10 @@ const ArticlePage = ({ pageData }: { pageData: Article }) => {
...(isCPS && { pageTitle: `${atiAnalytics.pageTitle} - ${brandName}` }),
};
+ const scrollablePromoVariation = useOptimizelyVariation(
+ 'scrollable_promo',
+ ) as unknown as string;
+
const componentsToRender = {
visuallyHiddenHeadline,
headline: headings,
@@ -166,7 +174,12 @@ const ArticlePage = ({ pageData }: { pageData: Article }) => {
embedImages: EmbedImages,
embedUploader: Uploader,
group: gist,
- links: (props: ComponentToRenderProps) =>