Tests (Robot): Add missing Robot Framework integration test for the reactive module #2801

Open
opened 2026-04-04 20:10:14 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: test/reactive-robot-integration
  • Commit Message: test(reactive): add Robot Framework integration test suite for reactive module
  • Milestone: v3.7.0
  • Parent Epic: #933

Background and Context

The src/cleveragents/reactive/ module provides the actor-first reactive routing, context management, and stream execution utilities that underpin the CleverAgents execution pipeline. Per the project specification and CONTRIBUTING.md's Multi-Level Testing Mandate, every module must have tests at all required levels: Behave BDD unit tests, Robot Framework integration tests, and ASV performance benchmarks.

A scan of /app/robot/ confirms that no .robot file currently targets the reactive module at the integration level. The module is a critical infrastructure component that bridges RxPy reactive streams with LangGraph graph execution, and its absence from the Robot Framework integration test suite means there is no end-to-end validation of the module's public API under realistic conditions.

The reactive module exposes the following key public classes and functions (confirmed via source inspection of src/cleveragents/reactive/):

  • application.pyReactiveCleverAgentsApp (top-level reactive application: load_configuration, skill_names, resolved_skill_tools, run_single_shot, run_with_context)
  • config_parser.pyAgentConfig, LangGraphConfig, HybridPipelineConfig, ReactiveConfig, ReactiveConfigParser (YAML config parsing: parse_files)
  • context_manager.pyContextManager (conversation context lifecycle: add_message, get_conversation_history, get_last_n_messages, save, clear, delete, update_state, get_state, exists, export_context, import_context, save_global_context, get_global_context)
  • route.pyRouteType, BridgeConfig, RouteConfig, RouteComplexityAnalyzer (route configuration and analysis: to_stream_config, to_graph_config, from_stream_config, from_graph_config, analyze_route, suggest_route_type)
  • route_bridge.pyRouteBridge (dynamic stream↔graph route switching: add_route, check_upgrade_conditions, check_downgrade_conditions, upgrade_stream_to_graph, downgrade_graph_to_stream)
  • stream_router.pyStreamType, StreamMessage, StreamConfig, SimpleToolAgent, SimpleLLMAgent, ReactiveStreamRouter (RxPy-based stream routing: register_agent, create_stream, send_message, split_stream, merge_streams, subscribe_to_output, subscribe_to_error, dispose)
  • graph_executor.pyGraphExecutor (iterative message-router graph traversal: execute, strip_routing_prefixes, strip_routing_prefixes_multiline)

The public exports from __init__.py are: application, config_parser, context_manager, route, route_bridge, stream_router.

Subtasks

  • Create robot/reactive_integration.robot covering ReactiveCleverAgentsApp (load_configuration, run_single_shot, run_with_context, skill_names, resolved_skill_tools)
  • Add Robot test scenarios for ReactiveConfigParser (parse_files with agent, langgraph, and hybrid pipeline configs; environment variable interpolation)
  • Add Robot test scenarios for ContextManager (full lifecycle: add_message, get_conversation_history, get_last_n_messages, save, clear, delete, update_state, get_state, exists, export_context, import_context)
  • Add Robot test scenarios for RouteConfig and RouteComplexityAnalyzer (to_stream_config, to_graph_config, from_stream_config, from_graph_config, analyze_route, suggest_route_type)
  • Add Robot test scenarios for RouteBridge (add_route, check_upgrade_conditions, check_downgrade_conditions, upgrade_stream_to_graph, downgrade_graph_to_stream)
  • Add Robot test scenarios for ReactiveStreamRouter (register_agent, create_stream, send_message, split_stream, merge_streams, subscribe_to_output, subscribe_to_error, dispose)
  • Add Robot test scenarios for GraphExecutor (execute with single-node and multi-node topologies, strip_routing_prefixes, strip_routing_prefixes_multiline)
  • Verify all scenarios pass under nox -e integration_tests
  • Confirm no mocking is used in any Robot test (per CONTRIBUTING.md: mocking is prohibited in integration tests)

Definition of Done

  • A robot/reactive_integration.robot file exists and covers all public classes and functions listed above
  • All Robot Framework scenarios pass under nox -e integration_tests with no failures or skips
  • No mock objects or test doubles are used in the Robot test file
  • nox -e lint passes with no new violations
  • nox -e typecheck passes with no new type errors
  • All nox stages pass
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: Unknown | Agent: ca-new-issue-creator

