Merge pull request #16307 from overleaf/ab-split-tests-never-throw
[web] Guarantee split test assignments can never throw and cleanup boilterplate error handling GitOrigin-RevId: ab50abde6e0632c5a9625b5c3d3e98f3383cc56c
This commit is contained in:
committed by
Copybot
parent
29d41497ef
commit
3b9eb4e8aa
@@ -76,39 +76,23 @@ async function plansPage(req, res) {
|
||||
geoPricingINRTestVariant === 'inr'
|
||||
? 'geo-banners-inr-2'
|
||||
: 'geo-banners-inr-1'
|
||||
try {
|
||||
const geoBannerAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
inrGeoBannerSplitTestName
|
||||
)
|
||||
inrGeoBannerVariant = geoBannerAssignment.variant
|
||||
if (inrGeoBannerVariant !== 'default') {
|
||||
showInrGeoBanner = true
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
{ err: error },
|
||||
`Failed to get INR geo banner lookup or assignment (${inrGeoBannerSplitTestName})`
|
||||
)
|
||||
const geoBannerAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
inrGeoBannerSplitTestName
|
||||
)
|
||||
inrGeoBannerVariant = geoBannerAssignment.variant
|
||||
if (inrGeoBannerVariant !== 'default') {
|
||||
showInrGeoBanner = true
|
||||
}
|
||||
}
|
||||
|
||||
// annual plans with the free trial option split test - nudge variant
|
||||
let annualTrialsAssignment = { variant: 'default' }
|
||||
|
||||
try {
|
||||
annualTrialsAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'annual-trials'
|
||||
)
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
{ err: error },
|
||||
'failed to get "annualTrialsAssignment" split test assignment'
|
||||
)
|
||||
}
|
||||
const annualTrialsAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'annual-trials'
|
||||
)
|
||||
|
||||
const websiteRedesignVariant =
|
||||
res.locals.splitTestVariants?.['website-redesign']
|
||||
@@ -285,40 +269,20 @@ async function interstitialPaymentPage(req, res) {
|
||||
geoPricingINRTestVariant === 'inr'
|
||||
? 'geo-banners-inr-2'
|
||||
: 'geo-banners-inr-1'
|
||||
try {
|
||||
const geoBannerAssignment =
|
||||
await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
inrGeoBannerSplitTestName
|
||||
)
|
||||
inrGeoBannerVariant = geoBannerAssignment.variant
|
||||
if (inrGeoBannerVariant !== 'default') {
|
||||
showInrGeoBanner = true
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
{ err: error },
|
||||
`Failed to get INR geo banner lookup or assignment (${inrGeoBannerSplitTestName})`
|
||||
)
|
||||
const geoBannerAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
inrGeoBannerSplitTestName
|
||||
)
|
||||
inrGeoBannerVariant = geoBannerAssignment.variant
|
||||
if (inrGeoBannerVariant !== 'default') {
|
||||
showInrGeoBanner = true
|
||||
}
|
||||
}
|
||||
|
||||
// annual plans with the free trial option split test - nudge variant
|
||||
let annualTrialsAssignment = { variant: 'default' }
|
||||
|
||||
try {
|
||||
annualTrialsAssignment = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'annual-trials'
|
||||
)
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
{ err: error },
|
||||
'failed to get "annualTrialsAssignment" split test assignment'
|
||||
)
|
||||
}
|
||||
const annualTrialsAssignment =
|
||||
await SplitTestHandler.promises.getAssignment(req, res, 'annual-trials')
|
||||
|
||||
const paywallPlansPageViewSegmentation = {
|
||||
currency: recommendedCurrency,
|
||||
@@ -680,36 +644,21 @@ async function _getRecommendedCurrency(req, res) {
|
||||
}
|
||||
const currencyLookup = await GeoIpLookup.promises.getCurrencyCode(ip)
|
||||
const countryCode = currencyLookup.countryCode
|
||||
let assignmentINR, assignmentLATAM
|
||||
let recommendedCurrency = currencyLookup.currencyCode
|
||||
// for #12703
|
||||
try {
|
||||
// Split test is kept active, but all users geolocated in India can
|
||||
// now use the INR currency (See #13507)
|
||||
assignmentINR = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'geo-pricing-inr'
|
||||
)
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
{ err: error },
|
||||
'Failed to get assignment for geo-pricing-inr test'
|
||||
)
|
||||
}
|
||||
// Split test is kept active, but all users geolocated in India can
|
||||
// now use the INR currency (See #13507)
|
||||
const assignmentINR = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'geo-pricing-inr'
|
||||
)
|
||||
// for #13559
|
||||
try {
|
||||
assignmentLATAM = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'geo-pricing-latam'
|
||||
)
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
{ err: error },
|
||||
'Failed to get assignment for geo-pricing-latam test'
|
||||
)
|
||||
}
|
||||
const assignmentLATAM = await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'geo-pricing-latam'
|
||||
)
|
||||
if (
|
||||
['BRL', 'MXN', 'COP', 'CLP', 'PEN'].includes(recommendedCurrency) &&
|
||||
assignmentLATAM?.variant !== 'latam'
|
||||
|
||||
Reference in New Issue
Block a user