From ddb840cee8a9e8d881e0fd0cd2c28a537de252bd Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Fri, 8 Nov 2024 14:42:56 +0000 Subject: [PATCH 01/13] adds manual gpid to prebid ad unit --- src/lib/header-bidding/prebid-types.ts | 1 + src/lib/header-bidding/prebid/prebid.ts | 18 ++++++++++++++++++ src/lib/header-bidding/slot-config.ts | 7 +++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/lib/header-bidding/prebid-types.ts b/src/lib/header-bidding/prebid-types.ts index 75c0cdd70..4d4c8c121 100644 --- a/src/lib/header-bidding/prebid-types.ts +++ b/src/lib/header-bidding/prebid-types.ts @@ -27,6 +27,7 @@ export type HeaderBiddingSizeKey = export type HeaderBiddingSlot = { key: HeaderBiddingSizeKey; sizes: HeaderBiddingSize[]; + name: string; }; export type HeaderBiddingSizeMapping = Record< diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index a83875a26..0154b6b3a 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -167,6 +167,7 @@ class PrebidAdUnit { code: string | null | undefined; bids: PrebidBid[] | null | undefined; mediaTypes: PrebidMediaTypes | null | undefined; + gpid: string; constructor( advert: Advert, @@ -176,6 +177,7 @@ class PrebidAdUnit { this.code = advert.id; this.bids = bids(advert.id, slot.sizes, pageTargeting); this.mediaTypes = { banner: { sizes: slot.sizes } }; + this.gpid = this.generateGpid(advert, slot, pageTargeting); advert.headerBiddingSizes = slot.sizes; log('commercial', `PrebidAdUnit ${this.code}`, this.bids); } @@ -183,6 +185,22 @@ class PrebidAdUnit { isEmpty() { return this.code == null; } + private generateGpid( + advert: Advert, + slot: HeaderBiddingSlot, + pageTargeting: PageTargeting, + ): string { + const sectionName = Array.isArray(pageTargeting.sectionName) + ? pageTargeting.sectionName.join(',') + : pageTargeting.sectionName; + const contentType = Array.isArray(pageTargeting.contentType) + ? pageTargeting.contentType.join(',') + : pageTargeting.contentType; + const slotName = Array.isArray(slot.name) + ? slot.name.join(',') + : slot.name; + return `/59666047/gu/${sectionName}/${contentType}/${slotName}`; + } } declare global { diff --git a/src/lib/header-bidding/slot-config.ts b/src/lib/header-bidding/slot-config.ts index 0b7d894e1..d13d37433 100644 --- a/src/lib/header-bidding/slot-config.ts +++ b/src/lib/header-bidding/slot-config.ts @@ -31,11 +31,11 @@ const getHbBreakpoint = () => { */ const filterBySizeMapping = (slotSizes: readonly AdSize[] = []) => - ({ key, sizes }: HeaderBiddingSlot): HeaderBiddingSlot => { + ({ key, sizes, name }: HeaderBiddingSlot): HeaderBiddingSlot => { // For now, only apply filtering to inline header bidding slots // In the future we may want to expand this to all slots if (key !== 'inline') { - return { key, sizes }; + return { key, sizes, name }; } const filteredSizes = sizes.filter(([hbWidth, hbHeight]) => @@ -48,6 +48,7 @@ const filterBySizeMapping = return { key, sizes: filteredSizes, + name: name || '', }; }; @@ -84,6 +85,7 @@ const filterByAdvert = ( ): HeaderBiddingSlot[] => { const slotNames = getSlotNamesFromSizeMapping(sizeMapping); const key = getHeaderBiddingKey(slotNames, ad.node.dataset.name); + const name = ad.node.dataset.name; if (!key) { return []; @@ -99,6 +101,7 @@ const filterByAdvert = ( { key, sizes, + name: name ?? '', }, ]; }; From bcf478f1096dc476abea33e7d6363c866d53354d Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Fri, 8 Nov 2024 16:12:08 +0000 Subject: [PATCH 02/13] fix slotconfig spec type issue --- src/lib/header-bidding/slot-config.spec.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib/header-bidding/slot-config.spec.ts b/src/lib/header-bidding/slot-config.spec.ts index cc06c8600..ce6705587 100644 --- a/src/lib/header-bidding/slot-config.spec.ts +++ b/src/lib/header-bidding/slot-config.spec.ts @@ -70,6 +70,7 @@ describe('getPrebidAdSlots', () => { { key: 'top-above-nav', sizes: [createAdSize(970, 250), createAdSize(728, 90)], + name: 'top-above-nav', }, ]); }); @@ -99,6 +100,7 @@ describe('getPrebidAdSlots', () => { { key: 'top-above-nav', sizes: [createAdSize(728, 90)], + name: 'top-above-nav', }, ]); }); @@ -109,6 +111,7 @@ describe('getPrebidAdSlots', () => { { key: 'top-above-nav', sizes: [createAdSize(300, 250)], + name: 'top-above-nav', }, ]); }); @@ -124,6 +127,7 @@ describe('getPrebidAdSlots', () => { { key: 'mobile-sticky', sizes: [createAdSize(320, 50), createAdSize(300, 50)], + name: 'mobile-sticky', }, ]); }); From 2fc02367c61d16efda3e35a88ca34bab60e60f1b Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Fri, 8 Nov 2024 17:23:50 +0000 Subject: [PATCH 03/13] refactor to add higher definition ext object --- src/lib/header-bidding/prebid/prebid.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 0154b6b3a..8da4983ab 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -168,6 +168,14 @@ class PrebidAdUnit { bids: PrebidBid[] | null | undefined; mediaTypes: PrebidMediaTypes | null | undefined; gpid: string; + ortb2Imp: { + ext: { + gpid: string; + data: { + pbadslot: string; + }; + }; + }; constructor( advert: Advert, @@ -178,6 +186,14 @@ class PrebidAdUnit { this.bids = bids(advert.id, slot.sizes, pageTargeting); this.mediaTypes = { banner: { sizes: slot.sizes } }; this.gpid = this.generateGpid(advert, slot, pageTargeting); + this.ortb2Imp = { + ext: { + gpid: this.gpid, + data: { + pbadslot: this.gpid, + }, + }, + }; advert.headerBiddingSizes = slot.sizes; log('commercial', `PrebidAdUnit ${this.code}`, this.bids); } From fd1d835ac7b146d49e2e6ba761f2bbc1f02c6c33 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Tue, 12 Nov 2024 15:14:05 +0000 Subject: [PATCH 04/13] use window config to get page details --- src/lib/header-bidding/prebid/prebid.ts | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 8da4983ab..3133ef8bc 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -201,20 +201,10 @@ class PrebidAdUnit { isEmpty() { return this.code == null; } - private generateGpid( - advert: Advert, - slot: HeaderBiddingSlot, - pageTargeting: PageTargeting, - ): string { - const sectionName = Array.isArray(pageTargeting.sectionName) - ? pageTargeting.sectionName.join(',') - : pageTargeting.sectionName; - const contentType = Array.isArray(pageTargeting.contentType) - ? pageTargeting.contentType.join(',') - : pageTargeting.contentType; - const slotName = Array.isArray(slot.name) - ? slot.name.join(',') - : slot.name; + private generateGpid(advert: Advert, slot: HeaderBiddingSlot): string { + const sectionName = window.guardian.config.page.section; + const contentType = window.guardian.config.page.contentType; + const slotName = slot.name; return `/59666047/gu/${sectionName}/${contentType}/${slotName}`; } } From 0973f07975a30ee32a874850263e1ff4f9cbe516 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Tue, 12 Nov 2024 15:14:44 +0000 Subject: [PATCH 05/13] use window config to get page details --- src/lib/header-bidding/prebid/prebid.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 3133ef8bc..86ab7486a 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -185,7 +185,7 @@ class PrebidAdUnit { this.code = advert.id; this.bids = bids(advert.id, slot.sizes, pageTargeting); this.mediaTypes = { banner: { sizes: slot.sizes } }; - this.gpid = this.generateGpid(advert, slot, pageTargeting); + this.gpid = this.generateGpid(advert, slot); this.ortb2Imp = { ext: { gpid: this.gpid, From f74b79ef28103c5284947a9cab84dd1715963202 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Tue, 12 Nov 2024 15:47:01 +0000 Subject: [PATCH 06/13] use slot key for slot name --- src/lib/header-bidding/prebid-types.ts | 1 - src/lib/header-bidding/prebid/prebid.ts | 2 +- src/lib/header-bidding/slot-config.spec.ts | 4 ---- src/lib/header-bidding/slot-config.ts | 7 ++----- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/lib/header-bidding/prebid-types.ts b/src/lib/header-bidding/prebid-types.ts index 4d4c8c121..75c0cdd70 100644 --- a/src/lib/header-bidding/prebid-types.ts +++ b/src/lib/header-bidding/prebid-types.ts @@ -27,7 +27,6 @@ export type HeaderBiddingSizeKey = export type HeaderBiddingSlot = { key: HeaderBiddingSizeKey; sizes: HeaderBiddingSize[]; - name: string; }; export type HeaderBiddingSizeMapping = Record< diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 86ab7486a..9ea3eb54c 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -204,7 +204,7 @@ class PrebidAdUnit { private generateGpid(advert: Advert, slot: HeaderBiddingSlot): string { const sectionName = window.guardian.config.page.section; const contentType = window.guardian.config.page.contentType; - const slotName = slot.name; + const slotName = slot.key; return `/59666047/gu/${sectionName}/${contentType}/${slotName}`; } } diff --git a/src/lib/header-bidding/slot-config.spec.ts b/src/lib/header-bidding/slot-config.spec.ts index ce6705587..cc06c8600 100644 --- a/src/lib/header-bidding/slot-config.spec.ts +++ b/src/lib/header-bidding/slot-config.spec.ts @@ -70,7 +70,6 @@ describe('getPrebidAdSlots', () => { { key: 'top-above-nav', sizes: [createAdSize(970, 250), createAdSize(728, 90)], - name: 'top-above-nav', }, ]); }); @@ -100,7 +99,6 @@ describe('getPrebidAdSlots', () => { { key: 'top-above-nav', sizes: [createAdSize(728, 90)], - name: 'top-above-nav', }, ]); }); @@ -111,7 +109,6 @@ describe('getPrebidAdSlots', () => { { key: 'top-above-nav', sizes: [createAdSize(300, 250)], - name: 'top-above-nav', }, ]); }); @@ -127,7 +124,6 @@ describe('getPrebidAdSlots', () => { { key: 'mobile-sticky', sizes: [createAdSize(320, 50), createAdSize(300, 50)], - name: 'mobile-sticky', }, ]); }); diff --git a/src/lib/header-bidding/slot-config.ts b/src/lib/header-bidding/slot-config.ts index d13d37433..0b7d894e1 100644 --- a/src/lib/header-bidding/slot-config.ts +++ b/src/lib/header-bidding/slot-config.ts @@ -31,11 +31,11 @@ const getHbBreakpoint = () => { */ const filterBySizeMapping = (slotSizes: readonly AdSize[] = []) => - ({ key, sizes, name }: HeaderBiddingSlot): HeaderBiddingSlot => { + ({ key, sizes }: HeaderBiddingSlot): HeaderBiddingSlot => { // For now, only apply filtering to inline header bidding slots // In the future we may want to expand this to all slots if (key !== 'inline') { - return { key, sizes, name }; + return { key, sizes }; } const filteredSizes = sizes.filter(([hbWidth, hbHeight]) => @@ -48,7 +48,6 @@ const filterBySizeMapping = return { key, sizes: filteredSizes, - name: name || '', }; }; @@ -85,7 +84,6 @@ const filterByAdvert = ( ): HeaderBiddingSlot[] => { const slotNames = getSlotNamesFromSizeMapping(sizeMapping); const key = getHeaderBiddingKey(slotNames, ad.node.dataset.name); - const name = ad.node.dataset.name; if (!key) { return []; @@ -101,7 +99,6 @@ const filterByAdvert = ( { key, sizes, - name: name ?? '', }, ]; }; From c5428ce9f11663d1a3eaaf91c63e0913be08010d Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Wed, 13 Nov 2024 22:37:38 +0000 Subject: [PATCH 07/13] add 2% ab test for gpid --- src/experiments/ab-tests.ts | 2 ++ src/experiments/tests/gpid-prebid.ts | 29 +++++++++++++++++++++++++ src/lib/header-bidding/prebid/prebid.ts | 25 ++++++++++++--------- 3 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 src/experiments/tests/gpid-prebid.ts diff --git a/src/experiments/ab-tests.ts b/src/experiments/ab-tests.ts index f6b637ccc..aadcf4902 100644 --- a/src/experiments/ab-tests.ts +++ b/src/experiments/ab-tests.ts @@ -1,4 +1,5 @@ import type { ABTest } from '@guardian/ab-core'; +import { gpidPrebid } from './tests/gpid-prebid'; import { mpuWhenNoEpic } from './tests/mpu-when-no-epic'; import { newHeaderBiddingEndpoint } from './tests/new-header-bidding-endpoint'; import { optOutFrequencyCap } from './tests/opt-out-frequency-cap'; @@ -13,4 +14,5 @@ export const concurrentTests: ABTest[] = [ mpuWhenNoEpic, optOutFrequencyCap, newHeaderBiddingEndpoint, + gpidPrebid, ]; diff --git a/src/experiments/tests/gpid-prebid.ts b/src/experiments/tests/gpid-prebid.ts new file mode 100644 index 000000000..a523584cd --- /dev/null +++ b/src/experiments/tests/gpid-prebid.ts @@ -0,0 +1,29 @@ +import type { ABTest } from '@guardian/ab-core'; + +export const gpidPrebid: ABTest = { + id: 'gpidPrebid', + author: '@commercial-dev', + start: '2024-11-15', + expiry: '2024-11-22', + audience: 0.02 / 100, + audienceOffset: 0 / 100, + audienceCriteria: '', + successMeasure: 'Verify GPID is added to Prebid.js ad units', + description: + 'Test to verify that GPID is correctly added to Prebid.js ad units.', + variants: [ + { + id: 'control', + test: (): void => { + /* no-op */ + }, + }, + { + id: 'variant', + test: (): void => { + /* no-op */ + }, + }, + ], + canRun: () => true, +}; diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 9ea3eb54c..92363cf90 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -9,6 +9,7 @@ import { EventTimer } from '../../../core/event-timer'; import type { PageTargeting } from '../../../core/targeting/build-page-targeting'; import type { Advert } from '../../../define/Advert'; import { isUserInVariant } from '../../../experiments/ab'; +import { gpidPrebid } from '../../../experiments/tests/gpid-prebid'; import { newHeaderBiddingEndpoint } from '../../../experiments/tests/new-header-bidding-endpoint'; import { getPageTargeting } from '../../build-page-targeting'; import { getAdvertById } from '../../dfp/get-advert-by-id'; @@ -163,12 +164,14 @@ type BidderSettings = { magnite?: Partial; }; +const isInGpidPrebidTest = isUserInVariant(gpidPrebid, 'variant'); + class PrebidAdUnit { code: string | null | undefined; bids: PrebidBid[] | null | undefined; mediaTypes: PrebidMediaTypes | null | undefined; - gpid: string; - ortb2Imp: { + gpid?: string; + ortb2Imp?: { ext: { gpid: string; data: { @@ -185,15 +188,17 @@ class PrebidAdUnit { this.code = advert.id; this.bids = bids(advert.id, slot.sizes, pageTargeting); this.mediaTypes = { banner: { sizes: slot.sizes } }; - this.gpid = this.generateGpid(advert, slot); - this.ortb2Imp = { - ext: { - gpid: this.gpid, - data: { - pbadslot: this.gpid, + if (isInGpidPrebidTest) { + this.gpid = this.generateGpid(advert, slot); + this.ortb2Imp = { + ext: { + gpid: this.gpid, + data: { + pbadslot: this.gpid, + }, }, - }, - }; + }; + } advert.headerBiddingSizes = slot.sizes; log('commercial', `PrebidAdUnit ${this.code}`, this.bids); } From a0b821660a872485db2828dc6f8dc8ede07635af Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Mon, 18 Nov 2024 09:24:07 +0000 Subject: [PATCH 08/13] add gpid to 99% of users --- src/experiments/tests/gpid-prebid.ts | 2 +- src/lib/header-bidding/prebid/prebid.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/experiments/tests/gpid-prebid.ts b/src/experiments/tests/gpid-prebid.ts index a523584cd..c814dba37 100644 --- a/src/experiments/tests/gpid-prebid.ts +++ b/src/experiments/tests/gpid-prebid.ts @@ -5,7 +5,7 @@ export const gpidPrebid: ABTest = { author: '@commercial-dev', start: '2024-11-15', expiry: '2024-11-22', - audience: 0.02 / 100, + audience: 2 / 100, audienceOffset: 0 / 100, audienceCriteria: '', successMeasure: 'Verify GPID is added to Prebid.js ad units', diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 92363cf90..83604c4b7 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -164,7 +164,7 @@ type BidderSettings = { magnite?: Partial; }; -const isInGpidPrebidTest = isUserInVariant(gpidPrebid, 'variant'); +const shouldIncludeGpid = isUserInVariant(gpidPrebid, 'variant'); class PrebidAdUnit { code: string | null | undefined; @@ -188,7 +188,7 @@ class PrebidAdUnit { this.code = advert.id; this.bids = bids(advert.id, slot.sizes, pageTargeting); this.mediaTypes = { banner: { sizes: slot.sizes } }; - if (isInGpidPrebidTest) { + if (shouldIncludeGpid) { this.gpid = this.generateGpid(advert, slot); this.ortb2Imp = { ext: { @@ -199,6 +199,7 @@ class PrebidAdUnit { }, }; } + advert.headerBiddingSizes = slot.sizes; log('commercial', `PrebidAdUnit ${this.code}`, this.bids); } From 24c0e24d2bd5a82f4e45aa089a8c88a93a9a20df Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Mon, 18 Nov 2024 10:13:56 +0000 Subject: [PATCH 09/13] add changeset for release --- .changeset/tiny-rats-lay.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tiny-rats-lay.md diff --git a/.changeset/tiny-rats-lay.md b/.changeset/tiny-rats-lay.md new file mode 100644 index 000000000..9aef7e1d8 --- /dev/null +++ b/.changeset/tiny-rats-lay.md @@ -0,0 +1,5 @@ +--- +'@guardian/commercial': patch +--- + +adds gpid for 99% of users to prebid request From 4dfd5e36541dbdc907691c574f8b5f33ca5b43c3 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Mon, 18 Nov 2024 19:22:07 +0000 Subject: [PATCH 10/13] refator gpid test name --- src/experiments/ab-tests.ts | 4 ++-- src/experiments/tests/gpid-prebid.ts | 4 ++-- src/lib/header-bidding/prebid/prebid.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/experiments/ab-tests.ts b/src/experiments/ab-tests.ts index aadcf4902..b0676ae6b 100644 --- a/src/experiments/ab-tests.ts +++ b/src/experiments/ab-tests.ts @@ -1,5 +1,5 @@ import type { ABTest } from '@guardian/ab-core'; -import { gpidPrebid } from './tests/gpid-prebid'; +import { gpidPrebidAdUnits } from './tests/gpid-prebid'; import { mpuWhenNoEpic } from './tests/mpu-when-no-epic'; import { newHeaderBiddingEndpoint } from './tests/new-header-bidding-endpoint'; import { optOutFrequencyCap } from './tests/opt-out-frequency-cap'; @@ -14,5 +14,5 @@ export const concurrentTests: ABTest[] = [ mpuWhenNoEpic, optOutFrequencyCap, newHeaderBiddingEndpoint, - gpidPrebid, + gpidPrebidAdUnits, ]; diff --git a/src/experiments/tests/gpid-prebid.ts b/src/experiments/tests/gpid-prebid.ts index c814dba37..360775cf3 100644 --- a/src/experiments/tests/gpid-prebid.ts +++ b/src/experiments/tests/gpid-prebid.ts @@ -1,7 +1,7 @@ import type { ABTest } from '@guardian/ab-core'; -export const gpidPrebid: ABTest = { - id: 'gpidPrebid', +export const gpidPrebidAdUnits: ABTest = { + id: 'gpidPrebidAdUnits', author: '@commercial-dev', start: '2024-11-15', expiry: '2024-11-22', diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 83604c4b7..6f22a254d 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -9,7 +9,7 @@ import { EventTimer } from '../../../core/event-timer'; import type { PageTargeting } from '../../../core/targeting/build-page-targeting'; import type { Advert } from '../../../define/Advert'; import { isUserInVariant } from '../../../experiments/ab'; -import { gpidPrebid } from '../../../experiments/tests/gpid-prebid'; +import { gpidPrebidAdUnits } from '../../../experiments/tests/gpid-prebid'; import { newHeaderBiddingEndpoint } from '../../../experiments/tests/new-header-bidding-endpoint'; import { getPageTargeting } from '../../build-page-targeting'; import { getAdvertById } from '../../dfp/get-advert-by-id'; @@ -164,7 +164,7 @@ type BidderSettings = { magnite?: Partial; }; -const shouldIncludeGpid = isUserInVariant(gpidPrebid, 'variant'); +const shouldIncludeGpid = isUserInVariant(gpidPrebidAdUnits, 'variant'); class PrebidAdUnit { code: string | null | undefined; From e2eab020b9b653dfe1cc5d56b3700ee75e456872 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Wed, 20 Nov 2024 10:26:05 +0000 Subject: [PATCH 11/13] amend userVariant control logic --- src/lib/header-bidding/prebid/prebid.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/header-bidding/prebid/prebid.ts b/src/lib/header-bidding/prebid/prebid.ts index 6f22a254d..5e7165d7b 100644 --- a/src/lib/header-bidding/prebid/prebid.ts +++ b/src/lib/header-bidding/prebid/prebid.ts @@ -164,7 +164,7 @@ type BidderSettings = { magnite?: Partial; }; -const shouldIncludeGpid = isUserInVariant(gpidPrebidAdUnits, 'variant'); +const shouldIncludeGpid = !isUserInVariant(gpidPrebidAdUnits, 'control'); class PrebidAdUnit { code: string | null | undefined; From ce17e5cc26c3fcb06e1422a6ca0785af56bb0374 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis <49187886+dskamiotis@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:17:45 +0000 Subject: [PATCH 12/13] Update src/experiments/tests/gpid-prebid.ts Co-authored-by: Emma Imber <108270776+emma-imber@users.noreply.github.com> --- src/experiments/tests/gpid-prebid.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/experiments/tests/gpid-prebid.ts b/src/experiments/tests/gpid-prebid.ts index 360775cf3..d67ab7b86 100644 --- a/src/experiments/tests/gpid-prebid.ts +++ b/src/experiments/tests/gpid-prebid.ts @@ -1,7 +1,7 @@ import type { ABTest } from '@guardian/ab-core'; export const gpidPrebidAdUnits: ABTest = { - id: 'gpidPrebidAdUnits', + id: 'GpidPrebidAdUnits', author: '@commercial-dev', start: '2024-11-15', expiry: '2024-11-22', From c88a7b4f3d9c7b8ebafdda886e77ff939991cb27 Mon Sep 17 00:00:00 2001 From: Demetrios Skamiotis Date: Wed, 20 Nov 2024 15:48:17 +0000 Subject: [PATCH 13/13] extends date for test --- src/experiments/tests/gpid-prebid.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/experiments/tests/gpid-prebid.ts b/src/experiments/tests/gpid-prebid.ts index d67ab7b86..17e86cb4b 100644 --- a/src/experiments/tests/gpid-prebid.ts +++ b/src/experiments/tests/gpid-prebid.ts @@ -4,7 +4,7 @@ export const gpidPrebidAdUnits: ABTest = { id: 'GpidPrebidAdUnits', author: '@commercial-dev', start: '2024-11-15', - expiry: '2024-11-22', + expiry: '2024-12-22', audience: 2 / 100, audienceOffset: 0 / 100, audienceCriteria: '',