- Add loading state waits to 'Marks a task as done' test
- Add loading state waits to navigation tests:
- 'provides back navigation to the project in the list view'
- 'provides back navigation to the project in the table view'
- 'provides back navigation to the project in the kanban view on mobile'
- 'does not provide back navigation to the project in the kanban view on desktop'
- These fixes prevent CypressError where task elements have CSS pointer-events: none
- All tests now wait for .is-loading class removal before attempting element interactions
- Comprehensive coverage of task interaction patterns that were causing CI failures
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add loading state waits to 'Can add a task to favorites' test
- Add loading state waits to all three task description icon tests:
- 'Should show a task description icon if the task has a description'
- 'Should not show a task description icon if the task has an empty description'
- 'Should not show a task description icon if the task has a description containing only an empty p tag'
- These fixes prevent CypressError where elements have CSS pointer-events: none due to loading states
- All tests wait for .is-loading class removal before attempting element interactions
- Ensures elements are fully interactive before test assertions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add wait for loading state completion before interaction in task.spec.ts
- Fix 'Should be created new' test by waiting for .is-loading removal
- Fix 'Inserts new tasks at the top of the project' test similarly
- Add pointer-events none check to ensure elements are interactive
- These changes address the CypressError where elements have CSS pointer-events: none
- Update PLAN.md and TODO.md with current session analysis and priorities
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace multiple cy.intercept() calls with same alias '@loadTasks'
- Use single regex pattern to match all task loading endpoints
- Fix failing tests: task completion, favorites, descriptions, navigation
- Prevents Cypress from only using the last defined intercept
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Applies comprehensive API intercepts to all remaining E2E test files that use
loadTasks to resolve "No request ever occurred" failures. The application may
call different task loading endpoints based on context, so all tests now
intercept all possible patterns:
- `**/api/v1/projects/*/views/*/tasks**` - When viewId is provided
- `**/api/v1/projects/*/tasks**` - When viewId is missing (fallback)
- `**/api/v1/tasks/all**` - When projectId is null/undefined
Files updated:
- cypress/e2e/project/project-view-list.spec.ts - 3 test cases fixed
- cypress/e2e/project/project-view-table.spec.ts - 3 test cases fixed
- cypress/e2e/task/task.spec.ts - 9 test cases fixed
- cypress/e2e/task/overview.spec.ts - 2 test cases fixed
- cypress/e2e/task/subtask-duplicates.spec.ts - 1 test case fixed
All intercepts use the same @loadTasks alias so existing cy.wait() calls
work unchanged. Maintains 30s timeout for CI reliability.
This should resolve the majority of E2E test "loadTasks" timeout failures
by ensuring tests properly wait for task data regardless of which API
endpoint the application calls based on the current context.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update all cy.wait('@loadTasks') calls to include 30s timeout
- This addresses "No request ever occurred" timeout issues in CI
- Ensures consistent timeout handling across all task management tests
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit fixes several critical issues causing E2E test failures and timeouts:
**Authentication fixes:**
- Remove cross-spec session caching to prevent state conflicts in parallel test execution
- Changed `login(user, true)` to `login(user, false)` in createFakeUserAndLogin()
**API intercept standardization:**
- Standardized all API intercept patterns to use `/api/v1/` prefix consistently
- Fixed mixed patterns: `**/projects/*/views/*/tasks**` → `**/api/v1/projects/*/views/*/tasks**`
- Added explicit GET/PUT method specifications to prevent intercept misses
**Timeout reduction:**
- Reduced excessive timeouts from 60-120s to 30-60s in cypress.config.ts
- Reduced test-level timeouts from 30s to 15s where appropriate
- Changed defaultCommandTimeout: 60000 → 30000, requestTimeout: 120000 → 60000
**Test isolation improvements:**
- Added proper beforeEach cleanup in overview.spec.ts to prevent data leakage
- Removed redundant individual truncate() calls in favor of systematic cleanup
**Files changed:**
- cypress.config.ts: Reduced global timeout values
- cypress/support/authenticateUser.ts: Fixed cross-spec session caching
- cypress/e2e/project/*.spec.ts: Standardized intercept patterns, reduced timeouts
- cypress/e2e/task/*.spec.ts: Added cleanup hooks, standardized intercepts
- cypress/e2e/sharing/linkShare.spec.ts: Fixed intercept patterns and timeouts
These changes address the root causes of the 25-minute timeouts and "3 failed" issues
seen in CI, improving test reliability and execution speed.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Increased Cypress timeouts: defaultCommandTimeout to 60s, requestTimeout to 120s
- Added responseTimeout and pageLoadTimeout (120s each) for slow CI environments
- Enhanced task creation and management tests with proper API intercepts and waits
- Added visibility checks before interactions to prevent race conditions
- Improved drag-and-drop test stability with explicit API waits and force option
- Enhanced image upload test with longer timeouts for CI environments
- Added proper API loading waits for kanban view tests
These changes address timeout issues in CI by providing more time for operations
to complete and ensuring proper sequencing of test actions.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Increase GitHub Actions E2E timeout from 20 to 25 minutes
- Reduce CYPRESS_DEFAULT_COMMAND_TIMEOUT from 60s to 30s for faster failures
- Replace hard-coded waits with proper API intercepts for better reliability:
- Add @createTask intercept for task creation (task.spec.ts)
- Add @createBucket intercept for bucket creation (kanban.spec.ts)
- Reduce unnecessary 1000ms wait to 500ms in logout test
- Improve test performance while maintaining stability
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This removes date-fns and replaces it with the already used dayjs library. It does not make sense to have two libraries for the same purpose, and dayjs seems to be smaller and its translations are already integrated. Since we have to use dayjs because it is used by the gantt chart, this was the obvious way to go (instead of replacing dayjs with date-fns).
Resolves https://github.com/go-vikunja/vikunja/issues/391
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/3039
Co-authored-by: kolaente <k@knt.li>
Co-committed-by: kolaente <k@knt.li>