From 2d7aedb169879284d583549590e138e6a4f172e5 Mon Sep 17 00:00:00 2001 From: fweddi Date: Wed, 2 Sep 2026 09:18:20 +0100 Subject: [PATCH 1/6] Expand name of test to future-proof us when we test articles using same test --- ab-testing/config/abTests.ts | 4 ++-- .../src/model/enhanceCards.test.ts | 18 +++++++++--------- dotcom-rendering/src/model/enhanceCards.ts | 3 +-- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ab-testing/config/abTests.ts b/ab-testing/config/abTests.ts index 1c3a6f2ef42..d4b61b3b9ba 100644 --- a/ab-testing/config/abTests.ts +++ b/ab-testing/config/abTests.ts @@ -196,8 +196,8 @@ const ABTests: ABTest[] = [ shouldForceMetricsCollection: false, }, { - name: "fronts-and-curation-editorial-headline-test", - description: "Allow editorial headline A/B tests to run on web", + name: "fronts-and-curation-editorial-test", + description: "Allow editorial A/B tests to run on web", owners: [ "fronts.and.curation@guardian.co.uk", "ab.test.mission@guardian.co.uk", diff --git a/dotcom-rendering/src/model/enhanceCards.test.ts b/dotcom-rendering/src/model/enhanceCards.test.ts index 6cd200a41c3..65ead657afd 100644 --- a/dotcom-rendering/src/model/enhanceCards.test.ts +++ b/dotcom-rendering/src/model/enhanceCards.test.ts @@ -678,7 +678,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithNoEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, true, 'test-front', @@ -691,7 +691,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, true, 'invalid-test-front', @@ -704,7 +704,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, false, 'test-front', @@ -717,7 +717,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, true, 'test-front', @@ -730,7 +730,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'b', + 'fronts-and-curation-editorial-test': 'b', }, true, 'test-front', @@ -743,7 +743,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'c', + 'fronts-and-curation-editorial-test': 'c', }, true, 'test-front', @@ -756,7 +756,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithEditorialTestWithUndefinedVariantMeta, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, true, 'test-front', @@ -769,7 +769,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithExpiredEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, true, 'test-front', @@ -782,7 +782,7 @@ describe('Enhance Cards', () => { decideHeadline( cardWithManuallyEndedEditorialTest, { - 'fronts-and-curation-editorial-headline-test': 'a', + 'fronts-and-curation-editorial-test': 'a', }, true, 'test-front', diff --git a/dotcom-rendering/src/model/enhanceCards.ts b/dotcom-rendering/src/model/enhanceCards.ts index af086355368..f9a6eac8344 100644 --- a/dotcom-rendering/src/model/enhanceCards.ts +++ b/dotcom-rendering/src/model/enhanceCards.ts @@ -216,8 +216,7 @@ export const decideHeadline = ( ): string => { const defaultHeadline = faciaCard.header.headline; - const testBucket = - serverSideABTests['fronts-and-curation-editorial-headline-test']; + const testBucket = serverSideABTests['fronts-and-curation-editorial-test']; const activeEditorialTest = findActiveEditorialTest( faciaCard.properties.tests, From d40387bcc462b206e993372fb519541124a44392 Mon Sep 17 00:00:00 2001 From: fweddi Date: Thu, 27 Aug 2026 15:20:41 +0100 Subject: [PATCH 2/6] Roll variant headline out to 5% of users The end goal is a 50/50 test, we are reaching this threshold in stages to avoid overloading the cache --- ab-testing/config/abTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ab-testing/config/abTests.ts b/ab-testing/config/abTests.ts index d4b61b3b9ba..d4c22ec7434 100644 --- a/ab-testing/config/abTests.ts +++ b/ab-testing/config/abTests.ts @@ -205,7 +205,7 @@ const ABTests: ABTest[] = [ status: "ON", expirationDate: "2036-08-12", type: "server", - audienceSize: 0 / 100, + audienceSize: 5 / 95, groups: ["a", "b"], shouldForceMetricsCollection: false, }, From 09fd05591f20d69ba13bf2ebdae69a6c70e0cbd7 Mon Sep 17 00:00:00 2001 From: fweddi Date: Tue, 1 Sep 2026 10:50:16 +0100 Subject: [PATCH 3/6] Amend to 25/100 (ie 25%) rollout --- ab-testing/config/abTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ab-testing/config/abTests.ts b/ab-testing/config/abTests.ts index d4c22ec7434..41c01ee3021 100644 --- a/ab-testing/config/abTests.ts +++ b/ab-testing/config/abTests.ts @@ -205,7 +205,7 @@ const ABTests: ABTest[] = [ status: "ON", expirationDate: "2036-08-12", type: "server", - audienceSize: 5 / 95, + audienceSize: 25 / 100, groups: ["a", "b"], shouldForceMetricsCollection: false, }, From 658935b6bbf7c78c4a13c17fb4c0866c8042a720 Mon Sep 17 00:00:00 2001 From: fweddi Date: Tue, 1 Sep 2026 10:51:25 +0100 Subject: [PATCH 4/6] Reserve last alphabetical audience space --- ab-testing/config/abTests.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ab-testing/config/abTests.ts b/ab-testing/config/abTests.ts index 41c01ee3021..e30a09f23ad 100644 --- a/ab-testing/config/abTests.ts +++ b/ab-testing/config/abTests.ts @@ -206,6 +206,7 @@ const ABTests: ABTest[] = [ expirationDate: "2036-08-12", type: "server", audienceSize: 25 / 100, + audienceSpace: "E", groups: ["a", "b"], shouldForceMetricsCollection: false, }, From 7fa91e26622b8e3f1e36747befd853e96d66f60d Mon Sep 17 00:00:00 2001 From: fweddi Date: Thu, 27 Aug 2026 15:21:57 +0100 Subject: [PATCH 5/6] Roll variant headline out to 50% of users --- ab-testing/config/abTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ab-testing/config/abTests.ts b/ab-testing/config/abTests.ts index e30a09f23ad..ea35f3f1fd7 100644 --- a/ab-testing/config/abTests.ts +++ b/ab-testing/config/abTests.ts @@ -205,7 +205,7 @@ const ABTests: ABTest[] = [ status: "ON", expirationDate: "2036-08-12", type: "server", - audienceSize: 25 / 100, + audienceSize: 50 / 100, audienceSpace: "E", groups: ["a", "b"], shouldForceMetricsCollection: false, From 07d4a7102ed937d2500f89070274aa9edd45f212 Mon Sep 17 00:00:00 2001 From: fweddi Date: Thu, 3 Sep 2026 14:01:25 +0100 Subject: [PATCH 6/6] Roll out variant headlines to all users --- ab-testing/config/abTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ab-testing/config/abTests.ts b/ab-testing/config/abTests.ts index ea35f3f1fd7..83fb7c785fe 100644 --- a/ab-testing/config/abTests.ts +++ b/ab-testing/config/abTests.ts @@ -205,7 +205,7 @@ const ABTests: ABTest[] = [ status: "ON", expirationDate: "2036-08-12", type: "server", - audienceSize: 50 / 100, + audienceSize: 100 / 100, audienceSpace: "E", groups: ["a", "b"], shouldForceMetricsCollection: false,