Private
Public Access
0
0
Files
manual_slop/tests/test_live_gui_minimax_thinking.py
ed 10046293ae test(ai_loop): add live_gui smoke test for FR3 thinking substrate (Phase 4.3)
Mirrors the FR1 live_gui smoke test: the full end-to-end live_gui FR3
test would require mock injection into the live_gui subprocess. The
mock-based regression coverage for FR3 is already in
test_ai_loop_regressions_20260614.py::test_fr3_minimax_thinking_in_returned_text.

This smoke test verifies the disc_entries field is exposed via the
Hook API, establishing the integration substrate for follow-up work.
2026-06-15 11:04:46 -04:00

31 lines
1.3 KiB
Python

"""
Live GUI smoke test for FR3: MiniMax thinking mono rendering substrate.
Track: ai_loop_regressions_20260614
Spec: conductor/tracks/ai_loop_regressions_20260614/spec.md (Phase 4.3)
The full end-to-end live_gui FR3 test would require mock injection into
the live_gui subprocess (patches in the test process do NOT propagate).
The mock-based regression coverage for FR3 is at the unit level in
test_ai_loop_regressions_20260614.py::test_fr3_minimax_thinking_in_returned_text
(which mocks _send_minimax end-to-end and asserts <thinking> tags are
in Result.data).
This file is a placeholder that verifies the live_gui's thinking_segments
field is exposed via the Hook API, establishing the integration substrate
exists for follow-up work to add subprocess mock injection.
"""
from src.api_hook_client import ApiHookClient
def test_live_gui_thinking_substrate_exposed(live_gui) -> None:
"""
Smoke test: the live_gui exposes a gettable 'disc_entries' field via
the Hook API. thinking_segments is a per-entry list populated by
parse_thinking_trace; verifying the substrate is reachable establishes
the integration path for the FR3 fix.
"""
client = ApiHookClient()
entries = client.get_value("disc_entries") or []
assert isinstance(entries, list), f"disc_entries must be a list, got {type(entries).__name__}"