Files
Aniworld/Docs/tasks.md
Lukas ad1aace0f5 docs: add infrastructure task tracking and Robot Framework deps
- Rename Docs/Tasks.md → Docs/tasks.md (case fix)
- Add comprehensive task docs for INFRA-1 (server startup) and INFRA-2 (teardown)
- Add test-robot make target
- Add robotframework, browser, requests, jsonlibrary to requirements.txt

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-21 12:26:18 +02:00

64 KiB

Global / Infrastructure Issues

Task INFRA-1: Fix Server Startup in Robot Framework Suite Setup

  • Failing Step: Suite Setup → Start Aniworld Server → Wait For Server
  • Failure Message: Server did not become healthy within 30 seconds
  • Files to Check:
    • tests/robot/resources/common.resource (keywords: Start Aniworld Server, Wait For Server)
    • tests/robot/run.sh
    • tests/robot/__init__.robot
  • Reference Docs:
    • Docs/TESTING.md
    • Docs/API.md §1 (Base URL and Versioning)
  • Expected Behavior:
    • The suite setup should start the FastAPI uvicorn server on 127.0.0.1:8765.
    • The Wait For Server keyword should poll /health and receive HTTP 200 within 30 seconds.
    • The server process should remain running for the duration of the test suite.
  • Actual Behavior:
    • The server process likely fails to start because the active Python environment (base conda env, Python 3.13.5) does not have the project's dependencies installed.
    • run.sh invokes plain python, which resolves to the base environment instead of the project's AniWorld conda environment.
  • Suggested Fix:
    • Update tests/robot/resources/common.resource to start the server with conda run -n AniWorld python -m uvicorn ... instead of plain python -m uvicorn.
    • Alternatively, ensure the AniWorld conda environment is activated before running tests/robot/run.sh.

Task INFRA-2: Fix Suite Teardown — Close Browser Keyword Argument Mismatch

  • Failing Step: Suite Teardown → Close Browser
  • Failure Message: Keyword 'common.Close Browser' expected 0 arguments, got 1
  • Files to Check:
    • tests/robot/__init__.robot
    • tests/robot/resources/common.resource
    • tests/robot/resources/ui_keywords.resource
  • Reference Docs:
    • Docs/TESTING.md
  • Expected Behavior:
    • The suite teardown should cleanly close the browser and stop the server without errors.
  • Actual Behavior:
    • The Close Browser keyword is being called with an argument (likely ${BROWSER} or similar), but the keyword definition expects 0 arguments.
  • Suggested Fix:
    • Review __init__.robot line: Close Browser — remove any passed arguments.
    • Or, if a custom wrapper keyword is intended, define it in ui_keywords.resource and call that instead.

