test_workflow_node_registry.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from __future__ import annotations
  2. import json
  3. import unittest
  4. from pathlib import Path
  5. from app.automation import get_node_definitions
  6. from app.schemas import AutomationWorkflowSaveRequest
  7. class WorkflowNodeRegistryTest(unittest.TestCase):
  8. def test_registered_nodes_have_chinese_descriptions(self) -> None:
  9. for definition in get_node_definitions():
  10. self.assertTrue(definition.get("description"), definition["type"])
  11. self.assertTrue(definition.get("label"), definition["type"])
  12. def test_reliability_and_console_nodes_are_registered(self) -> None:
  13. definitions = {item["type"]: item for item in get_node_definitions()}
  14. for node_type in [
  15. "browser.ensure_foreground",
  16. "browser.control",
  17. "media.control",
  18. "vision.verify_page",
  19. "vision.click_target",
  20. "vision.close_popups",
  21. ]:
  22. self.assertIn(node_type, definitions)
  23. def test_all_checked_in_workflows_match_schema(self) -> None:
  24. workflow_dir = Path(__file__).resolve().parents[2] / "workflows"
  25. paths = sorted(workflow_dir.glob("*.workflow.json"))
  26. self.assertGreater(len(paths), 0)
  27. for path in paths:
  28. AutomationWorkflowSaveRequest.model_validate(json.loads(path.read_text(encoding="utf-8")))
  29. if __name__ == "__main__":
  30. unittest.main()