From 97fda0a7755b56178ae6e28501c7d784c6869261 Mon Sep 17 00:00:00 2001 From: Miklos Mandoki Date: Thu, 19 Mar 2026 14:52:35 +1100 Subject: [PATCH 1/2] chore: update strings --- tests/localization/lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/localization/lib b/tests/localization/lib index 8ab418c..94eb078 160000 --- a/tests/localization/lib +++ b/tests/localization/lib @@ -1 +1 @@ -Subproject commit 8ab418ca14a512f30ceb84bb69ac48403289c1ed +Subproject commit 94eb078144540390d4209d805c5373be0ccba33c From 4c9ab6a4587b0d7fbfae7a9253b66c3cfdddc307 Mon Sep 17 00:00:00 2001 From: Miklos Mandoki Date: Thu, 19 Mar 2026 14:58:21 +1100 Subject: [PATCH 2/2] feat: new donate cta --- tests/automation/cta_donations.spec.ts | 48 ++----------------- .../automation/enforce_localized_str.spec.ts | 12 ++--- 2 files changed, 9 insertions(+), 51 deletions(-) diff --git a/tests/automation/cta_donations.spec.ts b/tests/automation/cta_donations.spec.ts index 4a2dcf9..d81ad10 100644 --- a/tests/automation/cta_donations.spec.ts +++ b/tests/automation/cta_donations.spec.ts @@ -1,13 +1,10 @@ import { Page } from '@playwright/test'; import { tStripped } from '../localization/lib'; -import { CTA, Global } from './locators'; import { test_Alice_1W } from './setup/sessionTest'; import { mockDBCreationTime } from './utilities/time_travel'; import { checkCTAStrings, - checkModalStrings, - clickOn, reloadWindow, verifyNoCTAShows, } from './utilities/utils'; @@ -15,9 +12,9 @@ import { async function verifyDonateCTAShows(window: Page) { await checkCTAStrings( window, - tStripped('donateSessionHelp'), - tStripped('donateSessionDescription'), - [tStripped('donate'), tStripped('maybeLater')], + tStripped('donateSessionAppealTitle'), + tStripped('donateSessionAppealDescription'), + [tStripped('donateSessionAppealReadMore')], ); } @@ -43,45 +40,6 @@ test_Alice_1W( }, ); -const urlModalButtons = [ - { button: Global.openUrlButton, name: 'Open' }, - { button: Global.copyUrlButton, name: 'Copy' }, -]; - -urlModalButtons.forEach(({ button, name }) => { - test_Alice_1W( - `Donate CTA, never shows after ${name}`, - async ({ aliceWindow1 }) => { - const url = 'https://getsession.org/donate'; - - // First time: CTA should appear - await verifyDonateCTAShows(aliceWindow1); - - await clickOn(aliceWindow1, CTA.confirmButton); - await checkModalStrings( - aliceWindow1, - tStripped('urlOpen'), - tStripped('urlOpenDescription', { url }), - 'openUrlModal', - ); - - // Click the Open or Copy button - // Note: "Open" spawns a system browser outside Playwright's control - await clickOn(aliceWindow1, button); - - // Reload and verify CTA never appears again - await reloadWindow(aliceWindow1); - await verifyNoCTAShows(aliceWindow1); - }, - { - dbCreationTimestampMs: mockDBCreationTime({ - days: -7, - minutes: -2, - }), - }, - ); -}); - test_Alice_1W( 'Donate CTA, DB age < 7 days', async ({ aliceWindow1 }) => { diff --git a/tests/automation/enforce_localized_str.spec.ts b/tests/automation/enforce_localized_str.spec.ts index f51474a..4490bbd 100644 --- a/tests/automation/enforce_localized_str.spec.ts +++ b/tests/automation/enforce_localized_str.spec.ts @@ -289,12 +289,12 @@ function getExpectedStringFromKey( return 'You cannot go back further. In order to stop loading your account, Session needs to quit.'; case 'quitButton': return 'Quit'; - case 'donateSessionHelp': - return 'Session Needs Your Help'; - case 'donateSessionDescription': - return 'Powerful forces are trying to weaken privacy, but we can’t continue this fight alone. Donating helps keep Session secure, independent, and online.'; - case 'donate': - return 'Donate'; + case 'donateSessionAppealTitle': + return 'Please Read: A Personal Appeal From Cofounder of Session Chris McCabe'; + case 'donateSessionAppealDescription': + return 'Eight years ago, Session was founded with a mission to restore your privacy. Today, Session faces a funding shortage which puts its very survival at risk. If you’ve ever found value in Session or its mission, please give me a moment of your time and read this appeal.'; + case 'donateSessionAppealReadMore': + return 'Read Appeal'; case 'maybeLater': return 'Maybe Later'; case 'upgradeTo':