API Tests — Robot.Api.Anime (14 tests, 0 passed, 14 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-ANIME-1: Get Anime Library Status

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • tests/robot/resources/common.resource
    • tests/robot/resources/api_keywords.resource
    • src/server/controllers/anime_controller.py (or equivalent)
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/status returns HTTP 200 with JSON containing directory and series_count.

Task API-ANIME-2: Rescan Library

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/anime/rescan returns HTTP 200, triggering a library rescan.

Task API-ANIME-3: Scan Status During Idle

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/scan-status returns HTTP 200 with in_progress: False when idle.

Task API-ANIME-4: Search Anime

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/search?q=attack returns HTTP 200 with valid JSON search results.

Task API-ANIME-5: Add New Series

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/anime/ with payload {url, name, year} returns HTTP 201 and a key in the response.

Task API-ANIME-6: Get Series Details

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/{key} returns HTTP 200 with key, name, folder, episodes.

Task API-ANIME-7: Update Series Settings

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • PUT /api/anime/{key}/settings returns HTTP 200 and persists settings like preferred_language.

Task API-ANIME-8: Get Series Episodes

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/{key}/episodes returns HTTP 200 with valid JSON episode list.

Task API-ANIME-9: Delete Series

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • DELETE /api/anime/{key} returns HTTP 200.
    • Subsequent GET /api/anime/{key} returns HTTP 404.

Task API-ANIME-10: List All Series

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/ returns HTTP 200 with valid JSON list.

Task API-ANIME-11: List Missing Episodes Only

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/?filter=missing returns HTTP 200 with series that have missing episodes.

Task API-ANIME-12: List No Episodes

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/anime/?filter=no_episodes returns HTTP 200 with series having zero episodes.

Task API-ANIME-13: Duplicate Folders Detection

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Endpoint returns duplicate folder groups if any exist.

Task API-ANIME-14: Regenerate NFO For Series

  • Test File: tests/robot/api/anime.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/anime.robot
    • src/server/controllers/anime_controller.py
    • src/server/services/nfo_service.py
  • Reference Docs:
    • Docs/API.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • POST /api/anime/{key}/regenerate-nfo returns HTTP 200 and triggers NFO regeneration.

API Tests — Robot.Api.Auth (12 tests, 0 passed, 12 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-AUTH-1: Setup Master Password

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • tests/robot/resources/common.resource
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/auth/setup with {master_password, anime_directory, name, ...} returns HTTP 201.
    • Subsequent auth status shows configured: True.

Task API-AUTH-2: Setup Rejects Weak Password

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/auth/setup with weak password returns HTTP 400.

Task API-AUTH-3: Setup Rejects Duplicate

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Second POST /api/auth/setup returns HTTP 400 when already configured.

Task API-AUTH-4: Login With Valid Password

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/auth/login with correct password returns HTTP 200 and a JWT access_token.

Task API-AUTH-5: Login With Invalid Password

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/auth/login with wrong password returns HTTP 401.

Task API-AUTH-6: Login Rate Limiting

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
    • src/server/middleware/rate_limiter.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • After 6 failed login attempts, subsequent attempts return HTTP 429 (or remain 401 depending on implementation).

Task API-AUTH-7: Auth Status Unconfigured

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/auth/status before setup returns configured: False.

Task API-AUTH-8: Auth Status Configured Unauthenticated

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/auth/status after setup but without token returns configured: True, authenticated: False.

Task API-AUTH-9: Auth Status Authenticated

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/auth/status with valid Bearer token returns authenticated: True.

Task API-AUTH-10: Logout

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/controllers/auth_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/auth/logout with valid token returns HTTP 200 and invalidates the token.

Task API-AUTH-11: Protected Endpoint Without Auth

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/middleware/auth.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Accessing a protected endpoint without a token returns HTTP 401 or 403.

Task API-AUTH-12: Protected Endpoint With Auth

  • Test File: tests/robot/api/auth.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/auth.robot
    • src/server/middleware/auth.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Accessing a protected endpoint with a valid Bearer token returns HTTP 200.

API Tests — Robot.Api.Config (10 tests, 0 passed, 10 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-CONFIG-1: Get Default Config

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • GET /api/config returns HTTP 200 with keys: name, data_dir, scheduler, logging, backup, nfo.

Task API-CONFIG-2: Update Config

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • PUT /api/config updates fields and returns HTTP 200. Persisted values are reflected on subsequent GET.

Task API-CONFIG-3: Validate Valid Config

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/config/validate with well-formed config returns HTTP 200 and valid: True.

Task API-CONFIG-4: Validate Invalid Config Missing Name

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/config/validate missing required name field returns HTTP 422.

Task API-CONFIG-5: Validate Invalid Schedule Time

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/config/validate with schedule_time: 25:00 returns HTTP 422.

Task API-CONFIG-6: Validate Invalid Log Level

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/config/validate with logging.level: INVALID returns HTTP 422.

Task API-CONFIG-7: Config Backup Create

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/config/backup creates a backup and returns HTTP 200.

Task API-CONFIG-8: Config Backup List

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • GET /api/config/backups returns HTTP 200 with a list of backups.

Task API-CONFIG-9: Config Backup Restore

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/config/restore restores a selected backup and returns HTTP 200.

Task API-CONFIG-10: Config Backup Delete

  • Test File: tests/robot/api/config.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/config.robot
    • src/server/controllers/config_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • DELETE /api/config/backup/{id} removes the backup and returns HTTP 200.

API Tests — Robot.Api.Download (12 tests, 0 passed, 12 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-DL-1: Get Empty Queue Status

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/download/queue returns HTTP 200 with status, statistics, and pending: 0.

Task API-DL-2: Add Episodes To Queue

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/queue with episode list returns HTTP 201 and item_ids.

Task API-DL-3: Start Queue

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/start returns HTTP 200 and begins processing.

Task API-DL-4: Stop Queue

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/stop returns HTTP 200 and halts processing.

Task API-DL-5: Pause Queue

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/pause returns HTTP 200 and pauses processing.

Task API-DL-6: Resume Queue

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/resume returns HTTP 200 and resumes processing.

Task API-DL-7: Clear Completed Downloads

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/clear/completed returns HTTP 200 and removes completed items.

Task API-DL-8: Clear Failed Downloads

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/clear/failed returns HTTP 200 and removes failed items.

Task API-DL-9: Clear Pending Downloads

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/clear/pending returns HTTP 200 and removes pending items.

Task API-DL-10: Remove Item From Queue

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • DELETE /api/download/queue/{item_id} returns HTTP 200 and removes the specific item.

Task API-DL-11: Retry Failed Item

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/download/retry/{item_id} returns HTTP 200 and re-queues the failed item.

Task API-DL-12: Queue Statistics Accuracy

  • Test File: tests/robot/api/download.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/download.robot
    • src/server/controllers/download_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/download/queue statistics reflect the actual state of pending, active, completed, and failed items.

API Tests — Robot.Api.Health (2 tests, 0 passed, 2 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-HEALTH-1: Basic Health Check

  • Test File: tests/robot/api/health.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/health.robot
    • src/server/controllers/health_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /health returns HTTP 200 with status: healthy.

Task API-HEALTH-2: Detailed Health Check

  • Test File: tests/robot/api/health.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/health.robot
    • src/server/controllers/health_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /health/detailed returns HTTP 200 with status, version, uptime, memory, cpu.

API Tests — Robot.Api.Logging (6 tests, 0 passed, 6 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-LOG-1: Get Logging Config

  • Test File: tests/robot/api/logging.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/logging.robot
    • src/server/controllers/logging_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • GET /api/logging/config returns HTTP 200 with level, file, max_bytes, backup_count.

Task API-LOG-2: List Log Files

  • Test File: tests/robot/api/logging.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/logging.robot
    • src/server/controllers/logging_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • GET /api/logging/files returns HTTP 200 with a list of available log files.

Task API-LOG-3: Tail Log File

  • Test File: tests/robot/api/logging.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/logging.robot
    • src/server/controllers/logging_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • GET /api/logging/tail/{filename} returns HTTP 200 with the tail contents of the log file.

Task API-LOG-4: Download Log File

  • Test File: tests/robot/api/logging.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/logging.robot
    • src/server/controllers/logging_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • GET /api/logging/download/{filename} returns HTTP 200 with Content-Type: application/octet-stream.

Task API-LOG-5: Write Test Log Messages

  • Test File: tests/robot/api/logging.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/logging.robot
    • src/server/controllers/logging_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • POST /api/logging/test writes test messages at various levels and returns HTTP 200.

Task API-LOG-6: Cleanup Old Logs

  • Test File: tests/robot/api/logging.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/logging.robot
    • src/server/controllers/logging_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • DELETE /api/logging/cleanup deletes old log files and returns HTTP 200.

API Tests — Robot.Api.Nfo (4 tests, 0 passed, 4 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-NFO-1: Get NFO Diagnostics

  • Test File: tests/robot/api/nfo.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/nfo.robot
    • src/server/controllers/nfo_controller.py
    • src/server/services/nfo_service.py
  • Reference Docs:
    • Docs/API.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • GET /api/nfo/diagnostics/{series_key} returns HTTP 200 with diagnostic info.

Task API-NFO-2: Repair NFO For Series

  • Test File: tests/robot/api/nfo.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/nfo.robot
    • src/server/controllers/nfo_controller.py
    • src/server/services/nfo_service.py
  • Reference Docs:
    • Docs/API.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • POST /api/nfo/repair/{series_key} returns HTTP 200 and regenerates NFO files.

Task API-NFO-3: List Series Needing Repair

  • Test File: tests/robot/api/nfo.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/nfo.robot
    • src/server/controllers/nfo_controller.py
    • src/server/services/nfo_service.py
  • Reference Docs:
    • Docs/API.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • GET /api/nfo/needs-repair returns HTTP 200 with total and series list.

Task API-NFO-4: Run NFO Scan

  • Test File: tests/robot/api/nfo.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/nfo.robot
    • src/server/controllers/nfo_controller.py
    • src/server/services/nfo_service.py
  • Reference Docs:
    • Docs/API.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • POST /api/nfo/scan returns HTTP 200 with total, created, updated, errors_count, duration_seconds.

API Tests — Robot.Api.Scheduler (6 tests, 0 passed, 6 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-SCHED-1: Get Scheduler Config

  • Test File: tests/robot/api/scheduler.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/scheduler.robot
    • src/server/controllers/scheduler_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • GET /api/scheduler/config returns HTTP 200 with success, config (enabled, interval_minutes, schedule_time, schedule_days, auto_download_after_rescan), and status (is_running, next_run, last_run, scan_in_progress).

Task API-SCHED-2: Update Scheduler Config

  • Test File: tests/robot/api/scheduler.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/scheduler.robot
    • src/server/controllers/scheduler_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • PUT /api/scheduler/config updates settings and returns HTTP 200 with persisted values.

Task API-SCHED-3: Trigger Manual Rescan

  • Test File: tests/robot/api/scheduler.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/scheduler.robot
    • src/server/controllers/scheduler_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • POST /api/scheduler/trigger returns HTTP 200 with success: True.

Task API-SCHED-4: Invalid Schedule Time

  • Test File: tests/robot/api/scheduler.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/scheduler.robot
    • src/server/controllers/scheduler_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • PUT /api/scheduler/config with schedule_time: 25:00 returns HTTP 422.

Task API-SCHED-5: Invalid Schedule Days

  • Test File: tests/robot/api/scheduler.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/scheduler.robot
    • src/server/controllers/scheduler_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • PUT /api/scheduler/config with schedule_days: ['monday', 'tuesday'] returns HTTP 422.

Task API-SCHED-6: Empty Schedule Days

  • Test File: tests/robot/api/scheduler.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/scheduler.robot
    • src/server/controllers/scheduler_controller.py
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • PUT /api/scheduler/config with schedule_days: [] returns HTTP 200 (empty list accepted).

API Tests — Robot.Api.Setup (3 tests, 0 passed, 3 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-SETUP-1: List Unresolved Folders

  • Test File: tests/robot/api/setup.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/setup.robot
    • src/server/controllers/setup_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/setup/unresolved returns HTTP 200 with a list of unresolved folders.

Task API-SETUP-2: Get Unresolved Folder Details

  • Test File: tests/robot/api/setup.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/setup.robot
    • src/server/controllers/setup_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • GET /api/setup/unresolved/{folder} returns HTTP 200 with folder details.

Task API-SETUP-3: Resolve Folder With Provider Key

  • Test File: tests/robot/api/setup.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/setup.robot
    • src/server/controllers/setup_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • POST /api/setup/resolve with {folder, provider_key} returns HTTP 200 and maps the folder.

API Tests — Robot.Api.Websocket (4 tests, 0 passed, 4 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task API-WS-1: Connect To WebSocket

  • Test File: tests/robot/api/websocket.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/websocket.robot
    • src/server/controllers/websocket_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • ws://127.0.0.1:8765/ws/connect?token={jwt} establishes a WebSocket connection.
  • Note:
    • Test currently uses Pass Execution placeholder because a custom keyword library is needed for full WebSocket testing.

Task API-WS-2: Subscribe To Rooms

  • Test File: tests/robot/api/websocket.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/websocket.robot
    • src/server/controllers/websocket_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Client can subscribe to rooms: downloads, queue, scan, system.
  • Note:
    • Test currently uses Pass Execution placeholder.

Task API-WS-3: Receive Ping Pong

  • Test File: tests/robot/api/websocket.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/websocket.robot
    • src/server/controllers/websocket_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Server sends periodic ping/pong heartbeat messages.
  • Note:
    • Test currently uses Pass Execution placeholder.

Task API-WS-4: Receive System Notification

  • Test File: tests/robot/api/websocket.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/api/websocket.robot
    • src/server/controllers/websocket_controller.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Triggering an action emits a system message over WebSocket.
  • Note:
    • Test currently uses Pass Execution placeholder.

UI Tests — Robot.Ui.Anime Settings (3 tests, 0 passed, 3 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-ANIME-1: Anime Settings Page Loads

  • Test File: tests/robot/ui/anime_settings.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/anime_settings.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/templates/anime_settings.html (or equivalent)
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Navigating to /anime/settings?key=attack-on-titan loads the settings form with regenerate-nfo-btn and save-anime-settings-btn visible.

Task UI-ANIME-2: Regenerate NFO

  • Test File: tests/robot/ui/anime_settings.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/anime_settings.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/anime_settings.js
  • Reference Docs:
    • Docs/API.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • Clicking #regenerate-nfo-btn triggers an API call and displays a toast containing "NFO".

Task UI-ANIME-3: Update Series Settings

  • Test File: tests/robot/ui/anime_settings.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/anime_settings.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/anime_settings.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Changing preferred-language-select and custom-folder-input, then clicking #save-anime-settings-btn, saves settings and shows a toast containing "saved".

UI Tests — Robot.Ui.Dashboard (11 tests, 0 passed, 11 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-DASH-1: Dashboard Loads

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/templates/index.html
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Dashboard page title contains "AniWorld" and shows search-input, search-btn, rescan-btn, theme-toggle, config-btn.

Task UI-DASH-2: Search For Anime

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Typing "attack" in search-input and submitting shows search-results-list.

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking clear search hides search-results.

Task UI-DASH-4: Theme Toggle To Dark

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/theme.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #theme-toggle switches the theme to dark.

Task UI-DASH-5: Theme Toggle To Light

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/theme.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #theme-toggle twice returns the theme to light.

Task UI-DASH-6: Theme Persists After Reload

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/theme.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • After toggling to dark and reloading, the theme remains dark (persisted in localStorage or cookie).

Task UI-DASH-7: Rescan Button

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #rescan-btn triggers a rescan and shows #rescan-status .status-dot.scanning.

Task UI-DASH-8: Show Missing Episodes Only

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #show-missing-only sets data-active="true" on the button.

Task UI-DASH-9: Show All Series

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #show-all-series sets data-active="true" on the button.

Task UI-DASH-10: Select All Series

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #select-all checks all series checkboxes.

Task UI-DASH-11: Download Selected

  • Test File: tests/robot/ui/dashboard.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/dashboard.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/dashboard.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Selecting a series and clicking download-selected triggers a download request.

UI Tests — Robot.Ui.Login (6 tests, 0 passed, 6 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-LOGIN-1: Login Page Loads

  • Test File: tests/robot/ui/login.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/login.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/templates/login.html
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • /login page title contains "Login" and shows password-input, login-submit-btn, password-toggle.

Task UI-LOGIN-2: Login With Valid Password

  • Test File: tests/robot/ui/login.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/login.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/login.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Submitting the correct password redirects to the dashboard (title contains "AniWorld", search-input visible).

Task UI-LOGIN-3: Login With Invalid Password

  • Test File: tests/robot/ui/login.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/login.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/login.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Submitting a wrong password shows #login-error containing "invalid".

Task UI-LOGIN-4: Login Rate Limit UI

  • Test File: tests/robot/ui/login.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/login.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/login.js
    • src/server/middleware/rate_limiter.py
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • After 6 failed attempts, the UI shows #login-error containing "lockout".

Task UI-LOGIN-5: Password Visibility Toggle

  • Test File: tests/robot/ui/login.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/login.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/login.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #password-toggle changes password-input type from password to text and back.

Task UI-LOGIN-6: Logout

  • Test File: tests/robot/ui/login.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/login.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/login.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Logging out redirects to /login (title contains "Login", password-input visible).

UI Tests — Robot.Ui.Queue Page (8 tests, 0 passed, 8 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-QUEUE-1: Queue Page Loads

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/templates/queue.html
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • /queue page title contains "Queue" and shows stat cards (total-items, pending-items, completed-items, failed-items) and queue sections (pending-queue, active-downloads, completed-downloads, failed-downloads).

Task UI-QUEUE-2: Queue Stats Cards Display Zero Initially

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/queue.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • When the queue is empty, all stat cards display 0.

Task UI-QUEUE-3: Start Queue Button

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/queue.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #start-queue-btn (when not disabled) changes the UI to show #stop-queue-btn.

Task UI-QUEUE-4: Stop Queue Button

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/queue.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #stop-queue-btn (when not disabled) changes the UI to show #start-queue-btn.

Task UI-QUEUE-5: Clear Completed Confirmation

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/queue.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #clear-completed-btn opens #confirm-modal containing "clear". Canceling hides the modal.

Task UI-QUEUE-6: Clear Failed Confirmation

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/queue.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #clear-failed-btn opens #confirm-modal containing "clear". Canceling hides the modal.

Task UI-QUEUE-7: Retry All Failed

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/queue.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking #retry-all-btn (when not disabled) shows a toast containing "retry".

Task UI-QUEUE-8: Navigation Back To Main

  • Test File: tests/robot/ui/queue_page.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/queue_page.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/templates/queue.html
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Clicking the back button navigates to the main dashboard.

UI Tests — Robot.Ui.Responsive (5 tests, 0 passed, 5 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-RESP-1: Mobile Viewport Layout

  • Test File: tests/robot/ui/responsive.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/responsive.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/css/responsive.css
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • At mobile viewport (<= 480px), layout adapts and search-input, theme-toggle remain visible.

Task UI-RESP-2: Mobile Menu Accessible

  • Test File: tests/robot/ui/responsive.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/responsive.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/css/responsive.css
    • src/server/web/static/js/responsive.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • On mobile, #mobile-menu-btn is visible and clicking it shows #mobile-menu.

Task UI-RESP-3: Tablet Viewport Layout

  • Test File: tests/robot/ui/responsive.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/responsive.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/css/responsive.css
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • At tablet viewport (>= 768px), layout adapts and search-input, rescan-btn remain visible.

Task UI-RESP-4: Touch Buttons Clickable

  • Test File: tests/robot/ui/responsive.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/responsive.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/css/responsive.css
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • On mobile viewport, #theme-toggle remains clickable and toggles the theme correctly.

Task UI-RESP-5: Desktop Viewport Reset

  • Test File: tests/robot/ui/responsive.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/responsive.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/css/responsive.css
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • At desktop viewport (>= 1280px), search-input, rescan-btn, config-btn are all visible.

UI Tests — Robot.Ui.Settings Modal (15 tests, 0 passed, 15 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-SETTINGS-1: Open Settings Modal

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Clicking #config-btn opens #config-modal.

Task UI-SETTINGS-2: Close Settings Modal Via Button

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Clicking the close button hides #config-modal.

Task UI-SETTINGS-3: Close Settings Modal Via Overlay

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Clicking #config-modal .modal-overlay hides #config-modal.

Task UI-SETTINGS-4: Close Settings Modal Via Escape

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Pressing Escape while #config-modal is focused hides the modal.

Task UI-SETTINGS-5: Edit General Settings

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Changing app name, data dir, and anime directory, then saving, shows a toast containing "saved".

Task UI-SETTINGS-6: Edit Scheduler Settings

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Enabling scheduler, setting time to 04:30, selecting days, and saving shows a toast containing "saved".

Task UI-SETTINGS-7: Disable Scheduler

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Unchecking #scheduled-rescan-enabled and saving shows a toast containing "saved".

Task UI-SETTINGS-8: Edit Logging Settings

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
    • Docs/InstructionsLogging.md
  • Expected Behavior:
    • Changing log level to DEBUG, file path, max bytes, backup count, and saving shows a toast containing "saved".

Task UI-SETTINGS-9: Edit Backup Settings

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Enabling backup, setting path and retention days, and saving shows a toast containing "saved".

Task UI-SETTINGS-10: Edit NFO Settings

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
    • Docs/NFO_GUIDE.md
  • Expected Behavior:
    • Entering TMDB key, enabling auto-create, poster/logo/fanart downloads, and saving shows a toast containing "saved".

Task UI-SETTINGS-11: Create Config Backup

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Clicking #create-backup-btn shows a toast containing "backup".

Task UI-SETTINGS-12: Restore Config Backup

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Selecting a .backup-item and clicking #restore-backup-btn shows a toast containing "restore".

Task UI-SETTINGS-13: Delete Config Backup

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Selecting a .backup-item and clicking #delete-backup-btn shows a toast containing "delete".

Task UI-SETTINGS-14: Export Config

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Clicking #export-config-btn triggers a file download event.

Task UI-SETTINGS-15: Import Config

  • Test File: tests/robot/ui/settings_modal.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/settings_modal.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/settings_modal.js
    • tests/robot/fixtures/sample_config.json
  • Reference Docs:
    • Docs/API.md
    • Docs/CONFIGURATION.md
  • Expected Behavior:
    • Uploading a config file via #import-config-input and clicking #import-config-btn shows a toast containing "import".

UI Tests — Robot.Ui.Setup Flow (8 tests, 0 passed, 8 failed)

Parent Suite Setup Failed: Server did not become healthy within 30 seconds

Task UI-SETUP-1: Setup Page Loads

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/templates/setup.html
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • /setup page title contains "Setup" and shows setup-form, general-section, security-section, scheduler-section, logging-section, backup-section, nfo-section.

Task UI-SETUP-2: Password Strength Weak

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Typing "weak" in #master-password-input shows #password-strength containing "weak".

Task UI-SETUP-3: Password Strength Medium

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Typing "Medium1!" in #master-password-input shows #password-strength containing "medium".

Task UI-SETUP-4: Password Strength Strong

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Typing a strong password in #master-password-input shows #password-strength containing "strong".

Task UI-SETUP-5: Setup Form Validation Empty Password

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Submitting setup with empty password shows #password-error containing "required".

Task UI-SETUP-6: Setup Form Validation Mismatched Passwords

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Submitting with mismatched password and confirmation shows #confirm-password-error containing "match".

Task UI-SETUP-7: Complete Setup Flow

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • Filling all fields correctly and submitting redirects to the main page (search-input visible, title contains "AniWorld").

Task UI-SETUP-8: Setup Redirects When Already Configured

  • Test File: tests/robot/ui/setup_flow.robot
  • Failing Step: Parent suite setup (Wait For Server)
  • Files to Check:
    • tests/robot/ui/setup_flow.robot
    • tests/robot/resources/ui_keywords.resource
    • src/server/web/static/js/setup.js
  • Reference Docs:
    • Docs/API.md
  • Expected Behavior:
    • After setup is complete, visiting /setup redirects to / (URL does not contain /setup).

Summary

Category Suite Tests Passed Failed
Infrastructure Global 0 129 (all blocked by suite setup)
API Anime 14 0 14
API Auth 12 0 12
API Config 10 0 10
API Download 12 0 12
API Health 2 0 2
API Logging 6 0 6
API Nfo 4 0 4
API Scheduler 6 0 6
API Setup 3 0 3
API Websocket 4 0 4
UI Anime Settings 3 0 3
UI Dashboard 11 0 11
UI Login 6 0 6
UI Queue Page 8 0 8
UI Responsive 5 0 5
UI Settings Modal 15 0 15
UI Setup Flow 8 0 8
Total 129 0 129
  1. INFRA-1 — Fix the server startup environment issue. This is the blocker for all 129 tests.
  2. INFRA-2 — Fix the suite teardown Close Browser keyword argument mismatch.
  3. Once the server starts correctly, re-run the full Robot Framework suite to identify any individual test logic failures.
  4. Address any remaining per-test failures based on the new run results.