Files
Firelink/src-tauri/tests
NimBold 248b4ac460 fix(app): harden release contracts across shell, queue, and engine boundaries
- Shell & UI: restore focus on sidebar reveal, guard window drag regions, contain context menu Escape keys, and fallback gracefully when a filtered queue is deleted.
- Download table: fix sort order for estimated sizes, descending null values, 3-state sort cycle, and desktop keyboard row navigation.
- Add window: harden duplicate resolution against unmanaged disk targets, draft id keying, and media credential isolation.
- Properties window: add individual Torrent file path copy, horizontal scroll protection for narrow and RTL layouts, and strict numeric bounds on property edits.
- Settings & scheduler: add draft buffering for integer inputs, sanitize persisted scheduler options, synchronize post-queue action countdown cancellation, and localize token regeneration.
- Engine & backend: isolate loopback JSON-RPC from environment proxies with no_proxy, normalize media cookie sources, dispatch container formats case-insensitively, and preserve snake_case arguments in torrent Tauri commands.
- Verification & packaging: isolate Companion git tag resolution from sandboxed git configs, and add regression tests for workflow normalization and portable packaging.
2026-09-03 19:28:27 +03:30
..

Headless Download Tests

Run the full Rust suite:

cd src-tauri
cargo test --all-targets

Run the queue-manager harness when changing aria2 scheduling, concurrency, and retry behavior:

cd src-tauri
cargo test --test queue_manager -- --nocapture

Run the media metadata smoke test with an explicit URL when changing yt-dlp integration:

cd src-tauri
FIRELINK_LIVE_YOUTUBE_URL='https://www.youtube.com/watch?v=dQw4w9WgXcQ' \
  cargo test filters_live_youtube_metadata_from_env --lib -- --ignored --nocapture

Run the real local Torrent runtime smoke test against the host bundled Aria2 binary. It starts a local tracker and two Aria2 daemons, then covers magnet metadata resolution, saved-metadata hash validation, selected-file output, pause/resume, ownership reporting, and cancel/remove:

npm run smoke:torrent

Use node scripts/smoke-torrent.js --binary /path/to/aria2c when validating a packaged or target-specific Aria2 binary.

Run the HTTP-boundary Torrent RPC integration test. It drives the production Aria2 RPC client through a local JSON-RPC server and verifies successful requests plus HTTP gateway errors:

npm run test:torrent:rpc

Run the deterministic unavailable-tracker and Aria2-daemon-exit checks with:

npm run smoke:torrent:failure-paths

Native CI runs this failure-path smoke after staging the target-specific bundled engines on macOS, Windows, and Linux. Windows executes the Torrent RPC, atomic-storage, canonical-cache, and web-seed normalization targets, while compiling (but not executing) the queue-manager and library test binaries; the Tauri mock harness exits before running on the Windows runner. The headless production_contract target still executes queue admission, normalization, credential-boundary, and retry contracts on Windows without constructing a Tauri mock application.