This commit is contained in:
@@ -46,6 +46,13 @@ class FakeJobManager:
|
||||
click_pause: float = 0.10,
|
||||
reasoning_effort: str = "medium",
|
||||
screen_context_decay_steps: int = 4,
|
||||
max_visual_context_images: int = 3,
|
||||
native_automation_mode: str = "prefer",
|
||||
dialog_timeout_seconds: float = 12.0,
|
||||
focus_timeout_seconds: float = 8.0,
|
||||
ui_element_timeout_seconds: float = 8.0,
|
||||
max_retries_per_surface: int = 3,
|
||||
pretty_logs: bool = False,
|
||||
disabled_tools: list[str] | None = None,
|
||||
safety_override: bool = False,
|
||||
no_failsafe: bool = False,
|
||||
@@ -69,6 +76,13 @@ class FakeJobManager:
|
||||
"click_pause": click_pause,
|
||||
"reasoning_effort": reasoning_effort,
|
||||
"screen_context_decay_steps": screen_context_decay_steps,
|
||||
"max_visual_context_images": max_visual_context_images,
|
||||
"native_automation_mode": native_automation_mode,
|
||||
"dialog_timeout_seconds": dialog_timeout_seconds,
|
||||
"focus_timeout_seconds": focus_timeout_seconds,
|
||||
"ui_element_timeout_seconds": ui_element_timeout_seconds,
|
||||
"max_retries_per_surface": max_retries_per_surface,
|
||||
"pretty_logs": pretty_logs,
|
||||
"no_failsafe": no_failsafe,
|
||||
}
|
||||
self._jobs[job_id] = {
|
||||
@@ -293,6 +307,7 @@ def _build_app(tmp_path: Path, monkeypatch: Any, disable_ui: bool = False):
|
||||
port=8787,
|
||||
runs_dir=tmp_path / "runs",
|
||||
db_path=tmp_path / "screenjob_test.db",
|
||||
prohibited_key_combos=("ctrl+shift+s",),
|
||||
)
|
||||
config.runs_dir.mkdir(parents=True, exist_ok=True)
|
||||
app = server_module.create_app(config)
|
||||
@@ -326,6 +341,13 @@ def test_create_job_returns_only_job_id_and_defaults_model(tmp_path: Path, monke
|
||||
assert manager.last_submit_payload["disabled_tools"] == ["click"]
|
||||
assert manager.last_submit_payload["reasoning_effort"] == "medium"
|
||||
assert manager.last_submit_payload["screen_context_decay_steps"] == 4
|
||||
assert manager.last_submit_payload["max_visual_context_images"] == 3
|
||||
assert manager.last_submit_payload["native_automation_mode"] == "prefer"
|
||||
assert manager.last_submit_payload["dialog_timeout_seconds"] == 12.0
|
||||
assert manager.last_submit_payload["focus_timeout_seconds"] == 8.0
|
||||
assert manager.last_submit_payload["ui_element_timeout_seconds"] == 8.0
|
||||
assert manager.last_submit_payload["max_retries_per_surface"] == 3
|
||||
assert manager.last_submit_payload["pretty_logs"] is False
|
||||
|
||||
status_res = client.get(f"/api/jobs/{job_id}/status", headers=headers)
|
||||
assert status_res.status_code == 200
|
||||
@@ -334,6 +356,36 @@ def test_create_job_returns_only_job_id_and_defaults_model(tmp_path: Path, monke
|
||||
assert "data" in status_res.json()["response"]
|
||||
|
||||
|
||||
def test_create_job_rejects_invalid_disabled_tool_names(tmp_path: Path, monkeypatch: Any) -> None:
|
||||
app, _ = _build_app(tmp_path, monkeypatch, disable_ui=False)
|
||||
client = TestClient(app)
|
||||
headers = {"Authorization": "Bearer test_token"}
|
||||
|
||||
response = client.post(
|
||||
"/api/jobs",
|
||||
headers=headers,
|
||||
json={"job": "Open amazon.de", "disabled_tools": ["not_a_real_tool"], "safety_override": True},
|
||||
)
|
||||
|
||||
assert response.status_code == 400
|
||||
assert "Unknown disabled tool" in response.json()["detail"]
|
||||
|
||||
|
||||
def test_create_job_rejects_disabling_task_complete(tmp_path: Path, monkeypatch: Any) -> None:
|
||||
app, _ = _build_app(tmp_path, monkeypatch, disable_ui=False)
|
||||
client = TestClient(app)
|
||||
headers = {"Authorization": "Bearer test_token"}
|
||||
|
||||
response = client.post(
|
||||
"/api/jobs",
|
||||
headers=headers,
|
||||
json={"job": "Open amazon.de", "disabled_tools": ["task_complete"], "safety_override": True},
|
||||
)
|
||||
|
||||
assert response.status_code == 400
|
||||
assert "Cannot disable required tool" in response.json()["detail"]
|
||||
|
||||
|
||||
def test_cancel_endpoint_and_events(tmp_path: Path, monkeypatch: Any) -> None:
|
||||
app, _ = _build_app(tmp_path, monkeypatch, disable_ui=False)
|
||||
client = TestClient(app)
|
||||
|
||||
Reference in New Issue
Block a user