Skip to content

Commit e8b107e

Browse files
authored
Merge pull request #1091 from Financial-Times/ADSDEV-2064/gtm-first-party-mode
2 parents ec78111 + 2a7df59 commit e8b107e

File tree

4 files changed

+53
-15
lines changed

4 files changed

+53
-15
lines changed

packages/dotcom-ui-shell/src/__test__/components/GTMHead.test.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,16 @@ describe('dotcom-ui-shell/src/components/GTMHead', () => {
2424
const tree = renderer.create(<GTMHead {...props} />).toJSON()
2525
expect(tree).toMatchSnapshot()
2626
})
27+
28+
it('renders the first party gtm script when the ads-first-party-gtm flag is on', () => {
29+
const props = {
30+
flags: {
31+
enableGTM: true,
32+
'ads-first-party-gtm': true
33+
}
34+
}
35+
36+
const tree = renderer.create(<GTMHead {...props} />).toJSON()
37+
expect(tree).toMatchSnapshot()
38+
})
2739
})

packages/dotcom-ui-shell/src/__test__/components/__snapshots__/GTMHead.test.tsx.snap

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,33 @@
22

33
exports[`dotcom-ui-shell/src/components/GTMHead renders null when the enableGTM flag is off 1`] = `null`;
44

5+
exports[`dotcom-ui-shell/src/components/GTMHead renders the first party gtm script when the ads-first-party-gtm flag is on 1`] = `
6+
<script
7+
dangerouslySetInnerHTML={
8+
Object {
9+
"__html": "(function(w,d,s,l){
10+
w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
11+
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
12+
j.async=true;
13+
j.src='https://www.ft.com/page-resources'+dl;
14+
f.parentNode.insertBefore(j,f);
15+
})(window,document,'script','dataLayer');",
16+
}
17+
}
18+
/>
19+
`;
20+
521
exports[`dotcom-ui-shell/src/components/GTMHead renders the gtm head script when the enableGTM flag is on 1`] = `
622
<script
723
dangerouslySetInnerHTML={
824
Object {
9-
"__html": "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
10-
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
11-
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
12-
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
13-
})(window,document,'script','dataLayer','GTM-NWQJW68');",
25+
"__html": "(function(w,d,s,l){
26+
w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
27+
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
28+
j.async=true;
29+
j.src='https://www.googletagmanager.com/gtm.js?id=GTM-NWQJW68'+dl;
30+
f.parentNode.insertBefore(j,f);
31+
})(window,document,'script','dataLayer');",
1432
}
1533
}
1634
/>

packages/dotcom-ui-shell/src/__test__/components/__snapshots__/Shell.test.tsx.snap

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,13 @@ exports[`dotcom-ui-shell/src/components/Shell renders the GTM script when the en
246246
<script
247247
dangerouslySetInnerHTML={
248248
Object {
249-
"__html": "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
250-
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
251-
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
252-
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
253-
})(window,document,'script','dataLayer','GTM-NWQJW68');",
249+
"__html": "(function(w,d,s,l){
250+
w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
251+
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
252+
j.async=true;
253+
j.src='https://www.googletagmanager.com/gtm.js?id=GTM-NWQJW68'+dl;
254+
f.parentNode.insertBefore(j,f);
255+
})(window,document,'script','dataLayer');",
254256
}
255257
}
256258
/>

packages/dotcom-ui-shell/src/components/GTMHead.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@ const GTMHead = ({ flags }: { flags: TFlagsData }) => {
77
return null
88
}
99

10-
const tagManager = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
11-
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
12-
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
13-
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
14-
})(window,document,'script','dataLayer','GTM-NWQJW68');`
10+
const src = flags['ads-first-party-gtm']
11+
? 'https://www.ft.com/page-resources'
12+
: 'https://www.googletagmanager.com/gtm.js?id=GTM-NWQJW68'
13+
14+
const tagManager = `(function(w,d,s,l){
15+
w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
16+
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
17+
j.async=true;
18+
j.src='${src}'+dl;
19+
f.parentNode.insertBefore(j,f);
20+
})(window,document,'script','dataLayer');`
1521

1622
return <script dangerouslySetInnerHTML={{ __html: tagManager }} />
1723
}

0 commit comments

Comments
 (0)