Files
cleveractors-core/robot/email_graph_components.robot
CoreRasurae 38fe40553d test(robot): add end-to-end integration tests for email categorization actor graph
Adds 104 Robot Framework integration tests exercising the full
6-agent email categorization actor graph across five configuration
strategies: local, remote, mixed, component-decomposed (merge_configs),
and namespaced (local: refs via ReferenceResolver + LocalPackageStore).

- 7 new email graph YAML fixtures under tests/fixtures/email_graph/
- 7 namespaced component YAMLs with local namespace identifiers
- 9 robot test suite files (email_categorization_graph, per-agent,
  negative tests, merge_configs validation, components, namespaced)
- EmailGraphLib.py keyword library (executor, graph, merge, components)
- CleverActorsLib.py refactored into per-module libs:
  robot/lib/config_lib.py, app_lib.py, registry_lib.py
- email_testdata.resource with 12 realistic email scenarios
- All 104 integration tests pass, all 23 existing tests preserved

Closes #30
2026-06-15 23:13:35 +01:00

101 lines
3.8 KiB
Plaintext

*** Settings ***
Documentation Component-based integration tests for the email categorization graph.
... Each agent is defined in its own YAML file. The main graph
... routes file references them. All components are assembled via
... merge_configs() at test time, validating the decomposed
... component pattern end-to-end.
Library EmailGraphLib.py
Resource resources/email_testdata.resource
*** Test Cases ***
Component Graph Assembles Six Actors
[Documentation] Loading all 7 component files (6 agents + 1 routes) and
... merging produces a config with exactly 6 actors.
Component Graph Actor Count Equals 6
Component Graph Executes Component Order Email
[Documentation] Full graph assembled from components processes a
... component order email end-to-end.
Create Executor From Components
Execute Email Graph ${COMPONENT_ORDER_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Executes Personal Email
[Documentation] Personal email through component-assembled graph.
Create Executor From Components
Execute Email Graph ${PERSONAL_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Executes Business Email
[Documentation] Business email through component-assembled graph.
Create Executor From Components
Execute Email Graph ${BUSINESS_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Executes Supplier Email
[Documentation] Supplier email through component-assembled graph.
Create Executor From Components
Execute Email Graph ${SUPPLIER_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Executes Client Email
[Documentation] Client email through component-assembled graph.
Create Executor From Components
Execute Email Graph ${CLIENT_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Handles Unknown Email
[Documentation] Email with no recognizable category still executes.
Create Executor From Components
Execute Email Graph ${UNKNOWN_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Handles Empty Input
[Documentation] Empty email handled gracefully in component graph.
Create Executor From Components
Execute Email Graph ${EMPTY_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Returns State
[Documentation] Component-assembled graph returns state for ADR-2026.
Create Executor From Components
Execute Email Graph ${COMPONENT_ORDER_EMAIL}
Result Has State
Result State Contains Key current_message
Result State Contains Key last_output
Component Graph Streaming Execution
[Documentation] Streaming path works with component-assembled graph.
Create Executor From Components
Execute Email Graph Stream ${BUSINESS_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Component Graph With Supplier Delivery Email
[Documentation] Delivery update email through assembled components.
Create Executor From Components
Execute Email Graph ${SUPPLIER_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes
Component Graph With Client Bid Request
[Documentation] Client bid request through assembled components.
Create Executor From Components
Execute Email Graph ${CLIENT_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes
Component Graph Merge Preserves Routes
[Documentation] The merged component config preserves graph topology.
${merged}= Load All Email Components
Merged Config Has Nested Key ${merged} routes main
Merged Config Has Nested Key ${merged} routes main nodes
Merged Config Has Nested Key ${merged} routes main edges