forked from Rockachopa/Timmy-time-dashboard
feat: code quality audit + autoresearch integration + infra hardening (#150)
This commit is contained in:
committed by
GitHub
parent
fd0ede0d51
commit
ae3bb1cc21
@@ -20,6 +20,7 @@ try:
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
|
||||
HAS_SELENIUM = True
|
||||
except ImportError:
|
||||
HAS_SELENIUM = False
|
||||
@@ -66,18 +67,14 @@ def _load_dashboard(driver):
|
||||
"""Navigate to dashboard and wait for Timmy panel to load."""
|
||||
driver.get(DASHBOARD_URL)
|
||||
WebDriverWait(driver, 15).until(
|
||||
EC.presence_of_element_located(
|
||||
(By.XPATH, "//*[contains(text(), 'TIMMY INTERFACE')]")
|
||||
)
|
||||
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'TIMMY INTERFACE')]"))
|
||||
)
|
||||
|
||||
|
||||
def _wait_for_sidebar(driver):
|
||||
"""Wait for the agent sidebar to finish its HTMX load."""
|
||||
WebDriverWait(driver, 15).until(
|
||||
EC.presence_of_element_located(
|
||||
(By.XPATH, "//*[contains(text(), 'SWARM AGENTS')]")
|
||||
)
|
||||
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'SWARM AGENTS')]"))
|
||||
)
|
||||
|
||||
|
||||
@@ -100,8 +97,7 @@ def _send_chat_and_wait(driver, message):
|
||||
|
||||
# Wait for a NEW agent response (not one from a prior test)
|
||||
WebDriverWait(driver, 30).until(
|
||||
lambda d: len(d.find_elements(By.CSS_SELECTOR, ".chat-message.agent"))
|
||||
> existing
|
||||
lambda d: len(d.find_elements(By.CSS_SELECTOR, ".chat-message.agent")) > existing
|
||||
)
|
||||
|
||||
return existing
|
||||
@@ -144,9 +140,7 @@ class TestPageLoad:
|
||||
def test_health_panel_loads(self, driver):
|
||||
_load_dashboard(driver)
|
||||
WebDriverWait(driver, 10).until(
|
||||
EC.presence_of_element_located(
|
||||
(By.XPATH, "//*[contains(text(), 'SYSTEM HEALTH')]")
|
||||
)
|
||||
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'SYSTEM HEALTH')]"))
|
||||
)
|
||||
|
||||
|
||||
@@ -168,9 +162,7 @@ class TestChatInteraction:
|
||||
lambda d: d.execute_script("return document.readyState") == "complete"
|
||||
)
|
||||
|
||||
existing_agents = len(
|
||||
driver.find_elements(By.CSS_SELECTOR, ".chat-message.agent")
|
||||
)
|
||||
existing_agents = len(driver.find_elements(By.CSS_SELECTOR, ".chat-message.agent"))
|
||||
|
||||
inp = driver.find_element(By.CSS_SELECTOR, "input[name='message']")
|
||||
inp.send_keys("hello from selenium")
|
||||
@@ -183,8 +175,7 @@ class TestChatInteraction:
|
||||
|
||||
# 2. Agent response arrives
|
||||
WebDriverWait(driver, 30).until(
|
||||
lambda d: len(d.find_elements(By.CSS_SELECTOR, ".chat-message.agent"))
|
||||
> existing_agents
|
||||
lambda d: len(d.find_elements(By.CSS_SELECTOR, ".chat-message.agent")) > existing_agents
|
||||
)
|
||||
|
||||
# 3. Input cleared (regression test)
|
||||
@@ -195,12 +186,8 @@ class TestChatInteraction:
|
||||
# 4. Chat scrolled to bottom (regression test)
|
||||
chat_log = driver.find_element(By.ID, "chat-log")
|
||||
scroll_top = driver.execute_script("return arguments[0].scrollTop", chat_log)
|
||||
scroll_height = driver.execute_script(
|
||||
"return arguments[0].scrollHeight", chat_log
|
||||
)
|
||||
client_height = driver.execute_script(
|
||||
"return arguments[0].clientHeight", chat_log
|
||||
)
|
||||
scroll_height = driver.execute_script("return arguments[0].scrollHeight", chat_log)
|
||||
client_height = driver.execute_script("return arguments[0].clientHeight", chat_log)
|
||||
|
||||
if scroll_height > client_height:
|
||||
gap = scroll_height - scroll_top - client_height
|
||||
@@ -217,18 +204,14 @@ class TestTaskPanel:
|
||||
"""Task panel loads correctly when navigated to directly."""
|
||||
driver.get(f"{DASHBOARD_URL}/swarm/tasks/panel")
|
||||
WebDriverWait(driver, 10).until(
|
||||
EC.presence_of_element_located(
|
||||
(By.XPATH, "//*[contains(text(), 'CREATE TASK')]")
|
||||
)
|
||||
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'CREATE TASK')]"))
|
||||
)
|
||||
|
||||
def test_task_panel_has_form(self, driver):
|
||||
"""Task creation panel has description and agent fields."""
|
||||
driver.get(f"{DASHBOARD_URL}/swarm/tasks/panel")
|
||||
WebDriverWait(driver, 10).until(
|
||||
EC.presence_of_element_located(
|
||||
(By.XPATH, "//*[contains(text(), 'CREATE TASK')]")
|
||||
)
|
||||
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'CREATE TASK')]"))
|
||||
)
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, "textarea[name='description']")
|
||||
@@ -249,9 +232,7 @@ class TestTaskPanel:
|
||||
task_btn.click()
|
||||
|
||||
WebDriverWait(driver, 10).until(
|
||||
EC.presence_of_element_located(
|
||||
(By.XPATH, "//*[contains(text(), 'CREATE TASK')]")
|
||||
)
|
||||
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'CREATE TASK')]"))
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user