super-productivity/e2e/tests
Johannes Millan 10a47888a6
feat(sync): offer E2EE before first upload for file-based providers (#8709)
* feat(sync): offer E2EE at setup for file-based providers

File-based providers (WebDAV, Nextcloud, Dropbox, OneDrive, local file)
support optional client-side encryption but, unlike SuperSync, have no
mandatory-encryption upload guard — so their first setup sync would ship
plaintext before a user could enable E2EE.

Offer to set an encryption password during first-time setup and persist it
as part of the SAME config save: the key goes to the provider's privateCfg
and isEncryptionEnabled to the global config, atomically with isEnabled.
The normal first sync then encrypts from the first op via the standard
download-first flow — no separate snapshot-overwrite and no plaintext-upload
race. Skipping keeps the existing unencrypted behavior; works offline too.

Reuses DialogEnableEncryptionComponent in a new side-effect-free
collectPasswordOnly mode (returns the password, writes nothing), with a
provider-aware Skip action for the disableClose setup modal.

* test(sync): skip file-based setup encryption prompt in webdav e2e helper

Fresh file-based setup now opens the optional "Encrypt before first upload?"
dialog before the config is persisted, so setupWebdavSync would stall on the
disableClose modal. Dismiss it via a new Skip selector so every WebDAV spec
proceeds unencrypted, exactly as before; encryption specs still enable it
afterwards via enableEncryption().

* test(sync): add e2e for file-based setup-time encryption

Adds a @webdav @encryption spec that configures WebDAV with the encryption
password set in the setup dialog, then asserts the first upload's remote
sync-data.json does NOT contain the task title in plaintext (compression is
off by default, so a plaintext upload would) — proving the first sync is
encrypted — and that a second client with the same password decrypts and
receives the task without overwriting the remote.

setupWebdavSync gains an encryptAtSetup option (fills the new dialog instead
of skipping it); adds e2e selectors on the setup dialog password/confirm/
submit controls.

* ci(e2e): allow targeting the webdav job via workflow_dispatch grep

The webdav e2e job hardcoded --grep "@webdav"; add a webdav_grep dispatch
input (default @webdav, mirroring the supersync job) so a specific WebDAV
test can be run on demand.

* test(sync): fix remote sync-file path in setup-encryption e2e

Non-production builds nest the file under a /DEV segment
(sync-providers.factory.ts). The raw-fetch assertion omitted it and 404'd;
the CI trace confirmed the app uploaded to <folder>/DEV/sync-data.json and
that the first upload was encrypted.

* test(sync): cover joining an unencrypted remote with setup-time encryption

Adds the data-safety edge case for file-based setup-time E2EE: a client that
sets a password at setup while joining a remote that already holds UNENCRYPTED
data. Asserts the join reads and preserves the existing data (does not overwrite
the remote with the joining client's empty state) and that a subsequent write
upgrades the remote to encrypted (no plaintext titles remain).
2026-07-02 17:17:01 +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 test(e2e): disable failing for now 2025-09-21 00:59:11 +02:00
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 feat(sync): offer E2EE before first upload for file-based providers (#8709) 2026-07-02 17:17:01 +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