import pytest from typing import Any import time import sys import os # Ensure project root is in path sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from api_hook_client import ApiHookClient from simulation.sim_context import ContextSimulation from simulation.sim_ai_settings import AISettingsSimulation from simulation.sim_tools import ToolsSimulation from simulation.sim_execution import ExecutionSimulation @pytest.mark.integration def test_context_sim_live(live_gui: Any) -> None: """Run the Context & Chat simulation against a live GUI.""" client = ApiHookClient() assert client.wait_for_server(timeout=10) sim = ContextSimulation(client) sim.setup("LiveContextSim") client.set_value('current_provider', 'gemini_cli') client.set_value('gcli_path', f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"') sim.run() # Ensure history is updated via the async queue time.sleep(2) sim.teardown() @pytest.mark.integration def test_ai_settings_sim_live(live_gui: Any) -> None: """Run the AI Settings simulation against a live GUI.""" client = ApiHookClient() assert client.wait_for_server(timeout=10) sim = AISettingsSimulation(client) sim.setup("LiveAISettingsSim") client.set_value('current_provider', 'gemini_cli') client.set_value('gcli_path', f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"') # Expect gemini_cli as the provider assert client.get_value('current_provider') == 'gemini_cli' sim.run() sim.teardown() @pytest.mark.integration def test_tools_sim_live(live_gui: Any) -> None: """Run the Tools & Search simulation against a live GUI.""" client = ApiHookClient() assert client.wait_for_server(timeout=10) sim = ToolsSimulation(client) sim.setup("LiveToolsSim") client.set_value('current_provider', 'gemini_cli') client.set_value('gcli_path', f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"') sim.run() # Ensure history is updated via the async queue time.sleep(2) sim.teardown() @pytest.mark.integration def test_execution_sim_live(live_gui: Any) -> None: """Run the Execution & Modals simulation against a live GUI.""" client = ApiHookClient() assert client.wait_for_server(timeout=10) sim = ExecutionSimulation(client) sim.setup("LiveExecutionSim") client.set_value('current_provider', 'gemini_cli') client.set_value('gcli_path', f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"') sim.run() sim.teardown()