super-productivity/e2e/tests
Parman Mohammadalizadeh 079f920561
fix(task-repeat-cfg): create real instance when startDate moved to today with no live instance (#7983)
* test(task-repeat-cfg): add regression tests for startDate→today no-live-instance (#7923)

Unit test: exercises _getActionsForTaskRepeatCfg directly in the
post-re-anchor state (startDate=today, lastTaskCreationDay=yesterday,
no live instances), confirming the service-level creation path works.

E2e test: full reproduction of the #7923 repro steps — future startDate,
delete the live instance, change startDate to today via a transparent
projection — and asserts that a real task appears in the Today view
(not a transparent projection).

* fix(task-repeat-cfg): create real instance when startDate moved to today with no live instance (#7923)

Two fixes for the scenario: delete a recurring task's live instance, then
move startDate to today via a transparent projection.

1. add-tasks-for-tomorrow.service.ts: yield to the event loop (setTimeout 0)
   before reading the store in addAllDueToday(). The re-anchor dispatch from
   rescheduleTaskOnRepeatCfgUpdate$ updates the NgRx store synchronously, but
   the store notification propagates asynchronously; the yield ensures the
   selector sees lastTaskCreationDay = yesterday (not the stale future date)
   and includes the config for today.

2. task-repeat-cfg.service.ts: when taskAlreadyExists (a concurrent
   addAllDueToday() call or the date-change effect already created the task),
   still dispatch updateTaskRepeatCfg to advance lastTaskCreationDay. Without
   this, the transparent planner projection lingered because lastTaskCreationDay
   stayed at yesterday while the real task was already visible in Today.

All 65 unit tests updated and passing. E2e test passes end-to-end.

* test(e2e): stabilize #7923 today-column guard against route animation

The final guard matched the today column via the rendered date text
(`.date` = "1/5"). During the planner route-enter animation the leaving
and entering `planner-day[data-day="2026-05-01"]` columns are briefly
both in the DOM, so the locator resolved to 2 elements and tripped a
strict-mode violation before the projection assertion ran.

Select the column by its stable `data-day` attribute and assert the
projection count across every matching column, which is correct
regardless of how many copies the animation leaves behind. Also fix the
inaccurate "Wednesday" date comment (May 1 2026 is a Friday; the repeat
is DAILY so the weekday is irrelevant).

---------

Co-authored-by: Johannes Millan <johannes.millan@gmail.com>
2026-06-03 16:12:23 +02:00
..
add-task-bar refactor(e2e): extract ensureGlobalAddTaskBarOpen helper to reduce code duplication 2026-01-16 13:35:59 +01:00
app-features fix(i18n): boot with bundled English when translation fetch fails offline (#7854) (#7875) 2026-06-01 13:15:33 +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 calendar task events from the schedule (#7979) 2026-06-03 15:11:03 +02:00
daily-summary - fix(archive): also normalize malformed timeTracking field (#7487) 2026-05-05 15:41:25 +02:00
focus-mode test(e2e): harden flaky auto-start-focus-on-play via hash nav (#7953) 2026-06-02 15:24:47 +02:00
import-export test(e2e): de-flake archive-subtasks mark-done helper 2026-06-03 15:58:07 +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 feat(tasks): allow dragging tasks into subtask lists (#7962) 2026-06-02 19:43:41 +02:00
navigation test(e2e): use correct route /#/tag/TODAY/tasks instead of /#/tag/TODAY 2026-03-15 18:48:00 +01: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 test(e2e): stabilize task visibility specs 2026-05-13 16:27:31 +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 test(e2e): fix done-toggle selector to use element instead of class 2026-03-24 16:25:42 +01:00
recurring fix(task-repeat-cfg): create real instance when startDate moved to today with no live instance (#7983) 2026-06-03 16:12:23 +02:00
reminders fix(electron): retry Wayland idle helper startup (#7527) 2026-05-10 22:35:33 +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 fix(android): route hardware back through Capacitor 2026-06-03 15:58:07 +02:00
sync [codex] Fix sync import conflict from startup example tasks (#7976) 2026-06-03 15:57:53 +02:00
tags test(e2e): add comprehensive E2E test coverage for core features 2026-01-12 15:11:27 +01:00
task-basic test(e2e): fix done-toggle selector to use element instead of class 2026-03-24 16:25:42 +01:00
task-detail test(e2e): update Show/hide task panel button label (#7260) 2026-04-17 22:19: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 feat(tasks): allow dragging tasks into subtask lists (#7962) 2026-06-02 19:43:41 +02:00
work-view test(e2e): de-flake three scheduled-run E2E failures (#7862) 2026-06-01 14:31:26 +02:00
workflow test(e2e): add comprehensive E2E test coverage for core features 2026-01-12 15:11:27 +01:00
worklog test(e2e): add comprehensive E2E test coverage for core features 2026-01-12 15:11:27 +01:00
all-basic-routes-without-error.spec.ts refactor(e2e): replace waitForTimeout with condition-based waits 2026-01-03 15:29:38 +01:00