import pytest
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):
    """Run the Context & Chat simulation against a live GUI."""
    client = ApiHookClient()
    assert client.wait_for_server(timeout=10)
    
    sim = ContextSimulation(client)
    sim.setup("LiveContextSim")
    sim.run()
    sim.teardown()

@pytest.mark.integration
def test_ai_settings_sim_live(live_gui):
    """Run the AI Settings simulation against a live GUI."""
    client = ApiHookClient()
    assert client.wait_for_server(timeout=10)
    
    sim = AISettingsSimulation(client)
    sim.setup("LiveAISettingsSim")
    sim.run()
    sim.teardown()

@pytest.mark.integration
def test_tools_sim_live(live_gui):
    """Run the Tools & Search simulation against a live GUI."""
    client = ApiHookClient()
    assert client.wait_for_server(timeout=10)
    
    sim = ToolsSimulation(client)
    sim.setup("LiveToolsSim")
    sim.run()
    sim.teardown()

@pytest.mark.integration
def test_execution_sim_live(live_gui):
    """Run the Execution & Modals simulation against a live GUI."""
    client = ApiHookClient()
    assert client.wait_for_server(timeout=10)
    
    sim = ExecutionSimulation(client)
    sim.setup("LiveExecutionSim")
    sim.run()
    sim.teardown()
