diff --git a/src/constants/experiments.js b/src/constants/experiments.js
index d64849466..c5c24536d 100644
--- a/src/constants/experiments.js
+++ b/src/constants/experiments.js
@@ -3,6 +3,7 @@ const experimentUniverses = {
RECAL_PRICE_REMOVAL: "NextGen_RecalPriceRemoval",
MSR: "MSR",
IGQ_SkipQuote: "NextGen_IGQSkipToInsurance",
+ AFTERPAY_BREAKOUT_DISPLAY: "AfterpayBreakoutDisplay",
};
const experimentSettings = {
@@ -24,6 +25,7 @@ const experimentSettings = {
PRICING_BY_DAY: "DisplayPricingByDay",
FOSTER_LOVE: "DisplayFosterLove",
SKIP_TO_INSURANCE: "SkipToInsurance",
+ DISPLAY_AFTERPAY_BREAKOUT_DISPLAY: "Display_AfterpayBreakoutDisplay",
};
const experimentTriggers = {
diff --git a/src/experiment-components/service-package-radio-for-afterpay.vue b/src/experiment-components/service-package-radio-for-afterpay.vue
new file mode 100644
index 000000000..3356ee225
--- /dev/null
+++ b/src/experiment-components/service-package-radio-for-afterpay.vue
@@ -0,0 +1,474 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ in 4 interest-free payments
+
+ or
+
+
+ in single payment
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue
index 9f393e260..3b682e52b 100644
--- a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue
+++ b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue
@@ -2,16 +2,16 @@
-
+
{{ afterpayPrice }}
{{ getInlineAltText(token) }}
-
- {{ token }}
-
+
({
}
return "test";
},
+ hasSettingEqualTo(settingName) {
+ if (settingName === mockExperimentSettings.DISPLAY_AFTERPAY_BREAKOUT_DISPLAY) {
+ return false;
+ }
+ return "test";
+ },
},
}));
diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue
index b02b0d807..42ccfb09a 100644
--- a/src/layouts/quote/quote.vue
+++ b/src/layouts/quote/quote.vue
@@ -46,6 +46,7 @@
@@ -221,6 +222,36 @@ export default {
);
}
+ // AfterpayBreakoutDisplay Custom Exposure
+ const IGQExperiment = store.getters.applicationUser.experiments.find(
+ (e) => e.universeName === experimentUniverses.RECAL_PRICE_REMOVAL
+ );
+ const hasExposedIGQExperiment = IGQExperiment?.isExposed;
+
+ const afterpayBreakoutDisplayExperiment = store.getters.applicationUser.experiments.find(
+ (e) => e.universeName === experimentUniverses.AFTERPAY_BREAKOUT_DISPLAY
+ );
+ const hasExposedAfterpayBreakoutDisplay = afterpayBreakoutDisplayExperiment?.isExposed;
+ const shouldSendAfterpayBreakoutDisplayExposeRequest =
+ afterpayBreakoutDisplayExperiment &&
+ !hasExposedAfterpayBreakoutDisplay &&
+ !hasExposedIGQExperiment;
+
+ if (shouldSendAfterpayBreakoutDisplayExposeRequest) {
+ baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.LOG_EXPERIMENT_EXPOSURE_AND_UPDATE_STORE,
+ {
+ userId: getUserIdValue(),
+ deviceId: getDeviceIdValue(),
+ sessionKey: getSessionKeyValue(),
+ pageName: to.query.fmgPage,
+ experiment: afterpayBreakoutDisplayExperiment,
+ },
+ "quote",
+ false
+ );
+ }
+
const promiseResultMap = [
{
resultKey: "cmsContent",
@@ -571,6 +602,15 @@ export default {
showRecalDisclaimer() {
return this.isRecalibrationOnOrder && this.isRecalPriceRemove;
},
+ isAfterpayBreakoutDisplay() {
+ return (
+ (!this.isRecalPriceRemove || !this.isRecalibrationOnOrder) &&
+ experimentMixin.methods.hasSettingEqualTo(
+ experimentSettings.DISPLAY_AFTERPAY_BREAKOUT_DISPLAY,
+ "true"
+ )
+ );
+ },
},
methods: {
getColCount() {
diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue
index 68f031768..64c075408 100644
--- a/src/layouts/quote/service-package-question/service-package-question.vue
+++ b/src/layouts/quote/service-package-question/service-package-question.vue
@@ -4,7 +4,7 @@
:answers="servicePackageAnswers"
:groupName="groupName"
buttonTypeString="servicePackageRadio"
- :buttonTypeObject="hasPricingByDay() ? servicePackageRadioExperiment : servicePackageRadio"
+ :buttonTypeObject="getButtonTypeObject()"
v-model="selectedPackageName"
:validationRules="validationRules"
:isRequired="isRequired"
@@ -18,6 +18,7 @@ import baseMixin from "@/mixins/base-mixin.js";
import { processIfStatements } from "@/helpers/cms-content-helper";
import servicePackageRadio from "./service-package-radio/service-package-radio";
import servicePackageRadioExperiment from "@/experiment-components/service-package-radio";
+import servicePackageRadioAfterpayExperiment from "@/experiment-components/service-package-radio-for-afterpay";
import { partTypeStrings } from "@/constants/part-type-strings";
import { packageNames } from "@/constants/package-names";
import {
@@ -61,6 +62,7 @@ export default {
return {
servicePackageRadio: servicePackageRadio,
servicePackageRadioExperiment: servicePackageRadioExperiment,
+ servicePackageRadioAfterpayExperiment: servicePackageRadioAfterpayExperiment,
selectedPackageName: null,
};
},
@@ -156,6 +158,7 @@ export default {
Text: this.isInsuranceSelected
? false
: "Special: Save $" + this.getServicePackageDiscountPrice(),
+ isInsuranceSelected: this.isInsuranceSelected,
},
}));
this.$emit("currentNumberOfPackages", modifiedAnswers.length);
@@ -237,6 +240,24 @@ export default {
"true"
);
},
+ isAfterpayBreakoutDisplay() {
+ return (
+ (!this.shouldHideRecalibration || !this.isRecalibrationOnOrder) &&
+ experimentMixin.methods.hasSettingEqualTo(
+ experimentSettings.DISPLAY_AFTERPAY_BREAKOUT_DISPLAY,
+ "true"
+ )
+ );
+ },
+ getButtonTypeObject() {
+ if (this.isAfterpayBreakoutDisplay()) {
+ return this.servicePackageRadioAfterpayExperiment;
+ }
+ if (this.hasPricingByDay()) {
+ return this.servicePackageRadioExperiment;
+ }
+ return this.servicePackageRadio;
+ },
getHeaderTextFromCms(cmsWidgetName) {
return this.getCmsContent(cmsWidgetName, "HeaderText");
},