super-productivity/e2e/tests
Johannes Millan a1c059855e
feat(sync): nudge long-time users without sync to set it up (#8637)
* feat(sync): nudge long-time users without sync to set it up

Offline-first means a user who never configures sync has no backup at
all; clearing browser data or losing the device wipes everything. Once
the app has clearly been used for a while AND holds real data, show a
calm, low-priority banner once encouraging sync setup.

Trigger combines wall-clock age (>= 7 days since a lazily-seeded
FIRST_USE_TIMESTAMP) with a task-count gate (>= 20 tasks), so it is
robust both to users who restart many times a day and to those who
leave the app running for weeks (where app-start count fails), and
never nags an empty/dormant install. Shown at most once: both "Set up
sync" and "Not now" persist a dismissed flag; a configured provider
suppresses it entirely.

Reuses the existing banner system and mirrors NoteStartupBannerService.

* refactor(sync): apply review feedback to data-safety nudge

- Rename LS.FIRST_USE_TIMESTAMP -> SYNC_SAFETY_FIRST_SEEN and document that
  it is not a true install date (seeded at upgrade time for existing
  installs), so no other feature reuses it as one.
- Tests: add an unhydrated-config (undefined) skip case and assert the
  task-count selector, guarding the earlier race fix and a selector swap.
- i18n: match each locale's existing register for the nudge message
  (pt/cs/sk/tr -> formal, id -> informal) per translation review.

* test(planner): stabilize add-subtask-from-detail focus race

Wait for the detail panel's deferred open-time auto-focus to settle before
opening the inline subtask draft. The auto-focus lands ~200ms after the panel
opens and, if it fires after the draft input is focused, steals focus and
blur-closes the input — making toBeFocused() flake with 'element(s) not found'.
Mirrors the guard already used in add-subtask-with-detail-panel-open.spec.ts.
2026-06-29 19:45:42 +02:00
..
add-task-bar chore(task-repeat): revert RRULE Phase 1 from master (#7948) Develop the full RFC-5545 RRULE epic on the long-running feat/rrule-epic branch and merge once complete and testable in final form, rather than landing 13 phases into master one half-state at a time. Work preserved on feat/rrule-epic. Not yet shipped (post-v18.9.1), so no user impact. 2026-06-09 13:56:38 +02:00
app-features feat(focus-mode): focus screen UX overhaul (#7586) 2026-06-12 11:59:56 +02:00
autocomplete Merge branch 'master' into feat/operation-logs 2026-01-03 18:51:51 +01:00
boards test(e2e): tighten boards #7498 regression specs 2026-05-06 21:37:06 +02:00
break test(e2e): use correct route /#/tag/TODAY/tasks instead of /#/tag/TODAY 2026-03-15 18:48:00 +01:00
calendar fix(calendar): hide archived event banners 2026-06-05 13:39:31 +02:00
daily-summary test(daily-summary): guard /active/daily-summary route resolution (#8449) 2026-06-17 14:29:12 +02:00
focus-mode fix(focus-mode): preserve flowtime break settings across mode switch (#8489) 2026-06-19 13:02:01 +02:00
import-export test(e2e): dismiss add-task-bar backdrop before finish day (#8014) 2026-06-04 22:53:11 +02:00
issue-provider-panel test(e2e): strengthen assertions across reviewed specs (#7747) 2026-05-23 13:40:17 +02:00
keyboard test(e2e): add comprehensive E2E test coverage for core features 2026-01-12 15:11:27 +01:00
menu chore: address code review feedback 2026-01-15 10:57:43 +01:00
migration test(migration): navigate to project tasks route to de-flake legacy migration e2e 2026-06-15 15:48:34 +02:00
navigation feat(history): merge Quick History and Worklog into a unified History view (#8033) 2026-06-05 18:10:56 +02:00
note test(notes): harden #8434 fix per multi-review 2026-06-17 16:07:54 +02:00
notes fix(note): linkify URLs in locked notes so markdown links stay clickable 2026-04-16 19:47:52 +02:00
performance
planner feat(sync): nudge long-time users without sync to set it up (#8637) 2026-06-29 19:45:42 +02:00
plugins perf(plugins): skip no-op doc-mode saves + rename to doc-mode (#7825) 2026-05-27 17:30:38 +02:00
project feat(project): project completion experience (#8036) 2026-06-08 13:43:38 +02:00
recurring test(recurring): pin clock in #6860 helper spec to fix date-dependent flake 2026-06-16 11:52:44 +02:00
reminders feat(tasks): add quick "done" icon button to reminder dialog footer (#8595) 2026-06-25 17:15:58 +02:00
schedule test(e2e): strengthen assertions across reviewed specs (#7747) 2026-05-23 13:40:17 +02:00
search improve E2E test reliability and add snapshotOpType interface param 2026-01-27 20:55:30 +01:00
settings test(e2e): strengthen assertions across reviewed specs (#7747) 2026-05-23 13:40:17 +02:00
short-syntax refactor(e2e): replace waitForTimeout with condition-based waits 2026-01-03 15:29:38 +01:00
simple-counter chore: remove unused eslint disables 2026-06-03 21:31:06 +02:00
sync Codex/issue 8081 keep subtask input open (#8423) 2026-06-18 17:58:45 +02:00
tags test(e2e): add comprehensive E2E test coverage for core features 2026-01-12 15:11:27 +01:00
task-basic Codex/issue 8081 keep subtask input open (#8423) 2026-06-18 17:58:45 +02:00
task-detail Update recurrent task calendar and general calendar design (#8017) 2026-06-09 16:30:22 +02:00
task-dragdrop test(e2e): fix done-toggle selector to use element instead of class 2026-03-24 16:25:42 +01:00
task-list-basic fix(tasks): make "Add subtask" work in the Planner detail panel (#8617) (#8630) 2026-06-29 15:57:44 +02:00
work-view feat(boards): enhance project selection with multi-select and sidebar… (#8069) 2026-06-09 18:33:09 +02:00
workflow fix(tasks): record only doneOn on completion, never auto-schedule to today (#8463) (#8472) 2026-06-18 16:15:27 +02:00
worklog test(e2e): fix worklog finish-day navigation race #8033 2026-06-06 20:09:59 +02:00
all-basic-routes-without-error.spec.ts feat(history): merge Quick History and Worklog into a unified History view (#8033) 2026-06-05 18:10:56 +02:00