37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
JS = (ROOT / "ui_builder" / "static" / "app.js").read_text(encoding="utf-8")
|
|
APP = (ROOT / "app.py").read_text(encoding="utf-8")
|
|
|
|
|
|
def test_build_version_bumped():
|
|
assert 'BUILD_VERSION = "2026.08.19.22"' in APP
|
|
|
|
|
|
def test_overlay_parser_accepts_legacy_function_strings():
|
|
"""Legacy whitespace/query suffixes work across all eight supported overlay channels."""
|
|
from tests.ui_contract_support import ui_contract
|
|
ui_contract("overlay_parser")
|
|
|
|
|
|
def test_sequence_onair_has_post_ack_reconcile_fallback():
|
|
assert 'function reconcileShortcutSequenceOnAir' in JS
|
|
assert 'shortcutSequenceOverlayIntent(sequence)' in JS
|
|
assert 'reconcileShortcutSequenceOnAir(sequence, { wasOnAir });' in JS
|
|
|
|
|
|
def test_normal_overlay_in_latches_sequence_on_air():
|
|
start = JS.index('function reconcileShortcutSequenceOnAir')
|
|
snippet = JS[start:start + 2600]
|
|
assert 'if (intent.action === "In") active = true;' in snippet
|
|
assert 'else if (intent.action === "Out" || intent.action === "Off") active = false;' in snippet
|
|
assert 'else if (intent.action === "toggle") active = !active;' in snippet
|
|
|
|
|
|
def test_ack_confirmed_owner_remains_primary_signal():
|
|
start = JS.index('function reconcileShortcutSequenceOnAir')
|
|
snippet = JS[start:start + 1400]
|
|
assert 'if (sequenceStillOwnsRuntimeOverlay(id))' in snippet
|
|
assert 'state.quickPanelOnAirSequences.add(id);' in snippet
|