# Test Fixing Instructions for AniWorld Project ## 📋 General Instructions ### Overview This document lists all failed tests identified during the test run on October 19, 2025. Each test failure needs to be investigated and resolved. The failures are categorized by module/area for easier resolution. ### Important Guidelines 1. **Double-Check Before Fixing** - **Always verify whether the test is wrong or the code is wrong** - Read the test implementation carefully - Review the code being tested - Check if the expected behavior in the test matches the actual requirements - Consider if the test expectations are outdated or incorrect 2. **Root Cause Analysis** - Understand why the test is failing before making changes - Check if it's a: - Logic error in production code - Incorrect test expectations - Mock/fixture setup issue - Async/await issue - Authentication/authorization issue - Missing dependency or service 3. **Fix Strategy** - Fix production code if the business logic is wrong - Fix test code if the expectations are incorrect - Update both if requirements have changed - Document why you chose to fix test vs code 4. **Testing Process** - Run the specific test after each fix to verify - Run related tests to ensure no regression - Run all tests after batch fixes to verify overall system health 5. **Code Quality Standards** - Follow PEP8 and project coding standards - Use type hints where applicable - Write clear, self-documenting code - Add comments for complex logic - Update docstrings if behavior changes --- ## 🔴 Critical Issues to Address First ### 4. Frontend Integration Test Errors **Priority:** HIGH **Files Affected:** - `tests/frontend/test_existing_ui_integration.py` **Tests Failing:** 1. `TestFrontendAuthentication::test_auth_status_endpoint_not_configured` 2. `TestFrontendAuthentication::test_auth_status_configured_not_authenticated` 3. `TestFrontendAuthentication::test_login_returns_jwt_token` 4. `TestFrontendAuthentication::test_unauthorized_request_returns_401` 5. `TestFrontendJavaScriptIntegration::test_frontend_handles_401_gracefully` **Additional Test Errors (with assertion errors):** - 37 more tests in this file with ERROR status **Investigation Required:** - Check test setup and fixtures - Verify client initialization - Review async handling --- ### 5. WebSocket Integration Test Failures **Priority:** MEDIUM **Files Affected:** - `tests/integration/test_websocket.py` **Tests Failing (48 total):** #### Connection Management (7 failures) 1. `TestWebSocketConnection::test_websocket_endpoint_exists` (ERROR) 2. `TestWebSocketConnection::test_connection_manager_tracks_connections` 3. `TestWebSocketConnection::test_disconnect_removes_connection` 4. `TestWebSocketConnection::test_room_assignment_on_connection` 5. `TestWebSocketConnection::test_multiple_rooms_support` #### Message Broadcasting (4 failures) 6. `TestMessageBroadcasting::test_broadcast_to_all_connections` 7. `TestMessageBroadcasting::test_broadcast_to_specific_room` 8. `TestMessageBroadcasting::test_broadcast_with_json_message` 9. `TestMessageBroadcasting::test_broadcast_handles_disconnected_clients` #### Progress Integration (3 failures) 10. `TestProgressIntegration::test_download_progress_broadcasts_to_websocket` 11. `TestProgressIntegration::test_download_complete_notification` 12. `TestProgressIntegration::test_download_failed_notification` #### Queue Status Broadcasting (3 failures) 13. `TestQueueStatusBroadcasting::test_queue_status_update_broadcast` 14. `TestQueueStatusBroadcasting::test_queue_item_added_notification` 15. `TestQueueStatusBroadcasting::test_queue_item_removed_notification` #### System Messaging (2 failures) 16. `TestSystemMessaging::test_system_notification_broadcast` 17. `TestSystemMessaging::test_error_message_broadcast` #### Concurrent Connections (2 failures) 18. `TestConcurrentConnections::test_multiple_clients_in_same_room` 19. `TestConcurrentConnections::test_concurrent_broadcasts_to_different_rooms` #### Connection Error Handling (3 failures) 20. `TestConnectionErrorHandling::test_handle_send_failure` 21. `TestConnectionErrorHandling::test_handle_multiple_send_failures` 22. `TestConnectionErrorHandling::test_cleanup_after_disconnect` #### Message Formatting (2 failures) 23. `TestMessageFormatting::test_message_structure_validation` 24. `TestMessageFormatting::test_different_message_types` #### Room Management (3 failures) 25. `TestRoomManagement::test_room_creation_on_first_connection` 26. `TestRoomManagement::test_room_cleanup_when_empty` 27. `TestRoomManagement::test_client_can_be_in_one_room` #### Complete Workflow (2 failures) 28. `TestCompleteWebSocketWorkflow::test_full_download_notification_workflow` 29. `TestCompleteWebSocketWorkflow::test_multi_room_workflow` **Investigation Required:** - WebSocket endpoint routing - Connection manager implementation - Room management logic - Broadcast mechanism --- ### 6. Download Flow Integration Test Errors **Priority:** HIGH **Files Affected:** - `tests/integration/test_download_flow.py` **All Tests Have ERROR Status (22 tests):** #### Authentication Requirements (4 errors) 1. `TestAuthenticationRequirements::test_queue_status_requires_auth` 2. `TestAuthenticationRequirements::test_add_to_queue_requires_auth` 3. `TestAuthenticationRequirements::test_queue_control_requires_auth` 4. `TestAuthenticationRequirements::test_item_operations_require_auth` #### Download Flow End-to-End (5 errors) 5. `TestDownloadFlowEndToEnd::test_add_episodes_to_queue` 6. `TestDownloadFlowEndToEnd::test_queue_status_after_adding_items` 7. `TestDownloadFlowEndToEnd::test_add_with_different_priorities` 8. `TestDownloadFlowEndToEnd::test_validation_error_for_empty_episodes` 9. `TestDownloadFlowEndToEnd::test_validation_error_for_invalid_priority` #### Queue Control Operations (4 errors) 10. `TestQueueControlOperations::test_start_queue_processing` 11. `TestQueueControlOperations::test_pause_queue_processing` 12. `TestQueueControlOperations::test_resume_queue_processing` 13. `TestQueueControlOperations::test_clear_completed_downloads` #### Queue Item Operations (3 errors) 14. `TestQueueItemOperations::test_remove_item_from_queue` 15. `TestQueueItemOperations::test_retry_failed_item` 16. `TestQueueItemOperations::test_reorder_queue_items` #### Progress Tracking (2 errors) 17. `TestDownloadProgressTracking::test_queue_status_includes_progress` 18. `TestDownloadProgressTracking::test_queue_statistics` #### Error Handling (2 errors) 19. `TestErrorHandlingAndRetries::test_handle_download_failure` 20. `TestErrorHandlingAndRetries::test_retry_count_increments` #### Concurrent Operations (2 errors) 21. `TestConcurrentOperations::test_multiple_concurrent_downloads` 22. `TestConcurrentOperations::test_concurrent_status_requests` **Plus Additional Tests:** - Queue Persistence (2 errors) - WebSocket Integration (1 error) - Complete Download Workflow (2 errors) **Investigation Required:** - Check test setup/teardown - Verify authentication setup in fixtures - Review async test handling --- ### 7. Download Endpoints API Test Errors **Priority:** HIGH **Files Affected:** - `tests/api/test_download_endpoints.py` **All Tests Have ERROR Status (18 tests):** 1. `test_get_queue_status` 2. `test_add_to_queue` 3. `test_add_to_queue_with_high_priority` 4. `test_add_to_queue_empty_episodes` 5. `test_add_to_queue_service_error` 6. `test_remove_from_queue_single` 7. `test_remove_from_queue_not_found` 8. `test_remove_multiple_from_queue` 9. `test_remove_multiple_empty_list` 10. `test_start_queue` 11. `test_stop_queue` 12. `test_pause_queue` 13. `test_resume_queue` 14. `test_reorder_queue` 15. `test_reorder_queue_not_found` 16. `test_clear_completed` 17. `test_retry_failed` 18. `test_retry_all_failed` **Investigation Required:** - Check test fixtures - Review authentication setup - Verify download service availability --- ### 8. Template Integration Test Failures **Priority:** MEDIUM **Files Affected:** - `tests/unit/test_template_integration.py` **Tests Failing:** 1. `TestTemplateIntegration::test_error_template_404` 2. `TestTemplateIntegration::test_queue_template_has_websocket_script` 3. `TestTemplateIntegration::test_templates_accessibility_features` **Investigation Required:** - Check template rendering - Verify template file locations - Review Jinja2 template configuration --- ### 9. Frontend Integration Smoke Tests **Priority:** MEDIUM **Files Affected:** - `tests/integration/test_frontend_integration_smoke.py` **Tests Failing:** 1. `TestFrontendIntegration::test_login_returns_jwt_token` 2. `TestFrontendIntegration::test_authenticated_endpoints_require_bearer_token` 3. `TestFrontendIntegration::test_queue_endpoints_accessible_with_token` **Investigation Required:** - Check authentication flow - Verify token generation - Review endpoint protection --- ## ⚠️ Non-Critical Warnings to Address ### Deprecated Pydantic V1 API Usage **Count:** ~20 warnings **Location:** `src/config/settings.py` **Issue:** ```python # Deprecated usage Field(default="value", env="ENV_VAR") # Should be: Field(default="value", json_schema_extra={"env": "ENV_VAR"}) ``` **Files to Update:** - `src/config/settings.py` - Update Field definitions - `src/server/models/config.py` - Update validators to `@field_validator` --- ### Deprecated datetime.utcnow() Usage **Count:** ~100+ warnings **Issue:** ```python # Deprecated datetime.utcnow() # Should use datetime.now(datetime.UTC) ``` **Files to Update:** - `src/server/services/auth_service.py` - `src/server/services/download_service.py` - `src/server/services/progress_service.py` - `src/server/services/websocket_service.py` - `src/server/database/service.py` - `src/server/database/models.py` - All test files using `datetime.utcnow()` --- ### Deprecated FastAPI on_event **Count:** 4 warnings **Location:** `src/server/fastapi_app.py` **Issue:** ```python # Deprecated @app.on_event("startup") @app.on_event("shutdown") # Should use lifespan from contextlib import asynccontextmanager @asynccontextmanager async def lifespan(app: FastAPI): # Startup yield # Shutdown ``` --- ### Deprecated Pydantic .dict() Method **Count:** ~5 warnings **Issue:** ```python # Deprecated session.dict() # Should be session.model_dump() ``` **Files to Update:** - `src/server/middleware/auth.py` - `src/server/utils/dependencies.py` --- ## 📝 Task Checklist for AI Agent ### Phase 1: Critical Async Issues - [ ] Fix all async/await issues in `test_frontend_auth_integration.py` (10 tests) - [ ] Verify test methods are properly marked as async - [ ] Run and verify: `pytest tests/integration/test_frontend_auth_integration.py -v` ### Phase 2: WebSocket Broadcast Issues - [ ] Investigate WebSocket service broadcast implementation - [ ] Fix mock configuration in `test_websocket_service.py` (7 tests) - [ ] Fix connection lifecycle management - [ ] Run and verify: `pytest tests/unit/test_websocket_service.py -v` ### Phase 3: Authentication System - [ ] Debug auth middleware and service - [ ] Fix auth flow integration tests (43 tests) - [ ] Fix config endpoint auth issues (7 tests) - [ ] Fix download endpoint auth issues (2 tests) - [ ] Run and verify: `pytest tests/integration/test_auth_flow.py -v` - [ ] Run and verify: `pytest tests/api/test_config_endpoints.py -v` ### Phase 4: Frontend Integration - [ ] Fix frontend auth integration tests (5 failures + 37 errors) - [ ] Fix frontend integration smoke tests (3 failures) - [ ] Run and verify: `pytest tests/frontend/ -v` ### Phase 5: WebSocket Integration - [ ] Fix websocket integration tests (48 failures) - [ ] Test connection management - [ ] Test broadcasting mechanism - [ ] Run and verify: `pytest tests/integration/test_websocket.py -v` ### Phase 6: Download Flow - [ ] Fix download flow integration tests (22+ errors) - [ ] Fix download endpoint API tests (18 errors) - [ ] Run and verify: `pytest tests/integration/test_download_flow.py -v` - [ ] Run and verify: `pytest tests/api/test_download_endpoints.py -v` ### Phase 7: Template Integration - [ ] Fix template integration tests (3 failures) - [ ] Run and verify: `pytest tests/unit/test_template_integration.py -v` ### Phase 8: Deprecation Warnings - [ ] Update Pydantic V2 Field definitions - [ ] Replace `datetime.utcnow()` with `datetime.now(datetime.UTC)` - [ ] Update FastAPI to use lifespan instead of on_event - [ ] Replace `.dict()` with `.model_dump()` - [ ] Run and verify: `pytest tests/ -v --tb=short` ### Phase 9: Final Verification - [ ] Run all tests: `pytest tests/ -v` - [ ] Verify all tests pass - [ ] Verify warnings are reduced - [ ] Document any remaining issues --- ## 🎯 Success Criteria 1. **All tests passing:** 0 failures, 0 errors 2. **Warnings reduced:** Aim for < 50 warnings (mostly from dependencies) 3. **Code quality maintained:** No shortcuts or hacks 4. **Documentation updated:** Any behavior changes documented 5. **Git commits:** Logical, atomic commits with clear messages --- ## 📞 Escalation If you encounter: - Architecture issues requiring design decisions - Tests that conflict with documented requirements - Breaking changes needed - Unclear requirements or expectations **Document the issue and escalate rather than guessing.** --- ## 📚 Helpful Commands ```bash # Run all tests conda run -n AniWorld python -m pytest tests/ -v --tb=short # Run specific test file conda run -n AniWorld python -m pytest tests/unit/test_websocket_service.py -v # Run specific test class conda run -n AniWorld python -m pytest tests/unit/test_websocket_service.py::TestWebSocketService -v # Run specific test conda run -n AniWorld python -m pytest tests/unit/test_websocket_service.py::TestWebSocketService::test_broadcast_download_progress -v # Run with extra verbosity conda run -n AniWorld python -m pytest tests/ -vv # Run with full traceback conda run -n AniWorld python -m pytest tests/ -v --tb=long # Run and stop at first failure conda run -n AniWorld python -m pytest tests/ -v -x # Run tests matching pattern conda run -n AniWorld python -m pytest tests/ -v -k "auth" # Show all print statements conda run -n AniWorld python -m pytest tests/ -v -s ``` --- ## 📖 Additional Notes - This document was generated on: October 19, 2025 - Test run took: 6.63 seconds - Python environment: AniWorld (conda) - Framework: pytest with FastAPI TestClient **Remember:** The goal is not just to make tests pass, but to ensure the system works correctly and reliably!