Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions e2e/pro.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ test.describe('Pro Page', () => {
})

test.describe('Product Display', () => {
test('displays product pricing cards', async ({ page }) => {
test('displays the buy box', async ({ page }) => {
await skipIfPricingUnavailable(page)
const pricingCard = page.locator('[data-testid="pricing-card"]').first()
await expect(pricingCard).toBeVisible({ timeout: 10000 })
const buyBox = page.locator('[data-testid="pro-buy-box"]')
await expect(buyBox).toBeVisible({ timeout: 10000 })
})

test('does NOT show "pricing unavailable" message when products are available', async ({ page }) => {
Expand All @@ -48,23 +48,22 @@ test.describe('Pro Page', () => {
const errorMessage = page.getByText(
'Pricing information is currently unavailable'
)
await page.waitForTimeout(2000)
await expect(errorMessage).not.toBeVisible()
})

test('displays yearly and lifetime products', async ({ page }) => {
test('displays yearly and lifetime term options', async ({ page }) => {
await skipIfPricingUnavailable(page)
await page.waitForLoadState('networkidle')
await page.waitForTimeout(2000)
await expect(page.getByText('Pro Yearly')).toBeVisible()
await expect(page.getByText('Pro Lifetime')).toBeVisible()
await expect(page.getByRole('radio', { name: /Yearly/ })).toBeVisible()
await expect(page.getByRole('radio', { name: /Lifetime/ })).toBeVisible()
})

test('pricing cards have checkout CTAs with experiment query params', async ({ page }) => {
test('buy box CTA carries experiment query params', async ({ page }) => {
await skipIfPricingUnavailable(page)
await page.waitForLoadState('networkidle')
await page.waitForTimeout(2000)
const checkoutButtons = page.getByRole('link', { name: /Get (Started|Instant Access)/ })
const checkoutButtons = page.getByRole('link', {
name: /Get (Started|Instant Access)/,
})
await expect(checkoutButtons.first()).toBeVisible()

const href = await checkoutButtons.first().getAttribute('href')
Expand Down
27 changes: 27 additions & 0 deletions messages/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Hol dir Pro",
"subheading": "Eine Lizenz, alle Funktionen. Wähle nur, wie lange du Updates möchtest.",
"termAriaLabel": "Lizenzlaufzeit",
"cta": "Loslegen",
"ctaValueCopy": "Sofortzugang erhalten",
"yearly": {
"title": "Jährlich",
"subtitle": "Updates & Support für 1 Jahr",
"badgeLabel": "Am beliebtesten",
"priceSuffix": "/Jahr",
"ctaNote": "Einmalige Zahlung — keine automatische Verlängerung."
},
"lifetime": {
"title": "Lebenslang",
"subtitle": "Updates für immer",
"priceSuffix": "einmalig",
"ctaNote": "Etwa {years} Jahre Jährlich — danach für immer $0.",
"ctaNoteSimple": "Einmal zahlen — Updates für immer."
},
"guaranteeLink": "14 Tage Geld-zurück-Garantie",
"guaranteeSuffix": ", ohne Angabe von Gründen",
"payments": "Karte, PayPal oder Bitcoin",
"proof": "5.000+ aktive Shops · Jährlich wird auf Lebenslang angerechnet",
"unavailableTitle": "Preise vorübergehend nicht verfügbar",
"unavailableDescription": "Die Preisinformationen sind derzeit nicht verfügbar. Bitte versuche es später erneut."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Get Pro",
"subheading": "One license, all features. Just pick how long you want updates.",
"termAriaLabel": "License term",
"cta": "Get Started",
"ctaValueCopy": "Get Instant Access",
"yearly": {
"title": "Yearly",
"subtitle": "Updates & support for 1 year",
"badgeLabel": "Most Popular",
"priceSuffix": "/yr",
"ctaNote": "One-time payment — never auto-renews."
},
"lifetime": {
"title": "Lifetime",
"subtitle": "Updates forever",
"priceSuffix": "once",
"ctaNote": "About {years} years of Yearly — then $0 forever.",
"ctaNoteSimple": "Pay once — updates forever."
},
"guaranteeLink": "14-day money-back guarantee",
"guaranteeSuffix": ", no reason required",
"payments": "Card, PayPal or Bitcoin",
"proof": "5,000+ active stores · Yearly credits toward Lifetime",
"unavailableTitle": "Pricing temporarily unavailable",
"unavailableDescription": "Pricing information is currently unavailable. Please try again later."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Consigue Pro",
"subheading": "Una licencia, todas las funciones. Solo elige cuánto tiempo quieres actualizaciones.",
"termAriaLabel": "Duración de la licencia",
"cta": "Empezar",
"ctaValueCopy": "Obtén acceso instantáneo",
"yearly": {
"title": "Anual",
"subtitle": "Actualizaciones y soporte durante 1 año",
"badgeLabel": "Más popular",
"priceSuffix": "/año",
"ctaNote": "Pago único — nunca se renueva automáticamente."
},
"lifetime": {
"title": "De por vida",
"subtitle": "Actualizaciones para siempre",
"priceSuffix": "una vez",
"ctaNote": "Aproximadamente {years} años de Anual — después $0 para siempre.",
"ctaNoteSimple": "Paga una vez — actualizaciones para siempre."
},
"guaranteeLink": "Garantía de devolución de 14 días",
"guaranteeSuffix": ", sin dar explicaciones",
"payments": "Tarjeta, PayPal o Bitcoin",
"proof": "Más de 5.000 tiendas activas · El plan Anual se descuenta del De por vida",
"unavailableTitle": "Precios temporalmente no disponibles",
"unavailableDescription": "La información de precios no está disponible en este momento. Inténtalo de nuevo más tarde."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Passez à Pro",
"subheading": "Une licence, toutes les fonctionnalités. Choisissez simplement la durée des mises à jour.",
"termAriaLabel": "Durée de la licence",
"cta": "Commencer",
"ctaValueCopy": "Accédez immédiatement",
"yearly": {
"title": "Annuel",
"subtitle": "Mises à jour et support pendant 1 an",
"badgeLabel": "Le plus populaire",
"priceSuffix": "/an",
"ctaNote": "Paiement unique — jamais renouvelé automatiquement."
},
"lifetime": {
"title": "À vie",
"subtitle": "Mises à jour pour toujours",
"priceSuffix": "une fois",
"ctaNote": "Environ {years} ans d'Annuel — puis $0 pour toujours.",
"ctaNoteSimple": "Payez une fois — mises à jour pour toujours."
},
"guaranteeLink": "Garantie satisfait ou remboursé de 14 jours",
"guaranteeSuffix": ", sans justification",
"payments": "Carte, PayPal ou Bitcoin",
"proof": "Plus de 5 000 boutiques actives · L'Annuel est crédité vers l'À vie",
"unavailableTitle": "Tarifs temporairement indisponibles",
"unavailableDescription": "Les informations tarifaires sont actuellement indisponibles. Veuillez réessayer plus tard."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Passa a Pro",
"subheading": "Una licenza, tutte le funzionalità. Scegli solo per quanto tempo vuoi gli aggiornamenti.",
"termAriaLabel": "Durata della licenza",
"cta": "Inizia",
"ctaValueCopy": "Ottieni accesso immediato",
"yearly": {
"title": "Annuale",
"subtitle": "Aggiornamenti e supporto per 1 anno",
"badgeLabel": "Più popolare",
"priceSuffix": "/anno",
"ctaNote": "Pagamento unico — non si rinnova mai automaticamente."
},
"lifetime": {
"title": "A vita",
"subtitle": "Aggiornamenti per sempre",
"priceSuffix": "una tantum",
"ctaNote": "Circa {years} anni di Annuale — poi $0 per sempre.",
"ctaNoteSimple": "Paghi una volta — aggiornamenti per sempre."
},
"guaranteeLink": "Garanzia di rimborso di 14 giorni",
"guaranteeSuffix": ", senza motivazione",
"payments": "Carta, PayPal o Bitcoin",
"proof": "Oltre 5.000 negozi attivi · L'Annuale viene accreditato sull'A vita",
"unavailableTitle": "Prezzi temporaneamente non disponibili",
"unavailableDescription": "Le informazioni sui prezzi non sono al momento disponibili. Riprova più tardi."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Proを購入",
"subheading": "1つのライセンスで全機能。アップデート期間を選ぶだけ。",
"termAriaLabel": "ライセンス期間",
"cta": "始める",
"ctaValueCopy": "すぐにアクセス",
"yearly": {
"title": "年間",
"subtitle": "1年間のアップデートとサポート",
"badgeLabel": "最も人気",
"priceSuffix": "/年",
"ctaNote": "一回払い — 自動更新はありません。"
},
"lifetime": {
"title": "買い切り",
"subtitle": "アップデートは永久",
"priceSuffix": "一回払い",
"ctaNote": "年間約{years}年分 — その後は永久に$0。",
"ctaNoteSimple": "一度の支払いで、アップデートは永久。"
},
"guaranteeLink": "14日間の返金保証",
"guaranteeSuffix": "、理由は不要です",
"payments": "カード、PayPal、Bitcoin",
"proof": "5,000以上のアクティブストア · 年間プランは買い切りに充当されます",
"unavailableTitle": "価格情報を一時的に取得できません",
"unavailableDescription": "現在、価格情報を取得できません。しばらくしてからもう一度お試しください。"
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Pro 구매",
"subheading": "하나의 라이선스, 모든 기능. 업데이트 기간만 선택하세요.",
"termAriaLabel": "라이선스 기간",
"cta": "시작하기",
"ctaValueCopy": "즉시 이용하기",
"yearly": {
"title": "연간",
"subtitle": "1년간 업데이트 및 지원",
"badgeLabel": "가장 인기",
"priceSuffix": "/년",
"ctaNote": "일회성 결제 — 자동 갱신되지 않습니다."
},
"lifetime": {
"title": "평생",
"subtitle": "영구 업데이트",
"priceSuffix": "1회",
"ctaNote": "연간 약 {years}년치 — 이후 영구적으로 $0.",
"ctaNoteSimple": "한 번만 결제 — 업데이트는 영구적."
},
"guaranteeLink": "14일 환불 보장",
"guaranteeSuffix": ", 이유는 묻지 않습니다",
"payments": "카드, PayPal 또는 Bitcoin",
"proof": "5,000개 이상의 활성 매장 · 연간 결제분은 평생 라이선스에 반영됩니다",
"unavailableTitle": "가격 정보를 일시적으로 사용할 수 없습니다",
"unavailableDescription": "현재 가격 정보를 사용할 수 없습니다. 나중에 다시 시도해 주세요."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Koop Pro",
"subheading": "Eén licentie, alle functies. Kies alleen hoe lang je updates wilt.",
"termAriaLabel": "Licentieduur",
"cta": "Aan de slag",
"ctaValueCopy": "Krijg direct toegang",
"yearly": {
"title": "Jaarlijks",
"subtitle": "Updates en support voor 1 jaar",
"badgeLabel": "Meest populair",
"priceSuffix": "/jaar",
"ctaNote": "Eenmalige betaling — wordt nooit automatisch verlengd."
},
"lifetime": {
"title": "Levenslang",
"subtitle": "Altijd updates",
"priceSuffix": "eenmalig",
"ctaNote": "Ongeveer {years} jaar Jaarlijks — daarna voor altijd $0.",
"ctaNoteSimple": "Eén keer betalen — voor altijd updates."
},
"guaranteeLink": "14 dagen geld-terug-garantie",
"guaranteeSuffix": ", zonder opgaaf van redenen",
"payments": "Kaart, PayPal of Bitcoin",
"proof": "5.000+ actieve winkels · Jaarlijks wordt verrekend met Levenslang",
"unavailableTitle": "Prijzen tijdelijk niet beschikbaar",
"unavailableDescription": "Prijsinformatie is momenteel niet beschikbaar. Probeer het later opnieuw."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "Adquira o Pro",
"subheading": "Uma licença, todos os recursos. Escolha apenas por quanto tempo quer atualizações.",
"termAriaLabel": "Duração da licença",
"cta": "Começar",
"ctaValueCopy": "Obtenha acesso imediato",
"yearly": {
"title": "Anual",
"subtitle": "Atualizações e suporte por 1 ano",
"badgeLabel": "Mais popular",
"priceSuffix": "/ano",
"ctaNote": "Pagamento único — nunca renova automaticamente."
},
"lifetime": {
"title": "Vitalício",
"subtitle": "Atualizações para sempre",
"priceSuffix": "uma vez",
"ctaNote": "Cerca de {years} anos do Anual — depois $0 para sempre.",
"ctaNoteSimple": "Pague uma vez — atualizações para sempre."
},
"guaranteeLink": "Garantia de reembolso de 14 dias",
"guaranteeSuffix": ", sem precisar justificar",
"payments": "Cartão, PayPal ou Bitcoin",
"proof": "Mais de 5.000 lojas ativas · O Anual é creditado no Vitalício",
"unavailableTitle": "Preços temporariamente indisponíveis",
"unavailableDescription": "As informações de preços estão indisponíveis no momento. Tente novamente mais tarde."
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
27 changes: 27 additions & 0 deletions messages/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,33 @@
"description": "Take payments with any WooCommerce-compatible gateway, not just the built-in options."
}
},
"buyBox": {
"heading": "购买 Pro",
"subheading": "一个许可证,全部功能。只需选择更新时长。",
"termAriaLabel": "许可证期限",
"cta": "开始使用",
"ctaValueCopy": "立即获取访问权限",
"yearly": {
"title": "年付",
"subtitle": "1年更新和支持",
"badgeLabel": "最受欢迎",
"priceSuffix": "/年",
"ctaNote": "一次性付款 — 永不自动续订。"
},
"lifetime": {
"title": "终身",
"subtitle": "永久更新",
"priceSuffix": "一次性",
"ctaNote": "约等于{years}年年付 — 之后永久$0。",
"ctaNoteSimple": "一次付款 — 永久更新。"
},
"guaranteeLink": "14 天退款保证",
"guaranteeSuffix": ",无需说明理由",
"payments": "银行卡、PayPal 或 Bitcoin",
"proof": "5,000+ 活跃商店 · 年付费用可抵扣终身版",
"unavailableTitle": "价格信息暂时不可用",
"unavailableDescription": "价格信息当前不可用。请稍后再试。"
},
"faq": {
"title": "Frequently Asked Questions",
"freePlugin": {
Expand Down
Loading
Loading