LinkDesk/frontend/docs/task-selection-behavior-tes...

5.7 KiB

Task Selection Behavior Test Guide

Spec: task-browser-refactor
Task: 15. Test selection behavior
Requirements: 3.1, 3.2, 3.3, 3.4, 3.5

Overview

This document provides a comprehensive guide for testing the selection behavior of the TasksDataTable component. The tests validate that the component correctly implements all selection requirements.

Test Execution

Open frontend/test-task-selection-behavior.html in a browser to access the interactive test suite.

Test Scenarios

1. Single-Click Selection (Requirement 3.1)

Requirement: WHEN a user clicks a row without modifiers THEN the system SHALL clear all selections and select only the clicked row

Test Cases:

  • 1.1: Initial single selection
  • 1.2: Selection replacement
  • 1.3: Selection count display

Steps:

  1. Navigate to a project's Tasks view
  2. Click on Task A
  3. Verify only Task A is selected
  4. Click on Task B
  5. Verify only Task B is selected, Task A is deselected
  6. Check selection count shows "1 task selected"

2. Ctrl+Click Toggle Selection (Requirement 3.2)

Requirement: WHEN a user Ctrl+clicks (or Cmd+clicks on Mac) a row THEN the system SHALL toggle that row's selection state without affecting other selections

Test Cases:

  • 2.1: Add to selection
  • 2.2: Remove from selection
  • 2.3: Preserve other selections
  • 2.4: Multiple selection count

Steps:

  1. Click Task A to select it
  2. Hold Ctrl (or Cmd) and click Task B
  3. Verify both are selected
  4. Hold Ctrl and click Task A again
  5. Verify Task A is deselected, Task B remains selected
  6. Hold Ctrl and click Task C
  7. Verify Task B and Task C are selected

3. Shift+Click Range Selection (Requirement 3.3)

Requirement: WHEN a user Shift+clicks a row THEN the system SHALL select all rows between the last clicked row and the current row

Test Cases:

  • 3.1: Forward range selection
  • 3.2: Backward range selection
  • 3.3: Range selection count

Steps:

  1. Click Task 1
  2. Hold Shift and click Task 5
  3. Verify Tasks 1-5 are all selected
  4. Click Task 3 (without modifiers)
  5. Hold Shift and click Task 7
  6. Verify Tasks 3-7 are selected
  7. Hold Shift and click Task 1
  8. Verify Tasks 1-3 are selected (backwards range)

4. Select-All Checkbox (Requirement 3.4)

Requirement: WHEN a user clicks the header checkbox THEN the system SHALL toggle selection of all visible (filtered) rows

Test Cases:

  • 4.1: Select all visible tasks
  • 4.2: Deselect all tasks
  • 4.3: Select all filtered tasks
  • 4.4: Indeterminate state

Steps:

  1. Ensure no filters are applied
  2. Click the checkbox in the table header
  3. Verify all visible tasks are selected
  4. Click the header checkbox again
  5. Verify all tasks are deselected
  6. Apply a filter (e.g., status = "In Progress")
  7. Click the header checkbox
  8. Verify only filtered tasks are selected
  9. Select some (but not all) tasks manually
  10. Verify header checkbox shows indeterminate state

5. Double-Click Opens Detail Panel (Requirement 3.5)

Requirement: WHEN a user double-clicks a row THEN the system SHALL open the task detail panel without modifying selection state

Test Cases:

  • 5.1: Detail panel opens
  • 5.2: Selection preserved on selected task
  • 5.3: Selection preserved on unselected task
  • 5.4: Detail panel content
  • 5.5: Mobile detail panel

Steps:

  1. Select Task A and Task B (using Ctrl+click)
  2. Double-click Task A
  3. Verify detail panel opens for Task A
  4. Verify both Task A and Task B remain selected
  5. Close the detail panel
  6. Double-click Task C (unselected)
  7. Verify detail panel opens for Task C
  8. Verify Task A and Task B remain selected
  9. Test on mobile/tablet to verify sheet/modal behavior

Additional Integration Tests

Visual Feedback Tests

  • 6.1: Selected rows have distinct background color
  • 6.2: Hover state is distinct from selection
  • 6.3: Cursor changes to pointer on hover
  • 6.4: Text selection is prevented during shift-click
  • 6.5: Empty table shows "No tasks found" message

Test Environment Setup

Prerequisites

  1. Backend server running on http://localhost:8000
  2. Frontend dev server running on http://localhost:5173
  3. Test project with at least 10 tasks
  4. Multiple task types and statuses for filter testing

Test Data Requirements

  • At least 10 tasks in a project
  • Tasks with different statuses (Not Started, In Progress, Complete)
  • Tasks with different types
  • Tasks assigned to different users
  • Tasks in different episodes (if applicable)

Expected Behavior Summary

Action Expected Result
Click task Select only that task, clear others
Ctrl+Click task Toggle task selection, preserve others
Shift+Click task Select range from last clicked to current
Click header checkbox Toggle all visible tasks
Double-click task Open detail panel, preserve selection
Right-click selected Preserve selection, show context menu
Right-click unselected Add to selection, show context menu

Common Issues to Watch For

  1. Selection not clearing on single click - Verify no modifiers are pressed
  2. Shift-click not working - Check lastClickedIndex is being tracked
  3. Select-all not respecting filters - Verify only filtered tasks are selected
  4. Double-click changing selection - Check event.detail === 2 logic
  5. Visual feedback missing - Verify CSS classes are applied correctly

Test Result Recording

Use the interactive test HTML file to:

  • Check off completed test cases
  • Record pass/fail status
  • Add notes about any issues
  • Save results to localStorage
  • Generate a test report

Completion Criteria

Task 15 is complete when:

  • All 25+ test cases pass
  • All requirements (3.1-3.5) are validated
  • No regressions in existing functionality
  • Visual feedback is correct
  • Test results are documented