from pathlib import Path APP_JS = (Path(__file__).resolve().parents[1] / "ui_builder" / "static" / "app.js").read_text(encoding="utf-8") def test_ready_penalty_opens_target_when_scoreboard_is_live(): start = APP_JS.index("async function rebalanceVmixPenaltyTargets") end = APP_JS.index("function finishActionMatchesSource", start) snippet = APP_JS[start:end] assert "if (hockeyScoreboardIsLive())" in snippet assert 'inCommands.push({ Function: `OverlayInput${overlay}In`, Input: target.input });' in snippet def test_penalty_overlay_auto_in_does_not_retrigger_visible_target(): start = APP_JS.index("async function rebalanceVmixPenaltyTargets") end = APP_JS.index("function finishActionMatchesSource", start) snippet = APP_JS[start:end] assert "const targetWasVisible = Boolean(previous?.input)" in snippet assert "if (!targetWasVisible)" in snippet def test_existing_team_state_sync_logic_is_untouched(): assert 'for (const key of ["home_delayed_penalty", "home_empty_net", "away_delayed_penalty", "away_empty_net"])' in APP_JS assert "async function hockeySyncTeamStateOverlays" in APP_JS