Merge pull request #22304 from overleaf/mf-clean-up-latam-v2-test

[web] Tear down LATAM geo-pricing v2 split test

GitOrigin-RevId: ca379c7ace5600aa31559c82e166c7ea67c6c26d
This commit is contained in:
M Fahru
2024-12-09 10:13:50 -07:00
committed by Copybot
parent a49cec6843
commit ff7bd5718b
4 changed files with 165 additions and 310 deletions

View File

@@ -396,13 +396,6 @@ async function projectListPage(req, res, next) {
usersBestSubscription?.type === 'free' ||
usersBestSubscription?.type === 'standalone-ai-add-on'
) {
const latamGeoPricingAssignment =
await SplitTestHandler.promises.getAssignment(
req,
res,
'geo-pricing-latam-v2'
)
const { countryCode, currencyCode } =
await GeoIpLookup.promises.getCurrencyCode(req.ip)
@@ -411,9 +404,7 @@ async function projectListPage(req, res, next) {
}
showBrlGeoBanner = countryCode === 'BR'
showLATAMBanner =
latamGeoPricingAssignment.variant === 'latam' &&
['MX', 'CO', 'CL', 'PE'].includes(countryCode)
showLATAMBanner = ['MX', 'CO', 'CL', 'PE'].includes(countryCode)
// LATAM Banner needs to know which currency to display
if (showLATAMBanner) {
recommendedCurrency = currencyCode

View File

@@ -68,10 +68,8 @@ function _getGroupPlanModalDefaults(req, currency) {
}
}
function _plansBanners({ geoPricingLATAMTestVariant, countryCode }) {
const showLATAMBanner =
geoPricingLATAMTestVariant === 'latam' &&
['MX', 'CO', 'CL', 'PE'].includes(countryCode)
function _plansBanners(countryCode) {
const showLATAMBanner = ['MX', 'CO', 'CL', 'PE'].includes(countryCode)
const showInrGeoBanner = countryCode === 'IN'
const showBrlGeoBanner = countryCode === 'BR'
return { showLATAMBanner, showInrGeoBanner, showBrlGeoBanner }
@@ -105,20 +103,15 @@ async function plansPage(req, res) {
const plans = SubscriptionViewModelBuilder.buildPlansList()
const { currency, countryCode, geoPricingLATAMTestVariant } =
await _getRecommendedCurrency(req, res)
const { currency, countryCode } = await _getRecommendedCurrency(req, res)
const latamCountryBannerDetails = await getLatamCountryBannerDetails(req, res)
const groupPlanModalDefaults = _getGroupPlanModalDefaults(req, currency)
const currentView = 'annual'
const { showLATAMBanner, showInrGeoBanner, showBrlGeoBanner } = _plansBanners(
{
geoPricingLATAMTestVariant,
countryCode,
}
)
const { showLATAMBanner, showInrGeoBanner, showBrlGeoBanner } =
_plansBanners(countryCode)
const localCcyAssignment = await SplitTestHandler.promises.getAssignment(
req,
@@ -163,8 +156,7 @@ async function plansPage(req, res) {
}
async function plansPageLightDesign(req, res) {
const { currency, countryCode, geoPricingLATAMTestVariant } =
await _getRecommendedCurrency(req, res)
const { currency, countryCode } = await _getRecommendedCurrency(req, res)
const language = req.i18n.language || 'en'
const currentView = 'annual'
@@ -181,12 +173,8 @@ async function plansPageLightDesign(req, res) {
? formatCurrencyLocalized
: SubscriptionHelper.formatCurrencyDefault
const { showLATAMBanner, showInrGeoBanner, showBrlGeoBanner } = _plansBanners(
{
geoPricingLATAMTestVariant,
countryCode,
}
)
const { showLATAMBanner, showInrGeoBanner, showBrlGeoBanner } =
_plansBanners(countryCode)
const latamCountryBannerDetails = await getLatamCountryBannerDetails(req, res)
@@ -358,8 +346,10 @@ async function interstitialPaymentPage(req, res) {
}
const user = SessionManager.getSessionUser(req.session)
const { recommendedCurrency, countryCode, geoPricingLATAMTestVariant } =
await _getRecommendedCurrency(req, res)
const { recommendedCurrency, countryCode } = await _getRecommendedCurrency(
req,
res
)
const latamCountryBannerDetails = await getLatamCountryBannerDetails(req, res)
@@ -371,10 +361,7 @@ async function interstitialPaymentPage(req, res) {
res.redirect('/user/subscription?hasSubscription=true')
} else {
const { showLATAMBanner, showInrGeoBanner, showBrlGeoBanner } =
_plansBanners({
geoPricingLATAMTestVariant,
countryCode,
})
_plansBanners(countryCode)
const localCcyAssignment = await SplitTestHandler.promises.getAssignment(
req,
@@ -827,20 +814,7 @@ async function _getRecommendedCurrency(req, res) {
}
const currencyLookup = await GeoIpLookup.promises.getCurrencyCode(ip)
const countryCode = currencyLookup.countryCode
let recommendedCurrency = currencyLookup.currencyCode
const assignmentLATAM = await SplitTestHandler.promises.getAssignment(
req,
res,
'geo-pricing-latam-v2'
)
if (
['MXN', 'COP', 'CLP', 'PEN'].includes(recommendedCurrency) &&
assignmentLATAM?.variant === 'default'
) {
recommendedCurrency = GeoIpLookup.DEFAULT_CURRENCY_CODE
}
const recommendedCurrency = currencyLookup.currencyCode
let currency = null
const queryCurrency = req.query.currency?.toUpperCase()
@@ -854,7 +828,6 @@ async function _getRecommendedCurrency(req, res) {
currency,
recommendedCurrency,
countryCode,
geoPricingLATAMTestVariant: assignmentLATAM?.variant,
}
}

View File

@@ -8,9 +8,6 @@ export function sendPlansViewEvent() {
function () {
const currency = getMeta('ol-recommendedCurrency')
const countryCode = getMeta('ol-countryCode')
const geoPricingLATAMTestVariant = getSplitTestVariant(
'geo-pricing-latam-v2'
)
const groupTabImprovementsVariant = getSplitTestVariant(
'group-tab-improvements'
@@ -35,7 +32,6 @@ export function sendPlansViewEvent() {
currency,
countryCode,
device,
'geo-pricing-latam-v2': geoPricingLATAMTestVariant,
'website-redesign-plans': websiteRedesignPlansTestVariant,
'group-tab-improvements': groupTabImprovementsVariant,
plan: planTabParam,

View File

@@ -323,89 +323,60 @@ describe('SubscriptionController', function () {
})
describe('showLATAMBanner', function () {
describe('latam variant', function () {
beforeEach(function () {
this.SplitTestV2Hander.promises.getAssignment
.withArgs(this.req, this.res, 'geo-pricing-latam-v2')
.resolves({
variant: 'latam',
})
})
it('should return true for Mexican users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for Colombian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CO',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for Chilean users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CL',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for Peruvian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'PE',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for US users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'US',
})
this.SubscriptionController.plansPage(this.req, this.res)
it('should return true for Mexican users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
describe('default variant', function () {
beforeEach(function () {
this.SplitTestV2Hander.promises.getAssignment
.withArgs(this.req, this.res, 'geo-pricing-latam-v2')
.resolves({
variant: 'default',
})
it('should return true for Colombian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CO',
})
it('should return false', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.plansPage(this.req, this.res)
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for Chilean users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CL',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for Peruvian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'PE',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
it('should return true for US users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'US',
})
this.SubscriptionController.plansPage(this.req, this.res)
})
})
@@ -670,89 +641,60 @@ describe('SubscriptionController', function () {
})
describe('showLATAMBanner', function () {
describe('latam variant', function () {
beforeEach(function () {
this.SplitTestV2Hander.promises.getAssignment
.withArgs(this.req, this.res, 'geo-pricing-latam-v2')
.resolves({
variant: 'latam',
})
})
it('should return true for Mexican users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for Colombian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CO',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for Chilean users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CL',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for Peruvian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'PE',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for US users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'US',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
it('should return true for Mexican users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
describe('default variant', function () {
beforeEach(function () {
this.SplitTestV2Hander.promises.getAssignment
.withArgs(this.req, this.res, 'geo-pricing-latam-v2')
.resolves({
variant: 'default',
})
it('should return true for Colombian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CO',
})
it('should return false', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for Chilean users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CL',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for Peruvian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'PE',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
it('should return true for US users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/plans-light-design')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'US',
})
this.SubscriptionController.plansPageLightDesign(this.req, this.res)
})
})
@@ -876,107 +818,60 @@ describe('SubscriptionController', function () {
})
describe('showLATAMBanner', function () {
describe('latam variant', function () {
beforeEach(function () {
this.SplitTestV2Hander.promises.getAssignment
.withArgs(this.req, this.res, 'geo-pricing-latam-v2')
.resolves({
variant: 'latam',
})
})
it('should return true for Mexican users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.interstitialPaymentPage(
this.req,
this.res
)
})
it('should return true for Colombian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CO',
})
this.SubscriptionController.interstitialPaymentPage(
this.req,
this.res
)
})
it('should return true for Chilean users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CL',
})
this.SubscriptionController.interstitialPaymentPage(
this.req,
this.res
)
})
it('should return true for Peruvian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'PE',
})
this.SubscriptionController.interstitialPaymentPage(
this.req,
this.res
)
})
it('should return true for US users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'US',
})
this.SubscriptionController.interstitialPaymentPage(
this.req,
this.res
)
it('should return true for Mexican users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.interstitialPaymentPage(this.req, this.res)
})
describe('default variant', function () {
beforeEach(function () {
this.SplitTestV2Hander.promises.getAssignment
.withArgs(this.req, this.res, 'website-redesign-plan')
.resolves({
variant: 'default',
})
it('should return true for Colombian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CO',
})
it('should return false', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'MX',
})
this.SubscriptionController.interstitialPaymentPage(
this.req,
this.res
)
this.SubscriptionController.interstitialPaymentPage(this.req, this.res)
})
it('should return true for Chilean users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'CL',
})
this.SubscriptionController.interstitialPaymentPage(this.req, this.res)
})
it('should return true for Peruvian users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(true)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'PE',
})
this.SubscriptionController.interstitialPaymentPage(this.req, this.res)
})
it('should return true for US users', function (done) {
this.res.render = (page, opts) => {
page.should.equal('subscriptions/interstitial-payment')
opts.showLATAMBanner.should.equal(false)
done()
}
this.GeoIpLookup.promises.getCurrencyCode.resolves({
countryCode: 'US',
})
this.SubscriptionController.interstitialPaymentPage(this.req, this.res)
})
})