Skip to content

AB test: Every card on the network front is boosted#14509

Merged
domlander merged 5 commits intomainfrom
doml/all-boosts
Oct 6, 2025
Merged

AB test: Every card on the network front is boosted#14509
domlander merged 5 commits intomainfrom
doml/all-boosts

Conversation

@domlander
Copy link
Contributor

@domlander domlander commented Sep 16, 2025

What does this change?

Creates an AB test that will set every card in one of the following containers on mobile web to boosted:

  • Flexible General
  • Flexible Special
  • Scrollable Medium
  • Scrollable Small
  • Static Medium 4

Feature cards are excluded from this test.

Small refactor so that scrollable medium no longer has the container type: "scrollable/small". This could use a follow-up refactor after this test has finished, as i'm not sure it makes sense for scrollable medium cards to be small cards.

Why?

To find our the effect on clickthrough rate when every card is boosted

Screenshots

Before After
mobile-before mobile-after
tablet-before tablet-after
desktop-before desktop-after

@github-actions
Copy link

github-actions bot commented Sep 16, 2025

@github-actions
Copy link

github-actions bot commented Sep 16, 2025

@domlander domlander added the run_chromatic Runs chromatic when label is applied label Oct 1, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label Oct 1, 2025
@domlander domlander added the run_chromatic Runs chromatic when label is applied label Oct 2, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label Oct 2, 2025
@domlander domlander marked this pull request as ready for review October 2, 2025 11:03
@github-actions
Copy link

github-actions bot commented Oct 2, 2025

Hello 👋! When you're ready to run Chromatic, please apply the run_chromatic label to this PR.

You will need to reapply the label each time you want to run Chromatic.

Click here to see the Chromatic project.

Comment on lines +272 to 297
return isInAllBoostsTest ? (
<ScrollableSmall
trails={trails}
imageLoading={imageLoading}
containerPalette={containerPalette}
showAge={showAge}
absoluteServerTimes={absoluteServerTimes}
aspectRatio={aspectRatio}
isInAllBoostsTest={true}
sectionId={sectionId}
showLabsRedesign={!!showLabsRedesign}
/>
) : (
<Island priority="feature" defer={{ until: 'visible' }}>
<ScrollableSmall
trails={trails}
imageLoading={imageLoading}
containerType={'scrollable/small'}
containerPalette={containerPalette}
showAge={showAge}
absoluteServerTimes={absoluteServerTimes}
aspectRatio={aspectRatio}
isInAllBoostsTest={false}
sectionId={sectionId}
showLabsRedesign={!!showLabsRedesign}
/>
</Island>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why no island?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do not have carousels when in the AB test, so we don't need the javascript that comes with carousels.

showAge: true,
absoluteServerTimes: true,
imageLoading: 'eager',
containerType: 'scrollable/medium',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how come?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is defined within ScrollableMedium component so no longer needs to be passed through?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might be easier to review by looking at the first commit in this PR. Where the containerType is used, it's the name of the container. It's confusing for a ScrollableMedium container to have containerType equal to scrollable/small, which it was before when it was passed in through DecideContainer.tsx. I did miss a usage of this containerType in the Card component, which I'll push in a separate commit.

return (
<>
<UL direction="row" padBottom={true}>
{trails.slice(0, 2).map((trail, index) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the slicing for here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ScrollableSmall containers have four cards in two rows of two
Screenshot 2025-10-02 at 16 26 44

collectionId={index + 1}
isInAllBoostsTest={
front.isNetworkFront &&
abTests.allBoostsVariant !== 'variant'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just double checking this is the right way round?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope! I'd left this is accidentally from testing. Thanks for catching

@domlander domlander added the run_chromatic Runs chromatic when label is applied label Oct 6, 2025
@github-actions github-actions bot removed the run_chromatic Runs chromatic when label is applied label Oct 6, 2025
@domlander domlander merged commit b60a526 into main Oct 6, 2025
31 checks passed
@domlander domlander deleted the doml/all-boosts branch October 6, 2025 08:28
@gu-prout
Copy link

gu-prout bot commented Oct 6, 2025

Seen on PROD (merged by @domlander 7 minutes and 47 seconds ago) Please check your changes!

@domlander domlander added the feature Departmental tracking: work on a new feature label Oct 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dotcom-rendering feature Departmental tracking: work on a new feature fronts + curation Seen-on-PROD

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants