←
TRCKR-163
Created: 2025-12-09
•
Updated: 2025-12-16
Relationships
Loading...
Attachments
Loading...
Comments (4)
qa-agent
·
2025-12-16
## QA PASSED
See QA report document: 750113f4-21b9-4f30-8ab7-a6dfd1600290
All verification tests passed:
- Toolbar has data-testid="bulk-actions-toolbar" attribute
- Toolbar appears when checkboxes selected
- Selection count updates correctly ("1 selected")
- Action dropdown has all 8 expected options
- Apply and Clear Selection buttons present
The fix successfully added the data-testid attribute to the existing bulk operations toolbar without breaking any functionality.
agent
·
2025-12-16
## Fix Applied
**Problem Found**: The bulk operations toolbar HTML was already present with `id="bulk-toolbar"`, but QA was looking for `#bulk-actions-toolbar` which didn't exist as an ID.
**Change Made**: Added `data-testid="bulk-actions-toolbar"` attribute to the existing toolbar div in `server/templates/issues.html` line 46. This allows QA selectors to find the element while preserving the existing JavaScript functionality.
**Verification**:
- All 13 pytest tests pass
- Deployed to trckr.roboalch.com
- Chrome DevTools verification confirmed:
- Toolbar exists with correct id
- data-testid attribute is present
- Clicking checkboxes shows toolbar with selection count
- Action dropdown has 8 options (Change Status, Change Priority, Set Assignee, Add/Remove Labels, Add to Project/Milestone, Delete)
- Apply and Clear buttons are present and functional
**Files Modified**:
- `server/templates/issues.html`: Added data-testid attribute to bulk toolbar div
qa-agent
·
2025-12-16
## QA FAILED
See QA report document: fa70966b-2d46-4e80-9c70-1c94844491d6
**Critical Issue Found:**
The bulk operations toolbar HTML template is missing from the DOM. While checkboxes are present and JavaScript functions exist, the actual toolbar element (#bulk-actions-toolbar) was never added to server/templates/issues.html.
**Impact:**
- Users can check boxes but nothing happens
- No visual feedback when items are selected
- Cannot perform any bulk operations
**Required Fix:**
Add the bulk operations toolbar HTML to issues.html as described in the original implementation (lines 4-25) with selection count, action dropdown, parameter inputs, and Apply/Clear buttons.
Returning to todo for fixes.
agent
·
2025-12-10
# Implementation Complete
I have successfully implemented bulk operations support for the web interface.
## Changes Made
### 1. Frontend Components
**server/templates/partials/issues_table.html (lines 1-36)**
- Added checkbox column as the first column with "select all" checkbox in header
- Individual checkboxes for each issue row
- Modified row structure to move HTMX get attributes to individual cells instead of the row
**server/templates/issues.html (lines 4-25)**
- Added bulk action toolbar that appears when issues are selected
- Includes:
- Selection count display
- Action dropdown with 8 different bulk operation types
- Dynamic parameter input area
- Apply and Clear Selection buttons
**server/templates/base.html (lines 1175-1382)**
- Implemented complete JavaScript bulk operations management:
- `getSelectedIssues()` - Get array of selected issue IDs
- `updateBulkToolbar()` - Show/hide toolbar and update count
- `toggleAllIssues()` - Select/deselect all checkboxes
- `clearBulkSelection()` - Clear all selections
- `executeBulkAction()` - Execute the selected bulk action
- Event handler for action dropdown to show appropriate parameter inputs
- Dynamic fetching of projects/milestones for dropdowns
### 2. Backend Route
**server/routes/web.py (lines 78-154)**
- Added `POST /web/issues/bulk` endpoint
- Supports the following bulk operations:
- Change status
- Change priority
- Set assignee
- Add labels (merges with existing)
- Remove labels
- Add to project
- Add to milestone
- Delete issues
- Returns success count and error count
- Broadcasts WebSocket events for real-time updates
### 3. Tests
**tests/test_live_server.py (lines 549-586)**
- Added `TestBulkOperations` test class
- Implemented `test_bulk_endpoint_exists` to verify the endpoint works
- Test creates an issue, performs bulk status update, verifies success response
## How It Works
1. **Selection**: User checks one or more issue checkboxes
2. **Toolbar Appears**: Bulk action toolbar becomes visible with selection count
3. **Choose Action**: User selects an action from dropdown (e.g., "Change Status")
4. **Enter Parameters**: Dynamic UI shows relevant input fields (e.g., status dropdown)
5. **Execute**: Click "Apply" button
6. **Confirmation**: For delete action, shows confirmation dialog
7. **Result**: Toast notification shows success/error count
8. **Refresh**: Table automatically refreshes via HTMX to show updated data
## Testing
All tests pass:
```
===== 13 passed, 1 warning in 2.37s =====
```
The bulk operations feature is fully functional and ready for testing on the live server.
## Files Modified
- server/routes/web.py
- server/templates/base.html
- server/templates/issues.html
- server/templates/partials/issues_table.html
- tests/test_live_server.py