Files
cleveragents-core/robot/actor_examples.robot
T
aditya ef43947297 test(actor): add Robot Framework tests for actor examples
Create robot/actor_examples.robot with 17 integration test cases:
- Validate all 5 example YAML files load successfully
- Verify actor patterns (strategist, tool-only, graph, hierarchical)
- Check documentation completeness and pattern coverage
- Test invalid example rejection scenarios

Create robot/helper_actor_examples.py with validation commands.
Uses ${PYTHON} and ${CURDIR} per Robot Framework standards.
2026-02-18 10:45:49 +00:00

167 lines
8.9 KiB
Plaintext

*** Settings ***
Documentation Integration tests for actor YAML examples
... Validates that all actor example files load correctly
... and demonstrate expected patterns (strategist, executor,
... reviewer, tool-only, validation, graphs, hierarchical)
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_actor_examples.py
${EXAMPLES_DIR} ${CURDIR}/../examples/actors
${DOCS_DIR} ${CURDIR}/../docs/reference
*** Test Cases ***
Load All Example YAML Files
[Documentation] Verify all 5 example YAML files can be loaded successfully
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} count-examples ${EXAMPLES_DIR} cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} example-count:5
Validate Simple LLM Example
[Documentation] Load simple_llm.yaml and verify basic LLM actor structure
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} validate ${EXAMPLES_DIR}/simple_llm.yaml cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} actor-ok
Should Contain ${result.stdout} type:llm
Should Contain ${result.stdout} name:assistants/code_reviewer
Validate LLM With Tools Example
[Documentation] Load llm_with_tools.yaml and verify tools configuration
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} validate ${EXAMPLES_DIR}/llm_with_tools.yaml cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} actor-ok
Should Contain ${result.stdout} type:llm
Should Contain ${result.stdout} has-tools
Validate Tool Collection Example
[Documentation] Load tool_collection.yaml and verify tool-only actor
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} validate ${EXAMPLES_DIR}/tool_collection.yaml cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} actor-ok
Should Contain ${result.stdout} type:tool
Should Contain ${result.stdout} has-tools
Validate Simple Graph Example
[Documentation] Load simple_graph.yaml and verify linear graph structure
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} validate ${EXAMPLES_DIR}/simple_graph.yaml cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} actor-ok
Should Contain ${result.stdout} type:graph
Should Contain ${result.stdout} has-route
Validate Complex Graph Workflow Example
[Documentation] Load graph_workflow.yaml and verify complex graph with conditionals
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} validate ${EXAMPLES_DIR}/graph_workflow.yaml cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} actor-ok
Should Contain ${result.stdout} type:graph
Should Contain ${result.stdout} name:workflows/test_driven_dev
Should Contain ${result.stdout} has-route
Should Contain ${result.stdout} has-env-vars
Verify Strategist Pattern
[Documentation] Verify simple_llm.yaml follows strategist pattern (reviewer context)
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} check-pattern ${EXAMPLES_DIR}/simple_llm.yaml strategist cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} has-memory
Should Contain ${result.stdout} context-view:reviewer
Verify Tool-Only Pattern
[Documentation] Verify tool_collection.yaml follows tool-only pattern (no LLM)
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} check-pattern ${EXAMPLES_DIR}/tool_collection.yaml tool-only cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} pattern-ok:tool-only
Should Contain ${result.stdout} no-model
Verify Graph Pattern
[Documentation] Verify simple_graph.yaml follows graph workflow pattern
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} check-pattern ${EXAMPLES_DIR}/simple_graph.yaml graph cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} pattern-ok:graph
Should Contain ${result.stdout} has-entry-node
Should Contain ${result.stdout} has-exit-nodes
Verify Hierarchical Graph Pattern
[Documentation] Verify graph_workflow.yaml has hierarchical structure
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} check-pattern ${EXAMPLES_DIR}/graph_workflow.yaml hierarchical cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} pattern-ok:hierarchical
Should Contain ${result.stdout} has-subgraph
Verify Documentation References All Examples
[Documentation] Verify docs/reference/actors_examples.md references all example files
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} check-docs ${DOCS_DIR}/actors_examples.md cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} doc-references:simple_llm.yaml
Should Contain ${result.stdout} doc-references:llm_with_tools.yaml
Should Contain ${result.stdout} doc-references:tool_collection.yaml
Should Contain ${result.stdout} doc-references:simple_graph.yaml
Should Contain ${result.stdout} doc-references:graph_workflow.yaml
Verify Documentation Has Pattern Examples
[Documentation] Verify documentation includes all required actor patterns
[Tags] slow
${result}= Run Process ${PYTHON} ${HELPER} check-doc-patterns ${DOCS_DIR}/actors_examples.md cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} has-pattern:strategist
Should Contain ${result.stdout} has-pattern:executor
Should Contain ${result.stdout} has-pattern:reviewer
Should Contain ${result.stdout} has-pattern:tool-only
Should Contain ${result.stdout} has-pattern:validation
Should Contain ${result.stdout} has-pattern:hierarchical
Reject Invalid Actor Name
[Documentation] Verify that actor with invalid name (no namespace) is rejected
[Tags] slow
${invalid_yaml}= Set Variable ${TEMPDIR}${/}invalid_no_namespace.yaml
Create File ${invalid_yaml} name: InvalidName\ntype: llm\nmodel: gpt-4\n
${result}= Run Process ${PYTHON} ${HELPER} validate-invalid ${invalid_yaml} cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} expected-fail
Should Contain ${result.stdout} namespace
Reject LLM Actor Without Model
[Documentation] Verify that LLM actor without model field is rejected
[Tags] slow
${invalid_yaml}= Set Variable ${TEMPDIR}${/}invalid_llm_no_model.yaml
Create File ${invalid_yaml} name: test/actor\ntype: llm\ndescription: Missing model\n
${result}= Run Process ${PYTHON} ${HELPER} validate-invalid ${invalid_yaml} cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} expected-fail
Should Contain ${result.stdout} model
Reject TOOL Actor Without Tools
[Documentation] Verify that TOOL actor without tools list is rejected
[Tags] slow
${invalid_yaml}= Set Variable ${TEMPDIR}${/}invalid_tool_no_tools.yaml
Create File ${invalid_yaml} name: test/tools\ntype: tool\ndescription: Missing tools\n
${result}= Run Process ${PYTHON} ${HELPER} validate-invalid ${invalid_yaml} cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} expected-fail
Should Contain ${result.stdout} tool
Reject GRAPH Actor Without Route
[Documentation] Verify that GRAPH actor without route definition is rejected
[Tags] slow
${invalid_yaml}= Set Variable ${TEMPDIR}${/}invalid_graph_no_route.yaml
Create File ${invalid_yaml} name: test/workflow\ntype: graph\nmodel: gpt-4\ndescription: Missing route\n
${result}= Run Process ${PYTHON} ${HELPER} validate-invalid ${invalid_yaml} cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} expected-fail
Should Contain ${result.stdout} route