51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
import pytest
|
|
import time
|
|
import sys
|
|
import os
|
|
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src")))
|
|
|
|
from src import api_hook_client
|
|
|
|
|
|
@pytest.mark.integration
|
|
def test_mma_epic_lifecycle(live_gui) -> None:
|
|
client = api_hook_client.ApiHookClient()
|
|
assert client.wait_for_server(timeout=15)
|
|
|
|
# Reset
|
|
client.click("btn_reset")
|
|
time.sleep(2)
|
|
|
|
# Set provider and path
|
|
client.set_value("current_provider", "gemini_cli")
|
|
time.sleep(2)
|
|
mock_path = os.path.abspath("tests/mock_gemini_cli.py")
|
|
client.set_value("gcli_path", f'"{sys.executable}" "{mock_path}"')
|
|
time.sleep(2)
|
|
|
|
# Set epic and click
|
|
client.set_value("mma_epic_input", "Add timestamps")
|
|
time.sleep(1)
|
|
client.click("btn_mma_plan_epic")
|
|
|
|
# Wait and check
|
|
for i in range(30):
|
|
time.sleep(1)
|
|
status = client.get_mma_status()
|
|
proposed = status.get("proposed_tracks", [])
|
|
usage = status.get("mma_tier_usage", {})
|
|
t1 = usage.get("Tier 1", {})
|
|
|
|
print(
|
|
f"[{i}] Tier1: in={t1.get('input')}, out={t1.get('output')}, proposed={len(proposed)}",
|
|
flush=True,
|
|
)
|
|
|
|
if proposed:
|
|
print(f"SUCCESS: {proposed}", flush=True)
|
|
break
|
|
|
|
assert len(proposed) > 0, f"No tracks: {proposed}"
|