Files
cleveractors-core/robot/email_categorization_graph.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

135 lines
5.4 KiB
Plaintext

*** Settings ***
Documentation End-to-end integration tests for the 6-agent email categorization
... actor graph. Exercises graph compilation, sequential execution
... through all 6 agents, state management, and result validation
... across local, remote, and mixed configurations.
...
... Graph topology: categorizer -> component_orders | personal_summarizer
... | business_email -> supplier | client.
... All edges have no conditions → all nodes execute sequentially.
Library EmailGraphLib.py
Library OperatingSystem
Resource resources/email_testdata.resource
*** Test Cases ***
Email Graph Compiles And Executes All Six Agents
[Documentation] Full local tool-agent graph compiles and executes without error.
... All 6 agents are created from their tool configs and run sequentially.
... The final output is from the last node (client).
Create Executor For Email Graph local_graph
Execute Email Graph ${COMPONENT_ORDER_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Result Response Contains client
Email Graph With Personal Email Input
[Documentation] Personal email input flows through all agents and completes.
Create Executor For Email Graph local_graph
Execute Email Graph ${PERSONAL_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Business Email Input
[Documentation] Business email with meetings and urgency flows through graph.
Create Executor For Email Graph local_graph
Execute Email Graph ${BUSINESS_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Unknown Email Input
[Documentation] Email with no recognizable keywords still executes all agents.
Create Executor For Email Graph local_graph
Execute Email Graph ${UNKNOWN_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Empty Email Input
[Documentation] Empty subject/body should not crash the graph pipeline.
Create Executor For Email Graph local_graph
Execute Email Graph ${EMPTY_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph Streaming Execution
[Documentation] Streaming execution path produces same result structure as sync.
Create Executor For Email Graph local_graph
Execute Email Graph Stream ${COMPONENT_ORDER_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph Remote Registry Configuration
[Documentation] Remote registry variant: all agents use registry-retrieved configs.
... Graph topology and execution are identical to local variant.
Create Executor For Email Graph remote_graph
Execute Email Graph ${COMPONENT_ORDER_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Result Response Contains registry
Email Graph Mixed Configuration
[Documentation] Mixed: categorizer is local, domain agents from registry.
... Validates hybrid local+remote config resolution.
Create Executor For Email Graph mixed_graph
Execute Email Graph ${BUSINESS_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph Returns State For Stateless Resumption
[Documentation] Graph execution returns opaque state dict for ADR-2026.
... State enables callers to resume execution from the same point.
Create Executor For Email Graph local_graph
Execute Email Graph ${COMPONENT_ORDER_EMAIL}
Result Is Valid Actor Result
Result Has State
Result State Contains Key current_message
Result State Contains Key last_output
Email Graph With Second Component Order Email
[Documentation] Another component order email with different part numbers.
Create Executor For Email Graph local_graph
Execute Email Graph ${COMPONENT_ORDER_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Second Personal Email
[Documentation] Shorter personal reply flows through all agents.
Create Executor For Email Graph local_graph
Execute Email Graph ${PERSONAL_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Second Business Email
[Documentation] Strategy sync email flows through the entire graph.
Create Executor For Email Graph local_graph
Execute Email Graph ${BUSINESS_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Client Email
[Documentation] Client proposal+support email exercises the full pipeline.
Create Executor For Email Graph local_graph
Execute Email Graph ${CLIENT_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Supplier Email
[Documentation] Supplier RFQ+delivery+invoice email through full pipeline.
Create Executor For Email Graph local_graph
Execute Email Graph ${SUPPLIER_EMAIL}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Client Bid Request
[Documentation] Client project bid with follow-up.
Create Executor For Email Graph local_graph
Execute Email Graph ${CLIENT_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes
Email Graph With Delivery Update
[Documentation] Supplier delivery update email.
Create Executor For Email Graph local_graph
Execute Email Graph ${SUPPLIER_EMAIL_2}
Result Is Valid Actor Result
Result Has Nodes