diff --git a/content/messages/ES/short_term_no_amount.json b/content/messages/ES/short_term_no_amount.json
index 630a155037..7c69a06fa9 100644
--- a/content/messages/ES/short_term_no_amount.json
+++ b/content/messages/ES/short_term_no_amount.json
@@ -4,7 +4,7 @@
"offerType": "GENERIC",
"messageType": "PL_GENERIC",
"offerTerm": "{total_payments}",
- "lander": "",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
"variables": {
"offer_id": "${CREDIT_OFFERS_DS.offer_id}",
"vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
@@ -14,10 +14,7 @@
"formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
}
},
-
"headline": [["Compra ahora y paga después.", ["default"]]],
-
"subHeadline": [],
-
"disclaimer": [["Más información", ["default"]]]
}
diff --git a/content/messages/FR/generic.json b/content/messages/FR/generic.json
new file mode 100644
index 0000000000..10ecfedffc
--- /dev/null
+++ b/content/messages/FR/generic.json
@@ -0,0 +1,22 @@
+{
+ "meta": {
+ "offerCountry": "FR",
+ "offerType": "GENERIC",
+ "messageType": "PL_GENERIC",
+ "offerTerm": "{total_payments}",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
+ "experiment_id": "{experiment_id}",
+ "experiment_treatment_id": "{experiment_treatment_id}",
+ "variables": {
+ "offer_id": "${CREDIT_OFFERS_DS.offer_id}",
+ "vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
+ }
+ },
+ "headline": [["Payez en plusieurs fois.", ["default"]]],
+ "subHeadline": [],
+ "disclaimer": [["En savoir plus", ["default"]]]
+}
diff --git a/content/messages/FR/long_term_nq_gtz.json b/content/messages/FR/long_term_nq_gtz.json
new file mode 100644
index 0000000000..930dd40ad0
--- /dev/null
+++ b/content/messages/FR/long_term_nq_gtz.json
@@ -0,0 +1,29 @@
+{
+ "meta": {
+ "offerCountry": "FR",
+ "offerType": "PAY_LATER_LONG_TERM",
+ "offerTerm": "{total_payments}",
+ "messageType": "PLLT_NQ_GZ",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
+ "variables": {
+ "offer_id": "${CREDIT_OFFERS_DS.offer_id}",
+ "vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
+ }
+ },
+ "headline": [
+ ["Payez en plusieurs fois.", ["default", "xsmall"]],
+ ["Payez en plusieurs fois.", ["xsmall.2"]],
+ [
+ "Payez en plusieurs échéances pour vos achats de {formattedMinAmount} à {formattedMaxAmount}",
+ ["small", "medium", "large", "xlarge"]
+ ]
+ ],
+ "subHeadline": [],
+ "disclaimer": [
+ ["En savoir plusEn savoir plus", ["default"]]
+ ]
+}
diff --git a/content/messages/FR/long_term_q_gtz.json b/content/messages/FR/long_term_q_gtz.json
new file mode 100644
index 0000000000..4e8059dd88
--- /dev/null
+++ b/content/messages/FR/long_term_q_gtz.json
@@ -0,0 +1,26 @@
+{
+ "meta": {
+ "offerCountry": "FR",
+ "offerType": "PAY_LATER_LONG_TERM",
+ "messageType": "PLLT_MQ_GZ",
+ "offerTerm": "{total_payments}",
+ "lander": "https://www.paypal.com/credit-presentment/lander/modal",
+ "variables": {
+ "offer_id": "${CREDIT_OFFERS_DS.offer_id}",
+ "vendor_financing_id": "${CREDIT_OFFERS_DS.vendor_financing_id}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}"
+ }
+ },
+ "headline": [
+ ["Payez en plusieurs fois.", ["default", "xsmall"]],
+ ["Payez en plusieurs fois.", ["xsmall.2"]],
+ [["Payez en plusieurs fois, jusqu'à {total_payments} mensualités"], ["small", "medium", "large", "xlarge"]]
+ ],
+ "subHeadline": [],
+ "disclaimer": [
+ ["En savoir plusEn savoir plus", ["default"]]
+ ]
+}
diff --git a/content/modals/FR/long_term.json b/content/modals/FR/long_term.json
new file mode 100644
index 0000000000..3fbe227cb3
--- /dev/null
+++ b/content/modals/FR/long_term.json
@@ -0,0 +1,42 @@
+{
+ "meta": {
+ "product": "PAY_LATER_LONG_TERM",
+ "offerCountry": "FR",
+ "useV5Design": "true",
+ "v5.1": "true",
+ "variables": {
+ "transaction_amount": "${eval(transaction_amount ? transaction_amount : '-')}",
+ "qualifying_offer": "${eval(CREDIT_OFFERS_DS.qualifying_offer ? CREDIT_OFFERS_DS.qualifying_offer : 'false')}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "total_payments": "${CREDIT_OFFERS_DS.total_payments}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}",
+ "formattedTotalCost": "${CREDIT_OFFERS_DS.formattedTotalCost}",
+ "minAmount": "${CREDIT_OFFERS_DS.minAmount}",
+ "maxAmount": "${CREDIT_OFFERS_DS.maxAmount}",
+ "apr": "${CREDIT_OFFERS_DS.apr}",
+ "nominal_rate": "${CREDIT_OFFERS_DS.nominal_rate}",
+ "formattedNominalRatePrecision2": "${CREDIT_OFFERS_DS.formattedNominalRatePrecision2}"
+ }
+ },
+ "content": {
+ "headline": "Paiement en 6, 12 ou 24X",
+ "subheadline": "Paiements mensuels avec intérêts. Sans acompte.",
+ "instructions": [
+ "Choisissez PayPal lors du paiement pour payer en plusieurs fois, en 6, 12 ou 24 échéances.",
+ "Obtenez une décision en quelques secondes et finalisez votre achat.",
+ "Utilisez le paiement automatique pour les remboursements. C'est facile !"
+ ],
+ "disclosure": [
+ "Uniquement pour les particuliers résidents en France. Compte PayPal français obligatoire. Le Paiement en 6, 12 ou 24X est disponible sous réserve d'acceptation, pour les achats de {formattedMinAmount} € à {formattedMaxAmount} €. Un crédit est un engagement contraignant et doit être remboursé, vérifiez votre capacité de remboursement. Pour en savoir plus, consultez les ",
+ [
+ "Conditions générales.",
+ "https://www.paypal.com/fr/digital-wallet/ways-to-pay/buy-now-pay-later",
+ "Conditions générales, se ouvre dans une nouvelle fenêtre"
+ ],
+ " Crédit proposé par PayPal (Europe) S.à r.l. et Cie, S.C.A., 22-24 Boulevard Royal, L-2449, Luxembourg, R.C.S. Luxembourg B 118 349, qui est dûment licencié en tant qu'établissement de crédit du Luxembourg et est sous le contrôle prudentiel de l'autorité de surveillance du Luxembourg, la Commission de Surveillance du Secteur Financier. Cette information est fournie par PayPal."
+ ],
+ "linkToProductList": "Découvrir les autres options de paiement en plusieurs fois"
+ }
+}
diff --git a/content/modals/FR/product_list.json b/content/modals/FR/product_list.json
new file mode 100644
index 0000000000..5cefa3212d
--- /dev/null
+++ b/content/modals/FR/product_list.json
@@ -0,0 +1,29 @@
+{
+ "meta": {
+ "product": "PRODUCT_LIST",
+ "useV5Design": "true",
+ "v5.1": "true",
+ "offerCountry": "FR"
+ },
+ "content": {
+ "headline": "Achetez maintenant, payez plus tardAchetez maintenant, payez plus tard",
+ "disclosure": "Soumis à conditions. Sous réserve d'acceptation par PayPal. Pour en savoir plus sur le Paiement en plusieurs fois de PayPal, sélectionnez l'une des options ci-dessus. ",
+ "instructions": {
+ "payLater": "Sélectionnez une option pour en savoir plus."
+ },
+ "productTiles": {
+ "payLater": [
+ {
+ "header": "Paiement en 4X",
+ "body": "Paiements mensuels sans frais, à compter d'aujourd'hui.",
+ "viewName": "PAY_LATER_SHORT_TERM"
+ },
+ {
+ "header": "Paiement en 6, 12 ou 24X",
+ "body": "Paiements mensuels avec intérêts. Sans acompte.",
+ "viewName": "PAY_LATER_LONG_TERM"
+ }
+ ]
+ }
+ }
+}
diff --git a/content/modals/FR/short_term.json b/content/modals/FR/short_term.json
index 01aa09cd08..a3ee1bff18 100644
--- a/content/modals/FR/short_term.json
+++ b/content/modals/FR/short_term.json
@@ -50,6 +50,7 @@
"Uniquement pour les particuliers résidant en France. Compte PayPal français obligatoire. Le Paiement en 4X est disponible sous réserve d'acceptation, pour les achats de {formattedMinAmount} à {formattedMaxAmount}. Un crédit est un engagement contraignant et doit être remboursé, vérifiez votre capacité de remboursement. Voir les ",
["Conditions générales", "https://www.paypal.com/fr/webapps/mpp/ua/pay-in-4x-full"],
" du Paiement en 4X. Crédit proposé par PayPal (Europe) S.à r.l. et Cie, S.C.A., 22-24 Boulevard Royal, L-2449, Luxembourg, R.C.S. Luxembourg B 118 349, qui est dûment licencié en tant qu'établissement de crédit du Luxembourg et est sous le contrôle prudentiel de l'autorité de surveillance du Luxembourg, la Commission de Surveillance du Secteur Financier. Cette information est fournie par PayPal."
- ]
+ ],
+ "linkToProductList": "Découvrir les autres options de paiement en plusieurs fois"
}
}
diff --git a/content/modals/FR/short_term_en.json b/content/modals/FR/short_term_en.json
index c0e7f1d5ea..ca42e8ebf3 100644
--- a/content/modals/FR/short_term_en.json
+++ b/content/modals/FR/short_term_en.json
@@ -50,6 +50,7 @@
"Only for private individuals residing in France. French PayPal account required. Pay in 4X is available, subject to acceptance, for purchases between {formattedMinAmount} and {formattedMaxAmount}. A loan is a binding commitment and must be repaid, check your repayment capacity. ",
["Terms and Conditions", "https://www.paypal.com/fr/webapps/mpp/ua/pay-in-4x-full"],
". Credit offered by PayPal (Europe) S.à r.l. et Cie, S.C.A., 22-24 Boulevard Royal, L-2449, Luxembourg, Trade and Companies Register of Luxembourg B 118 349, which is duly licensed as a Luxembourg credit institution and falls under the oversight of the supervisory authority of Luxembourg, Commission de Surveillance du Secteur Financier. This information is provided by PayPal."
- ]
+ ],
+ "linkToProductList": "See other ways to pay in installments"
}
}
diff --git a/content/offers/FR/long_term.json b/content/offers/FR/long_term.json
new file mode 100644
index 0000000000..aa3d6560b3
--- /dev/null
+++ b/content/offers/FR/long_term.json
@@ -0,0 +1,37 @@
+{
+ "meta": {
+ "product": "PAY_LATER_LONG_TERM",
+ "offerCountry": "FR",
+ "periodicPayment": "{formattedPeriodicPayment}",
+ "minAmount": "{minAmount}",
+ "maxAmount": "{maxAmount}",
+ "qualifying": "{qualifying_offer}",
+ "amount": "{transaction_amount}",
+ "formattedMinAmount": "{formattedMinAmount}",
+ "formattedMaxAmount": "{formattedMaxAmount}",
+ "apr": "{apr}",
+ "total_payments": "{total_payments}",
+ "formattedTotalCost": "{formattedTotalCost}",
+ "formattedTotalInterest": "{formattedTotalInterest}",
+ "formattedTransactionAmount": "{formattedTransactionAmount}",
+ "variables": {
+ "transaction_amount": "${eval(transaction_amount ? transaction_amount : '-')}",
+ "qualifying_offer": "${eval(CREDIT_OFFERS_DS.qualifying_offer ? CREDIT_OFFERS_DS.qualifying_offer : 'false')}",
+ "financing_code": "${CREDIT_OFFERS_DS.financing_code}",
+ "formattedPeriodicPayment": "${CREDIT_OFFERS_DS.formattedPeriodicPayment}",
+ "total_payments": "${CREDIT_OFFERS_DS.total_payments}",
+ "formattedMinAmount": "${CREDIT_OFFERS_DS.formattedMinAmount}",
+ "formattedMaxAmount": "${CREDIT_OFFERS_DS.formattedMaxAmount}",
+ "formattedTotalCost": "${CREDIT_OFFERS_DS.formattedTotalCost}",
+ "formattedTransactionAmount": "${CREDIT_OFFERS_DS.formattedTransactionAmount}",
+ "minAmount": "${CREDIT_OFFERS_DS.minAmount}",
+ "maxAmount": "${CREDIT_OFFERS_DS.maxAmount}",
+ "apr": "${CREDIT_OFFERS_DS.apr}",
+ "nominal_rate": "${CREDIT_OFFERS_DS.nominal_rate}"
+ }
+ },
+ "content": {
+ "calculator": {},
+ "disclaimer": {}
+ }
+}
diff --git a/demo/helpers/accounts.js b/demo/helpers/accounts.js
index ace552bcfa..0629223aa0 100644
--- a/demo/helpers/accounts.js
+++ b/demo/helpers/accounts.js
@@ -72,8 +72,11 @@ const accounts = [
// 'DEV00000GBPLQ',
// FR
- // 'DEV000000FRPL',
- // 'DEV00000FRPLQ'
+ // DEV0FRGENERIC
+ // DEV000000FRPL
+ // DEV00000FRPLQ
+ // DEV0000FRPLTQ
+ // DEV000FRPLTNQ
// ES
// 'DEV00000ESPLQ',
diff --git a/src/server/locale/FR/mutations/generic.js b/src/server/locale/FR/mutations/generic.js
new file mode 100644
index 0000000000..c6d07351ff
--- /dev/null
+++ b/src/server/locale/FR/mutations/generic.js
@@ -0,0 +1,162 @@
+import Logo from '../../../message/logos';
+import {
+ textWrap,
+ messageLogoWidth,
+ altNoWrap,
+ setLogoTop,
+ logo20x1,
+ xSmallFallback
+} from '../../../message/mediaQueries';
+import { textLogoMutations, flexLogoMutations } from '../../../message/logoMutations';
+
+const headlineBreaks = [
+ {
+ sizes: ['default'],
+ breaks: ['achats']
+ }
+].reduce((acc, item) => {
+ const { sizes, breaks } = item;
+ sizes.forEach(size => {
+ acc.push({
+ tag: size,
+ br: breaks
+ });
+ });
+ return acc;
+}, []);
+
+const flex = [
+ [
+ 'default',
+ {
+ logo: Logo.PP_PAYPAL.WHITE,
+ headline: [
+ {
+ tag: 'xsmall'
+ },
+ {
+ tag: 'medium'
+ }
+ ],
+ disclaimer: ['default']
+ }
+ ],
+ [
+ 'ratio:20x1',
+ {
+ headline: [...headlineBreaks],
+ styles: [logo20x1()]
+ }
+ ],
+ [
+ 'ratio:8x1',
+ {
+ headline: [...headlineBreaks]
+ }
+ ],
+ ...flexLogoMutations
+];
+
+export default {
+ 'layout:flex': flex,
+ 'layout:text': [
+ [
+ 'default',
+ ({ textSize }) => ({
+ styles: [
+ textWrap(textSize * 33, textSize, 'FR'),
+ xSmallFallback(textSize * 16),
+ messageLogoWidth(false, textSize * 4, textSize * 1.25),
+ setLogoTop(textSize * 16)
+ ],
+ logo: Logo.PP_PAYPAL.COLOR,
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ],
+ disclaimer: ['default']
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:right',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 17.4),
+ setLogoTop(textSize * 41.5),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25)
+ ],
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:top',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 17.4),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25)
+ ],
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:alternative',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${textSize * 10.6}px) { .message__content { white-space: nowrap; }}`,
+ textWrap(textSize * 36.5, textSize, 'FR'),
+ xSmallFallback(textSize * 17.75),
+ altNoWrap(textSize * 10.6),
+ messageLogoWidth(textSize * 1.75, textSize * 4, textSize * 1.25)
+ ],
+ logo: Logo.PP_PAYPAL.COLOR[0],
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:none',
+ ({ textSize }) => ({
+ styles: [xSmallFallback(textSize * 20)],
+ logo: false,
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:inline',
+ ({ textSize }) => ({
+ styles: [xSmallFallback(textSize * 20), `.message__logo { width: ${textSize * 4}px }`],
+ logo: Logo.NO_PP_MONOGRAM.COLOR,
+ headline: [
+ {
+ tag: 'default',
+ br: ['achats'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ ...textLogoMutations
+ ]
+};
diff --git a/src/server/locale/FR/mutations/index.js b/src/server/locale/FR/mutations/index.js
index 63bd77f828..6d5a8645bf 100644
--- a/src/server/locale/FR/mutations/index.js
+++ b/src/server/locale/FR/mutations/index.js
@@ -1,15 +1,24 @@
// mutations import here.
+import generic from './generic';
+import longTermQ from './long_term_q_gtz';
+import longTermNq from './long_term_nq_gtz';
import gpl from './gpl';
import gplq from './gplq';
export default function getMutations(id, type) {
switch (id) {
+ case 'PLLT_MQ_GZ':
+ return longTermQ[type];
+ case 'PLLT_NQ_GZ':
+ return longTermNq[type];
case 'GPLQ':
case 'PLST_SQ':
return gplq[type];
case 'GPL':
case 'PLST_NQ':
- default:
return gpl[type];
+ case 'GENERIC':
+ default:
+ return generic[type];
}
}
diff --git a/src/server/locale/FR/mutations/long_term_nq_gtz.js b/src/server/locale/FR/mutations/long_term_nq_gtz.js
new file mode 100644
index 0000000000..ebeadec1f1
--- /dev/null
+++ b/src/server/locale/FR/mutations/long_term_nq_gtz.js
@@ -0,0 +1,211 @@
+import Logo from '../../../message/logos';
+import {
+ xSmallFallback,
+ textWrap,
+ messageLogoWidth,
+ altNoWrap,
+ setLogoTop,
+ addPeriod,
+ logo20x1
+} from '../../../message/mediaQueries';
+import { flexLogoMutations, textLogoMutations } from '../../../message/logoMutations';
+
+const headlineBreaks = [
+ {
+ sizes: ['xsmall']
+ },
+ {
+ sizes: ['medium'],
+ breaks: ['de']
+ }
+].reduce((acc, item) => {
+ const { sizes, breaks } = item;
+ sizes.forEach(size => {
+ acc.push({
+ tag: size,
+ br: breaks
+ });
+ });
+ return acc;
+}, []);
+
+const flex = [
+ [
+ 'default',
+ {
+ logo: Logo.PP_PAYPAL.WHITE,
+ headline: [
+ {
+ tag: 'xsmall'
+ },
+ {
+ tag: 'medium'
+ }
+ ],
+ disclaimer: ['default'],
+ styles: ['.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:20x1',
+ {
+ headline: [...headlineBreaks],
+ styles: [logo20x1(), '.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:8x1',
+ {
+ headline: [...headlineBreaks]
+ }
+ ],
+ ...flexLogoMutations
+];
+export default {
+ 'layout:flex': flex,
+ 'layout:text': [
+ [
+ 'default',
+ ({ textSize }) => ({
+ styles: [
+ textWrap(textSize * 51, textSize, 'FR'),
+ xSmallFallback(textSize * 19.5),
+ messageLogoWidth(false, textSize * 4, textSize * 1.25),
+ setLogoTop(textSize * 20),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['en, ']
+ }
+ ],
+ disclaimer: ['default']
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:right',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 16),
+ setLogoTop(textSize * 51),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['en, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:top',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 16),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['en, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:alternative',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${textSize * 10.6}px) { .message__content { white-space: nowrap; }}`,
+ textWrap(textSize * 46, textSize, 'FR'),
+ xSmallFallback(textSize * 19),
+ altNoWrap(textSize * 10.6),
+ messageLogoWidth(textSize * 1.75, textSize * 4, textSize * 1.25),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR[0],
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['en, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:none',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 21.6),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: false,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['fois.'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:inline',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 21.6),
+ `.message__logo { width: ${textSize * 4}px }`,
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: Logo.NO_PP_MONOGRAM.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['de']
+ },
+ {
+ tag: 'xsmall',
+ br: ['fois.'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ ...textLogoMutations
+ ]
+};
diff --git a/src/server/locale/FR/mutations/long_term_q_gtz.js b/src/server/locale/FR/mutations/long_term_q_gtz.js
new file mode 100644
index 0000000000..7e1cd4c041
--- /dev/null
+++ b/src/server/locale/FR/mutations/long_term_q_gtz.js
@@ -0,0 +1,209 @@
+import Logo from '../../../message/logos';
+import {
+ textWrap,
+ messageLogoWidth,
+ altNoWrap,
+ setLogoTop,
+ logo20x1,
+ xSmallFallback,
+ addPeriod
+} from '../../../message/mediaQueries';
+import { flexLogoMutations, textLogoMutations } from '../../../message/logoMutations';
+
+const headlineBreaks = [
+ {
+ sizes: ['xsmall']
+ },
+ {
+ sizes: ['medium'],
+ breaks: ["jusqu'à"]
+ }
+].reduce((acc, item) => {
+ const { sizes, breaks } = item;
+ sizes.forEach(size => {
+ acc.push({
+ tag: size,
+ br: breaks
+ });
+ });
+ return acc;
+}, []);
+
+const flex = [
+ [
+ 'default',
+ {
+ logo: Logo.PP_PAYPAL.WHITE,
+ headline: [
+ {
+ tag: 'xsmall'
+ },
+ {
+ tag: 'medium'
+ }
+ ],
+ disclaimer: ['default'],
+ styles: ['.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:20x1',
+ {
+ headline: [...headlineBreaks],
+ styles: [logo20x1(), '.message__headline .tag--medium > span:first-child:after { content: "."; }']
+ }
+ ],
+ [
+ 'ratio:8x1',
+ {
+ headline: [...headlineBreaks]
+ }
+ ],
+ ...flexLogoMutations
+];
+export default {
+ 'layout:flex': flex,
+ 'layout:text': [
+ [
+ 'default',
+ ({ textSize }) => ({
+ styles: [
+ textWrap(textSize * 42, textSize, 'FR'),
+ xSmallFallback(textSize * 16),
+ messageLogoWidth(false, textSize * 4, textSize * 1.25),
+ setLogoTop(textSize * 16),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ["jusqu'à"]
+ },
+ {
+ tag: 'xsmall',
+ br: ['en, ']
+ }
+ ],
+ disclaimer: ['default']
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:right',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${
+ textSize * 18.5
+ }px) { .message__headline > .tag--medium > span > span:first-child { white-space: normal; } }`,
+ xSmallFallback(textSize * 12),
+ setLogoTop(textSize * 40),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ]
+ })
+ ],
+ [
+ 'logo.type:primary && logo.position:top',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${
+ textSize * 18.5
+ }px) { .message__headline > .tag--medium > span > span:first-child { white-space: normal; } }`,
+ xSmallFallback(textSize * 12),
+ messageLogoWidth(textSize * 6, textSize * 4, textSize * 1.25),
+ addPeriod(),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ headline: [
+ {
+ tag: 'medium',
+ br: ["jusqu'à"]
+ },
+ {
+ tag: 'xsmall',
+ br: ['en, ']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:alternative',
+ ({ textSize }) => ({
+ styles: [
+ `@media screen and (max-width: ${textSize * 10.6}px) { .message__content { white-space: nowrap; }}`,
+ textWrap(textSize * 34, textSize, 'FR'),
+ xSmallFallback(textSize * 11.5),
+ altNoWrap(textSize * 10.6),
+ messageLogoWidth(textSize * 1.75, textSize * 4, textSize * 1.25),
+ addPeriod()
+ ],
+ logo: Logo.PP_PAYPAL.COLOR[0],
+ headline: [
+ {
+ tag: 'medium',
+ br: ["jusqu'à"]
+ },
+ {
+ tag: 'xsmall',
+ br: ['en,']
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:none',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 20),
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: false,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['mensualités'],
+ replace: [['mensualités.', 'mensualités ']]
+ },
+ {
+ tag: 'xsmall',
+ br: ['fois.'],
+ replace: [['fois.', 'fois']]
+ }
+ ]
+ })
+ ],
+ [
+ 'logo.type:inline',
+ ({ textSize }) => ({
+ styles: [
+ xSmallFallback(textSize * 18),
+ `.message__logo { width: ${textSize * 4}px }`,
+ `@media screen and (max-width: ${
+ textSize * 14.5
+ }px) { .message__headline > .tag--xsmall > span { white-space: normal;} }`
+ ],
+ logo: Logo.NO_PP_MONOGRAM.COLOR,
+ headline: [
+ {
+ tag: 'medium',
+ br: ['mensualités'],
+ replace: [['mensualités.', 'mensualités ']]
+ },
+ {
+ tag: 'xsmall',
+ replace: [['fois.', 'fois']],
+ br: ['fois']
+ }
+ ]
+ })
+ ],
+ ...textLogoMutations
+ ]
+};
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-black_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-black_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..d0932c858e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-black_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-100-snap.png
new file mode 100644
index 0000000000..f8c01e1969
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..5faad7008e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-400-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-400-snap.png
new file mode 100644
index 0000000000..5faad7008e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-100-snap.png
new file mode 100644
index 0000000000..4d414a180e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-1100-snap.png
new file mode 100644
index 0000000000..8caadab731
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-400-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-400-snap.png
new file mode 100644
index 0000000000..dffe1ced20
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-1x4-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-100-snap.png
new file mode 100644
index 0000000000..59ddbe7f6c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-1100-snap.png
new file mode 100644
index 0000000000..2b5c97473e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-400-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-400-snap.png
new file mode 100644
index 0000000000..036629d125
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-20x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-100-snap.png
new file mode 100644
index 0000000000..59ddbe7f6c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-1100-snap.png
new file mode 100644
index 0000000000..5e1610063b
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-400-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-400-snap.png
new file mode 100644
index 0000000000..036629d125
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-blue_ratio-8x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-gray_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-gray_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..56518b12c0
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-gray_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-white-no-border_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-white-no-border_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..bc15a2b0d2
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-white-no-border_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-white_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-white_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..b892f5a155
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/flex/color-white_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-left_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-left_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..c2d06d8fc5
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-left_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-right_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-right_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..764aa2ccb7
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-right_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-top_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-top_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..cee67c658c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.position-top_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative-1000-snap.png
new file mode 100644
index 0000000000..809a5964d8
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..1420515340
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..a93c3b6f24
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..5b156c156b
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-alternative_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline-1000-snap.png
new file mode 100644
index 0000000000..fbdc074f4d
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..78e96c58f4
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..68dc2695bd
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..f5ebf4a164
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-inline_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none-1000-snap.png
new file mode 100644
index 0000000000..7b27f4677b
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..09065829ad
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..1307c30172
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..9806c29f44
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-none_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..2734d67d2e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..9d06ecf06d
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..d466da84cb
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.position-left-200-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.position-left-200-snap.png
new file mode 100644
index 0000000000..cad28e8290
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.position-left-200-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-10-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-10-1000-snap.png
new file mode 100644
index 0000000000..3efb918692
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-10-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-12-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-12-1000-snap.png
new file mode 100644
index 0000000000..c2d06d8fc5
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-12-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-16-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-16-1000-snap.png
new file mode 100644
index 0000000000..e446a172b2
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/logo.type-primary_text.size-16-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-center-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-center-1000-snap.png
new file mode 100644
index 0000000000..3f89d14e0e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-center-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-left-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-left-1000-snap.png
new file mode 100644
index 0000000000..a97402b896
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-left-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-right-1000-snap.png b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-right-1000-snap.png
new file mode 100644
index 0000000000..10ddb39198
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0000FRPLTQ/text/text.align-right-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-black_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-black_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..9332d04875
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-black_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-100-snap.png
new file mode 100644
index 0000000000..f8c01e1969
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..e32ca90acc
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-400-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-400-snap.png
new file mode 100644
index 0000000000..e32ca90acc
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-100-snap.png
new file mode 100644
index 0000000000..4d414a180e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-1100-snap.png
new file mode 100644
index 0000000000..b9e6a7d97c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-400-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-400-snap.png
new file mode 100644
index 0000000000..92e3411e8e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-1x4-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-100-snap.png
new file mode 100644
index 0000000000..59ddbe7f6c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-1100-snap.png
new file mode 100644
index 0000000000..be3a819cd5
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-400-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-400-snap.png
new file mode 100644
index 0000000000..189652149e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-20x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-100-snap.png
new file mode 100644
index 0000000000..59ddbe7f6c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-1100-snap.png
new file mode 100644
index 0000000000..099f3cb3fd
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-400-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-400-snap.png
new file mode 100644
index 0000000000..189652149e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-blue_ratio-8x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-gray_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-gray_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..b40a004072
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-gray_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-white-no-border_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-white-no-border_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..ffe4b133e1
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-white-no-border_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-white_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-white_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..834284f198
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/flex/color-white_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-left_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-left_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..aca45e9078
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-left_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-right_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-right_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..f00a58bd3c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-right_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-top_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-top_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..efdceceb94
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.position-top_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative-1000-snap.png
new file mode 100644
index 0000000000..c512c0d35a
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..722a4d6847
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..133b3b0ca2
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..c614dc3174
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-alternative_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline-1000-snap.png
new file mode 100644
index 0000000000..bbbdc195af
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..4611baab9c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..df8d259c57
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..c7f25da590
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-inline_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none-1000-snap.png
new file mode 100644
index 0000000000..5aaec584d2
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..db1f46e293
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..7774cd93fd
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..6bb8a876c8
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-none_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..40ef1593ab
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..b1e8258067
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..31b8892719
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.position-left-200-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.position-left-200-snap.png
new file mode 100644
index 0000000000..bd6a88c407
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.position-left-200-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-10-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-10-1000-snap.png
new file mode 100644
index 0000000000..dc05829f9d
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-10-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-12-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-12-1000-snap.png
new file mode 100644
index 0000000000..aca45e9078
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-12-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-16-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-16-1000-snap.png
new file mode 100644
index 0000000000..74881b40ac
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/logo.type-primary_text.size-16-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-center-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-center-1000-snap.png
new file mode 100644
index 0000000000..a142d81478
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-center-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-left-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-left-1000-snap.png
new file mode 100644
index 0000000000..0862d73380
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-left-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-right-1000-snap.png b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-right-1000-snap.png
new file mode 100644
index 0000000000..13c24ffae5
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV000FRPLTNQ/text/text.align-right-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-black_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-black_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..9ef7cb8571
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-black_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-100-snap.png
new file mode 100644
index 0000000000..f8c01e1969
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..ac95f88737
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-400-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-400-snap.png
new file mode 100644
index 0000000000..ac95f88737
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-100-snap.png
new file mode 100644
index 0000000000..4d414a180e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-1100-snap.png
new file mode 100644
index 0000000000..8ed3e44f53
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-400-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-400-snap.png
new file mode 100644
index 0000000000..3393b26fa7
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-1x4-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-100-snap.png
new file mode 100644
index 0000000000..59ddbe7f6c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-1100-snap.png
new file mode 100644
index 0000000000..a576369ae2
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-400-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-400-snap.png
new file mode 100644
index 0000000000..b0145fc68d
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-20x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-100-snap.png
new file mode 100644
index 0000000000..59ddbe7f6c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-1100-snap.png
new file mode 100644
index 0000000000..36c6eac212
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-400-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-400-snap.png
new file mode 100644
index 0000000000..b0145fc68d
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-blue_ratio-8x1-400-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-gray_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-gray_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..a00d163fb5
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-gray_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-white-no-border_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-white-no-border_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..72aeaa5580
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-white-no-border_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-white_ratio-1x1-1100-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-white_ratio-1x1-1100-snap.png
new file mode 100644
index 0000000000..39d6bd5a83
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/flex/color-white_ratio-1x1-1100-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-left_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-left_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..cfa097ddd1
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-left_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-right_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-right_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..95838c445f
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-right_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-top_logo.type-primary-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-top_logo.type-primary-1000-snap.png
new file mode 100644
index 0000000000..89a72e53eb
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.position-top_logo.type-primary-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative-1000-snap.png
new file mode 100644
index 0000000000..5ace11a3cf
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..392593561f
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..e7107658b4
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..2927f75ca7
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-alternative_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline-1000-snap.png
new file mode 100644
index 0000000000..ab21fa8b29
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..4ed3518756
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..50bbef7b13
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..699890565c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-inline_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none-1000-snap.png
new file mode 100644
index 0000000000..674fb5af50
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..1076596ea2
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..9940e38a30
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..5a3b72a26a
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-none_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-grayscale-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-grayscale-1000-snap.png
new file mode 100644
index 0000000000..762da593f8
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-grayscale-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-monochrome-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-monochrome-1000-snap.png
new file mode 100644
index 0000000000..a08d0fe4de
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-monochrome-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-white-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-white-1000-snap.png
new file mode 100644
index 0000000000..1e09284aaa
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.color-white-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.position-left-200-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.position-left-200-snap.png
new file mode 100644
index 0000000000..fc187daa42
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.position-left-200-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-10-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-10-1000-snap.png
new file mode 100644
index 0000000000..73bf249841
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-10-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-12-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-12-1000-snap.png
new file mode 100644
index 0000000000..cfa097ddd1
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-12-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-16-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-16-1000-snap.png
new file mode 100644
index 0000000000..4262da981e
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/logo.type-primary_text.size-16-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-center-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-center-1000-snap.png
new file mode 100644
index 0000000000..5f2f7505ba
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-center-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-left-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-left-1000-snap.png
new file mode 100644
index 0000000000..810115105c
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-left-1000-snap.png differ
diff --git a/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-right-1000-snap.png b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-right-1000-snap.png
new file mode 100644
index 0000000000..3d731d2831
Binary files /dev/null and b/tests/functional/snapshots/FR/DEV0FRGENERIC/text/text.align-right-1000-snap.png differ
diff --git a/tests/functional/spec/FR/accounts.js b/tests/functional/spec/FR/accounts.js
index 8acdb22bb9..db3542df77 100644
--- a/tests/functional/spec/FR/accounts.js
+++ b/tests/functional/spec/FR/accounts.js
@@ -1 +1 @@
-export default ['DEV000000FRPL', 'DEV00000FRPLQ'];
+export default ['DEV0FRGENERIC', 'DEV000000FRPL', 'DEV00000FRPLQ', 'DEV0000FRPLTQ', 'DEV000FRPLTNQ'];
diff --git a/tests/functional/v2/config/FR/DEV_FR_MULTI.js b/tests/functional/v2/config/FR/DEV_FR_MULTI.js
new file mode 100644
index 0000000000..6f0840a1d3
--- /dev/null
+++ b/tests/functional/v2/config/FR/DEV_FR_MULTI.js
@@ -0,0 +1,17 @@
+export const DEV_FR_MULTI = {
+ testFileName: 'multiProduct',
+ country: 'FR',
+ description: 'FR Multi-product merchant',
+ amounts: [
+ {
+ value: '0.00',
+ message: 'Product list modal functionality',
+ expectedValue: 'Achetez maintenant, payez plus tard',
+ modalContent: {
+ headline: 'Achetez maintenant, payez plus tard',
+ shortTerm: 'Payez en 4X sans frais',
+ longTerm: 'Paiement en 6, 12 ou 24X'
+ }
+ }
+ ]
+};
diff --git a/tests/functional/v2/config/FR/index.js b/tests/functional/v2/config/FR/index.js
index 8a228ba3b8..ad97bc223e 100644
--- a/tests/functional/v2/config/FR/index.js
+++ b/tests/functional/v2/config/FR/index.js
@@ -1 +1,2 @@
export { DEV_FR_SHORT_TERM } from './DEV_FR_SHORT_TERM';
+export { DEV_FR_MULTI } from './DEV_FR_MULTI';
diff --git a/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png
new file mode 100644
index 0000000000..05ec62e425
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png
new file mode 100644
index 0000000000..1c4bdbefca
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png
new file mode 100644
index 0000000000..3f0013d932
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png
new file mode 100644
index 0000000000..eec74e2518
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/api/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png
new file mode 100644
index 0000000000..7d1ce2d854
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png
new file mode 100644
index 0000000000..7d1ce2d854
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png
new file mode 100644
index 0000000000..20f08daa44
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png
new file mode 100644
index 0000000000..7c53b40507
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/standalone/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png
new file mode 100644
index 0000000000..190f29f70d
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/desktop/0-Amount_persists_between_views-desktop-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png
new file mode 100644
index 0000000000..f8d7ca2591
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/desktop/0-Opens_to_product_list_view-desktop-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png
new file mode 100644
index 0000000000..3a97ae4cde
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/mobile/0-Amount_persists_between_views-mobile-snap.png differ
diff --git a/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png
new file mode 100644
index 0000000000..c9ddab49ee
Binary files /dev/null and b/tests/functional/v2/snapshots/modal/webpage/FR/DEV_FR_MULTI/mobile/0-Opens_to_product_list_view-mobile-snap.png differ
diff --git a/tests/functional/v2/spec/snapshot-tests/api/multiProduct.test.js b/tests/functional/v2/spec/snapshot-tests/api/multiProduct.test.js
index cc1c4bf004..dc0daff317 100644
--- a/tests/functional/v2/spec/snapshot-tests/api/multiProduct.test.js
+++ b/tests/functional/v2/spec/snapshot-tests/api/multiProduct.test.js
@@ -37,7 +37,7 @@ descFn.each(filterPermutations([LOCALE_CONFIG], [ACCOUNT]))(
});
test(`Amount:${amount} - Amount persists between views - ${viewport}`, async () => {
- await viewsShareAmount(modalFrame, getTestName(country, integration, account, amount, viewport));
+ await viewsShareAmount(modalFrame, getTestName(country, integration, account, amount, viewport), account);
});
}
);
diff --git a/tests/functional/v2/spec/snapshot-tests/sdk/multiProduct.test.js b/tests/functional/v2/spec/snapshot-tests/sdk/multiProduct.test.js
index 33eb2cc812..f60dc7d82f 100644
--- a/tests/functional/v2/spec/snapshot-tests/sdk/multiProduct.test.js
+++ b/tests/functional/v2/spec/snapshot-tests/sdk/multiProduct.test.js
@@ -51,7 +51,7 @@ descFn.each(filterPermutations([LOCALE_CONFIG], [ACCOUNT]))(
});
test.skip(`Amount:${amount} - Amount persists between views - ${viewport}`, async () => {
- await viewsShareAmount(modalFrame, getTestName(country, integration, account, amount, viewport));
+ await viewsShareAmount(modalFrame, getTestName(country, integration, account, amount, viewport), account);
});
test(`Amount:${amount} - X button closes modal - ${viewport}`, async () => {
diff --git a/tests/functional/v2/spec/snapshot-tests/standalone/multiProduct.test.js b/tests/functional/v2/spec/snapshot-tests/standalone/multiProduct.test.js
index c1f538c44b..e89d732a70 100644
--- a/tests/functional/v2/spec/snapshot-tests/standalone/multiProduct.test.js
+++ b/tests/functional/v2/spec/snapshot-tests/standalone/multiProduct.test.js
@@ -49,7 +49,7 @@ descFn.each(filterPermutations([LOCALE_CONFIG], [ACCOUNT]))(
});
test(`Amount:${amount} - Amount persists between views - ${viewport}`, async () => {
- await viewsShareAmount(modalFrame, getTestName(country, integration, account, amount, viewport));
+ await viewsShareAmount(modalFrame, getTestName(country, integration, account, amount, viewport), account);
});
test(`Amount:${amount} - X button closes modal - ${viewport}`, async () => {
diff --git a/tests/functional/v2/spec/snapshot-tests/webpage/multiProduct.test.js b/tests/functional/v2/spec/snapshot-tests/webpage/multiProduct.test.js
index d96af00c05..33d2504636 100644
--- a/tests/functional/v2/spec/snapshot-tests/webpage/multiProduct.test.js
+++ b/tests/functional/v2/spec/snapshot-tests/webpage/multiProduct.test.js
@@ -32,7 +32,7 @@ descFn.each(filterPermutations([LOCALE_CONFIG], [ACCOUNT]))(
});
test(`Amount:${amount} - Amount persists between views - ${viewport}`, async () => {
- await viewsShareAmount(page, getTestName(country, integration, account, amount, viewport));
+ await viewsShareAmount(page, getTestName(country, integration, account, amount, viewport), account);
});
}
);
diff --git a/tests/functional/v2/testFn/longTerm.js b/tests/functional/v2/testFn/longTerm.js
index 81261b6aa7..b22a2d8b76 100644
--- a/tests/functional/v2/testFn/longTerm.js
+++ b/tests/functional/v2/testFn/longTerm.js
@@ -19,7 +19,7 @@ const {
} = selectors;
/**
- * Ensures the below threshold calcultor warning displays for amounts below the minimum qualifying amount.
+ * Ensures the below threshold calculator warning displays for amounts below the minimum qualifying amount.
*/
export const belowThresholdErr = async (contentWindow, modalContent, testName) => {
await contentWindow.waitForSelector(contentWrapper);
@@ -30,7 +30,7 @@ export const belowThresholdErr = async (contentWindow, modalContent, testName) =
};
/**
- * Ensures the above threshold calcultor warning displays for amounts above the maximum qualifying amount.
+ * Ensures the above threshold calculator warning displays for amounts above the maximum qualifying amount.
*/
export const aboveThresholdErr = async (contentWindow, modalContent, testName) => {
await contentWindow.waitForSelector(contentWrapper);
diff --git a/tests/functional/v2/testFn/multi.js b/tests/functional/v2/testFn/multi.js
index 172ef27025..5ca2032f26 100644
--- a/tests/functional/v2/testFn/multi.js
+++ b/tests/functional/v2/testFn/multi.js
@@ -48,7 +48,7 @@ export const clickProductListTiles = async (contentWindow, modalContent, account
await page.waitFor(2 * 1000);
};
- if (account !== 'DEV_DE_MULTI' && account !== 'DEV_ES_MULTI' && account !== 'DEV_IT_MULTI') {
+ if (account === 'DEV_US_MULTI') {
// Switch to long term view
await switchViews(2, 'shortTerm');
@@ -58,7 +58,7 @@ export const clickProductListTiles = async (contentWindow, modalContent, account
// Switch to no interest view.
// NOTE: PPC NI tile is separated from the pay later tiles as a means to distinguish product categories in the product list modal.
await switchViews(5, 'noInterest');
- } else if (account === 'DEV_ES_MULTI' || account === 'DEV_IT_MULTI') {
+ } else if (account === 'DEV_ES_MULTI' || account === 'DEV_IT_MULTI' || account === 'DEV_FR_MULTI') {
// Switch to long term view
await switchViews(2, 'shortTerm');
@@ -73,7 +73,7 @@ export const clickProductListTiles = async (contentWindow, modalContent, account
/**
* Ensures that the starting amount is shared between views.
*/
-export const viewsShareAmount = async (contentWindow, testName) => {
+export const viewsShareAmount = async (contentWindow, testName, account) => {
await contentWindow.waitForSelector(contentWrapper);
await contentWindow.waitForSelector(`${tile}:nth-child(2)`);
await contentWindow.click(`${tile}:nth-child(2)`);
@@ -91,10 +91,12 @@ export const viewsShareAmount = async (contentWindow, testName) => {
await contentWindow.click(`${tile}:nth-child(3)`);
await page.waitFor(3 * 1000);
- await contentWindow.waitForSelector(input);
- const inputFieldVal = await contentWindow.$eval(input, element => element.value);
-
- expect(subheadline).not.toContain(inputFieldVal);
+ // FR long term modal does not have a calculator
+ if (account !== 'DEV_FR_MULTI') {
+ await contentWindow.waitForSelector(input);
+ const inputFieldVal = await contentWindow.$eval(input, element => element.value);
+ expect(subheadline).not.toContain(inputFieldVal);
+ }
await modalSnapshot(testName, contentWindow);
};
diff --git a/utils/devServerProxy/config/ES/index.js b/utils/devServerProxy/config/ES/index.js
index 5a4f97491d..3cb429621b 100644
--- a/utils/devServerProxy/config/ES/index.js
+++ b/utils/devServerProxy/config/ES/index.js
@@ -22,7 +22,7 @@ export default {
{
amount: 0,
template: 'short_term_no_amount.json',
- product: 'PAY_LATER_SHORT_TERM'
+ product: 'GENERIC'
},
{
amount: 0.01,
diff --git a/utils/devServerProxy/config/FR/index.js b/utils/devServerProxy/config/FR/index.js
index f08006818d..7defb1da12 100644
--- a/utils/devServerProxy/config/FR/index.js
+++ b/utils/devServerProxy/config/FR/index.js
@@ -1,6 +1,85 @@
// Note that these values are solely mock structures for development purposes
// that are not guaranteed to be reflective of what is in production
export default {
+ DEV_FR_MULTI: {
+ country: 'FR',
+ modalViews: [
+ {
+ template: 'product_list.json',
+ product: 'PRODUCT_LIST'
+ },
+ {
+ template: 'short_term.json',
+ product: 'PAY_LATER_SHORT_TERM'
+ },
+ {
+ template: 'long_term.json',
+ offersTemplate: 'long_term.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ messageThresholds: [
+ {
+ amount: 0,
+ template: 'generic.json',
+ product: 'GENERIC'
+ },
+ {
+ amount: 0.01,
+ template: 'gpl.json',
+ product: 'PAY_LATER_SHORT_TERM'
+ },
+ {
+ amount: 30,
+ template: 'gplq.json',
+ product: 'PAY_LATER_SHORT_TERM'
+ },
+ {
+ amount: 500,
+ template: 'long_term_q_gtz.json',
+ product: 'PAY_LATER_LONG_TERM'
+ },
+ {
+ amount: 2900.01,
+ template: 'long_term_nq_gtz.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ offers: {
+ PAY_LATER_SHORT_TERM: [
+ {
+ totalPayments: 3,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 30,
+ maxAmount: 2000
+ }
+ ],
+ PAY_LATER_LONG_TERM: [
+ {
+ totalPayments: 6,
+ apr: 14.99,
+ nominalRate: 14.99,
+ minAmount: 120,
+ maxAmount: 2900
+ },
+ {
+ totalPayments: 12,
+ apr: 14.99,
+ nominalRate: 14.99,
+ minAmount: 120,
+ maxAmount: 2900
+ },
+ {
+ totalPayments: 24,
+ apr: 14.99,
+ nominalRate: 14.99,
+ minAmount: 240,
+ maxAmount: 2900
+ }
+ ]
+ }
+ },
DEV_FR_SHORT_TERM: {
country: 'FR',
modalViews: [
@@ -37,5 +116,57 @@ export default {
}
]
}
+ },
+ DEV_FR_LONG_TERM: {
+ country: 'FR',
+ modalViews: [
+ {
+ template: 'long_term.json',
+ offersTemplate: 'long_term.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ messageThresholds: [
+ {
+ amount: 0,
+ template: 'long_term_nq_gtz.json',
+ product: 'PAY_LATER_LONG_TERM'
+ },
+ {
+ amount: 120,
+ template: 'long_term_q_gtz.json',
+ product: 'PAY_LATER_LONG_TERM'
+ },
+ {
+ amount: 2900.01,
+ template: 'long_term_nq_gtz.json',
+ product: 'PAY_LATER_LONG_TERM'
+ }
+ ],
+ offers: {
+ PAY_LATER_LONG_TERM: [
+ {
+ totalPayments: 6,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 120,
+ maxAmount: 2900
+ },
+ {
+ totalPayments: 12,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 120,
+ maxAmount: 2900
+ },
+ {
+ totalPayments: 24,
+ apr: 0,
+ nominalRate: 0,
+ minAmount: 240,
+ maxAmount: 2900
+ }
+ ]
+ }
}
};
diff --git a/utils/devServerProxy/config/IT/index.js b/utils/devServerProxy/config/IT/index.js
index fd5c457d3a..dff88a0a54 100644
--- a/utils/devServerProxy/config/IT/index.js
+++ b/utils/devServerProxy/config/IT/index.js
@@ -22,7 +22,7 @@ export default {
{
amount: 0,
template: 'short_term_no_amount.json',
- product: 'PAY_LATER_SHORT_TERM'
+ product: 'GENERIC'
},
{
amount: 0.01,
diff --git a/utils/devServerProxy/config/devAccounts.config.js b/utils/devServerProxy/config/devAccounts.config.js
index 45e70a8c4f..e9b21a46b0 100644
--- a/utils/devServerProxy/config/devAccounts.config.js
+++ b/utils/devServerProxy/config/devAccounts.config.js
@@ -104,8 +104,11 @@ export default {
DEV000000GBPL: ['GB', ['short_term'], 'pl'],
DEV00000GBPLQ: ['GB', ['short_term'], 'plq'],
+ DEV0FRGENERIC: ['FR', ['short_term'], 'generic'],
DEV000000FRPL: ['FR', ['short_term'], 'gpl'],
DEV00000FRPLQ: ['FR', ['short_term'], 'gplq'],
+ DEV0000FRPLTQ: ['FR', ['long_term'], 'long_term_q_gtz'],
+ DEV000FRPLTNQ: ['FR', ['long_term'], 'long_term_nq_gtz'],
DEV000000AUPL: ['AU', ['short_term'], 'gpl'],
DEV00000AUPLQ: ['AU', ['short_term'], 'gplq'],