# My Weekly To Do List - Comprehensive Test Plan

## Application Overview

Comprehensive test plan for the My Weekly To Do List application, covering authentication, task management, weekly view navigation, calendar integration, and drag-and-drop functionality.

## Test Scenarios

### 1. Authentication Tests

**Seed:** `tests/seed.auth.spec.ts`

#### 1.1. User Login Flow

**File:** `tests/auth/login-flow.spec.ts`

**Steps:**
  1. Navigate to the application homepage
    - expect: Application loads successfully
    - expect: User is redirected to login page or dashboard
  2. Enter valid username and password in login form
    - expect: Login form accepts valid credentials
    - expect: User is authenticated and redirected to dashboard
  3. Attempt to login with invalid credentials
    - expect: Login form shows error message for invalid credentials
    - expect: User remains on login page

#### 1.2. User Registration Flow

**File:** `tests/auth/registration-flow.spec.ts`

**Steps:**
  1. Navigate to registration page
    - expect: Registration form is displayed
    - expect: Form contains all required fields
  2. Fill in registration form with valid data
    - expect: Registration form accepts valid data
    - expect: User is registered and redirected to dashboard
  3. Attempt to register with duplicate email
    - expect: Registration form shows duplicate email error
    - expect: User remains on registration page

### 2. Task Management Tests

**Seed:** `tests/seed.tasks.spec.ts`

#### 2.1. Add New Task

**File:** `tests/tasks/add-task.spec.ts`

**Steps:**
  1. Navigate to the tasks page
    - expect: Tasks page loads successfully
    - expect: Task form is visible
  2. Fill task form with valid data
    - expect: Task form accepts valid inputs
    - expect: Form validates required fields
  3. Submit the task form
    - expect: New task is added to the list
    - expect: Task appears in the correct day column
    - expect: Form resets to default state

#### 2.2. Edit Existing Task

**File:** `tests/tasks/edit-task.spec.ts`

**Steps:**
  1. Navigate to the tasks page
    - expect: Tasks page is loaded
    - expect: Existing tasks are visible
  2. Click edit button on an existing task
    - expect: Task enters edit mode
    - expect: Editable fields are displayed
  3. Modify task details and save
    - expect: Task is updated with new values
    - expect: Task reflects changes in daily view

#### 2.3. Delete Task

**File:** `tests/tasks/delete-task.spec.ts`

**Steps:**
  1. Navigate to the tasks page
    - expect: Tasks page is loaded
    - expect: Task list is visible
  2. Click delete button on a task
    - expect: Confirmation dialog appears or task is immediately deleted
    - expect: Task is removed from the list
  3. Verify deleted task is no longer visible
    - expect: Deleted task no longer appears in the task list
    - expect: UI reflects successful deletion

#### 2.4. Task Validation

**File:** `tests/tasks/task-validation.spec.ts`

**Steps:**
  1. Navigate to the task creation form
    - expect: Task form is displayed
    - expect: All form fields are accessible
  2. Submit form without required fields
    - expect: Validation error messages appear
    - expect: Form prevents submission without required fields
  3. Submit form with invalid time format
    - expect: Time validation error appears
    - expect: Form prevents submission with invalid time

### 3. Weekly View Navigation Tests

**Seed:** `tests/seed.weekly.spec.ts`

#### 3.1. Week Navigation Controls

**File:** `tests/weekly/navigate-week.spec.ts`

**Steps:**
  1. Navigate to the weekly view
    - expect: Weekly calendar view displays
    - expect: Current week is shown
  2. Click 'Previous Week' button
    - expect: Display moves to previous week
    - expect: Week range updates correctly
  3. Click 'Next Week' button
    - expect: Display moves to next week
    - expect: Week range updates correctly

#### 3.2. Keyboard Navigation

**File:** `tests/weekly/keyboard-nav.spec.ts`

**Steps:**
  1. Navigate to the weekly view
    - expect: Weekly calendar view displays
    - expect: Keyboard navigation is enabled
  2. Press Left Arrow key
    - expect: Week navigation moves backward
    - expect: Current week updates appropriately
  3. Press Right Arrow key
    - expect: Week navigation moves forward
    - expect: Current week updates appropriately

### 4. Drag and Drop Tests

**Seed:** `tests/seed.dragdrop.spec.ts`

#### 4.1. Task Drag and Drop Between Days

**File:** `tests/dragdrop/drop-task.spec.ts`

**Steps:**
  1. Navigate to the weekly view
    - expect: Weekly calendar view displays
    - expect: Tasks are visible in their assigned days
  2. Drag a task from one day column to another
    - expect: Task is draggable
    - expect: Task drops correctly into target day
  3. Verify task position changed in UI
    - expect: Task appears in new day column
    - expect: Task data remains intact

#### 4.2. Drag and Drop Edge Cases

**File:** `tests/dragdrop/drop-edge-cases.spec.ts`

**Steps:**
  1. Try dragging task to same day
    - expect: No action occurs or repositioning happens
    - expect: Task maintains its position
  2. Try dragging non-existent task
    - expect: Drag operation fails gracefully
    - expect: No unexpected errors occur

### 5. Calendar Integration Tests

**Seed:** `tests/seed.calendar.spec.ts`

#### 5.1. Calendar Settings Modal

**File:** `tests/calendar/settings-modal.spec.ts`

**Steps:**
  1. Navigate to calendar settings
    - expect: Calendar settings modal opens
    - expect: All calendar integration options are visible
  2. Configure calendar integration settings
    - expect: Settings save successfully
    - expect: Integration status updates