## Metadata - **Branch**: `test/reactive-robot-integration` - **Commit Message**: `test(reactive): add Robot Framework integration test suite for reactive module` - **Milestone**: v3.7.0 - **Parent Epic**: #933 ## Background and Context The `src/cleveragents/reactive/` module provides the actor-first reactive routing, context management, and stream execution utilities that underpin the CleverAgents execution pipeline. Per the project specification and `CONTRIBUTING.md`'s Multi-Level Testing Mandate, every module must have tests at all required levels: Behave BDD unit tests, Robot Framework integration tests, and ASV performance benchmarks. A scan of `/app/robot/` confirms that **no `.robot` file currently targets the `reactive` module** at the integration level. The module is a critical infrastructure component that bridges RxPy reactive streams with LangGraph graph execution, and its absence from the Robot Framework integration test suite means there is no end-to-end validation of the module's public API under realistic conditions. The `reactive` module exposes the following key public classes and functions (confirmed via source inspection of `src/cleveragents/reactive/`): - `application.py` — `ReactiveCleverAgentsApp` (top-level reactive application: `load_configuration`, `skill_names`, `resolved_skill_tools`, `run_single_shot`, `run_with_context`) - `config_parser.py` — `AgentConfig`, `LangGraphConfig`, `HybridPipelineConfig`, `ReactiveConfig`, `ReactiveConfigParser` (YAML config parsing: `parse_files`) - `context_manager.py` — `ContextManager` (conversation context lifecycle: `add_message`, `get_conversation_history`, `get_last_n_messages`, `save`, `clear`, `delete`, `update_state`, `get_state`, `exists`, `export_context`, `import_context`, `save_global_context`, `get_global_context`) - `route.py` — `RouteType`, `BridgeConfig`, `RouteConfig`, `RouteComplexityAnalyzer` (route configuration and analysis: `to_stream_config`, `to_graph_config`, `from_stream_config`, `from_graph_config`, `analyze_route`, `suggest_route_type`) - `route_bridge.py` — `RouteBridge` (dynamic stream↔graph route switching: `add_route`, `check_upgrade_conditions`, `check_downgrade_conditions`, `upgrade_stream_to_graph`, `downgrade_graph_to_stream`) - `stream_router.py` — `StreamType`, `StreamMessage`, `StreamConfig`, `SimpleToolAgent`, `SimpleLLMAgent`, `ReactiveStreamRouter` (RxPy-based stream routing: `register_agent`, `create_stream`, `send_message`, `split_stream`, `merge_streams`, `subscribe_to_output`, `subscribe_to_error`, `dispose`) - `graph_executor.py` — `GraphExecutor` (iterative message-router graph traversal: `execute`, `strip_routing_prefixes`, `strip_routing_prefixes_multiline`) The public exports from `__init__.py` are: `application`, `config_parser`, `context_manager`, `route`, `route_bridge`, `stream_router`. ## Subtasks - [ ] Create `robot/reactive_integration.robot` covering `ReactiveCleverAgentsApp` (`load_configuration`, `run_single_shot`, `run_with_context`, `skill_names`, `resolved_skill_tools`) - [ ] Add Robot test scenarios for `ReactiveConfigParser` (`parse_files` with agent, langgraph, and hybrid pipeline configs; environment variable interpolation) - [ ] Add Robot test scenarios for `ContextManager` (full lifecycle: `add_message`, `get_conversation_history`, `get_last_n_messages`, `save`, `clear`, `delete`, `update_state`, `get_state`, `exists`, `export_context`, `import_context`) - [ ] Add Robot test scenarios for `RouteConfig` and `RouteComplexityAnalyzer` (`to_stream_config`, `to_graph_config`, `from_stream_config`, `from_graph_config`, `analyze_route`, `suggest_route_type`) - [ ] Add Robot test scenarios for `RouteBridge` (`add_route`, `check_upgrade_conditions`, `check_downgrade_conditions`, `upgrade_stream_to_graph`, `downgrade_graph_to_stream`) - [ ] Add Robot test scenarios for `ReactiveStreamRouter` (`register_agent`, `create_stream`, `send_message`, `split_stream`, `merge_streams`, `subscribe_to_output`, `subscribe_to_error`, `dispose`) - [ ] Add Robot test scenarios for `GraphExecutor` (`execute` with single-node and multi-node topologies, `strip_routing_prefixes`, `strip_routing_prefixes_multiline`) - [ ] Verify all scenarios pass under `nox -e integration_tests` - [ ] Confirm no mocking is used in any Robot test (per CONTRIBUTING.md: mocking is prohibited in integration tests) ## Definition of Done - [ ] A `robot/reactive_integration.robot` file exists and covers all public classes and functions listed above - [ ] All Robot Framework scenarios pass under `nox -e integration_tests` with no failures or skips - [ ] No mock objects or test doubles are used in the Robot test file - [ ] `nox -e lint` passes with no new violations - [ ] `nox -e typecheck` passes with no new type errors - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: Unknown | Agent: ca-new-issue-creator
freemo added this to the v3.7.0 milestone 2026-04-04 20:10:20 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Medium — This is a testing gap, not a bug or blocking issue. The reactive module functions correctly but lacks Robot Framework integration test coverage per the Multi-Level Testing Mandate.
  • Milestone: v3.7.0 (TUI Implementation — no deadline assigned; lower priority than M1-M6 milestones)
  • MoSCoW: Should have — The Multi-Level Testing Mandate in CONTRIBUTING.md states every module must have tests at all required levels. This is an important quality requirement but does not block any feature work or current milestone delivery.
  • Parent Epic: #933 (A2A Protocol Compliance)

Note on parent epic linkage: The reactive module is more closely related to the execution pipeline than to A2A protocol compliance directly. However, the reactive module's ReactiveCleverAgentsApp serves as the top-level application entry point that routes through A2A, making #933 a reasonable parent. If a more specific "Execution Pipeline" or "Testing/Hardening" epic exists, this linkage could be refined.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Issue triaged by project owner: - **State**: Verified - **Priority**: Medium — This is a testing gap, not a bug or blocking issue. The reactive module functions correctly but lacks Robot Framework integration test coverage per the Multi-Level Testing Mandate. - **Milestone**: v3.7.0 (TUI Implementation — no deadline assigned; lower priority than M1-M6 milestones) - **MoSCoW**: Should have — The Multi-Level Testing Mandate in CONTRIBUTING.md states every module must have tests at all required levels. This is an important quality requirement but does not block any feature work or current milestone delivery. - **Parent Epic**: #933 (A2A Protocol Compliance) **Note on parent epic linkage:** The reactive module is more closely related to the execution pipeline than to A2A protocol compliance directly. However, the reactive module's `ReactiveCleverAgentsApp` serves as the top-level application entry point that routes through A2A, making #933 a reasonable parent. If a more specific "Execution Pipeline" or "Testing/Hardening" epic exists, this linkage could be refined. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core#2801
No description provided.