steam-backlog-enforcer/steam_backlog_enforcer/tests
Krzysztof kuhy Rudnicki 41deb90324 feat: add interactive web UI for backlog completion planning
Adds a React/TypeScript frontend (web/) with a Python stdlib HTTP server
backend.  The UI mirrors the CLI `stats` command in the browser, with
real-time sliders for ProtonDB rating, HLTB confidence thresholds, daily
play time, per-game time cap, playtime mode, no-HLTB-data fallback, and a
target-date planner.  A parity badge confirms the client-side totals
reproduce the CLI defaults exactly (786 / 67031.1h / 143017.2h / 238447.9h).

Python side:
- `_web_dataset.py`: offline projection of HLTB/ProtonDB/snapshot caches
  into a compact, secret-free JSON payload; 100% branch coverage
- `_web_server.py`: zero-dependency stdlib HTTP server serving the built
  Vite bundle and the /api/dataset endpoint; 100% branch coverage
- `main.py`: new `serve` command wiring

Frontend (Vitest + RTL, 100% branch coverage enforced):
- TypeScript port of ProtonDB compound rating rule with full parity
- Pure client-side filtering via estimate.ts (no server round-trips)
- SVG completion timeline chart, sortable/searchable game table
- Steam dark theme; responsive layout

Pre-commit: adds `vitest-coverage` hook at pre-push stage requiring 100%
branch coverage on the React codebase.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:35:45 +02:00
..
__init__.py test: achieve 100% branch coverage across all python_pkg packages 2026-03-21 17:51:36 +01:00
conftest.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_cmd_done_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_config.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_enforce_loop_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_enforce_loop.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_enforcer.py fix: add websockets dependency and apply ruff formatting to tests 2026-05-28 21:00:49 +02:00
test_game_install_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_game_install_part3.py fix: add websockets dependency and apply ruff formatting to tests 2026-05-28 21:00:49 +02:00
test_game_install.py fix: add websockets dependency and apply ruff formatting to tests 2026-05-28 21:00:49 +02:00
test_hltb_detail.py fix: sort requirements.txt and add tests for uncovered branches 2026-05-28 21:11:53 +02:00
test_hltb_part2.py fix: sort requirements.txt and add tests for uncovered branches 2026-05-28 21:11:53 +02:00
test_hltb_part3.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_hltb_search_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_hltb_search.py fix: HLTB count_comp=0 bug, false matches, and ProtonDB log noise 2026-05-28 20:40:51 +02:00
test_hltb.py fix: sort requirements.txt and add tests for uncovered branches 2026-05-28 21:11:53 +02:00
test_library_hider_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_library_hider.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_main_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_main_part3.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_main.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_polls_tracking_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_polls_tracking.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_protondb.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_scanning_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_scanning_part3.py fix: add websockets dependency and apply ruff formatting to tests 2026-05-28 21:00:49 +02:00
test_scanning_part4.py fix: add websockets dependency and apply ruff formatting to tests 2026-05-28 21:00:49 +02:00
test_scanning.py fix: add websockets dependency and apply ruff formatting to tests 2026-05-28 21:00:49 +02:00
test_stats.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_steam_api.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_store_blocker_part2.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_store_blocker.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00
test_web_dataset.py feat: add interactive web UI for backlog completion planning 2026-05-29 18:35:45 +02:00
test_web_server.py feat: add interactive web UI for backlog completion planning 2026-05-29 18:35:45 +02:00
test_whitelist.py chore: set up as standalone repo 2026-05-28 07:21:29 +02:00