Files
cleveragents-core/robot/context_analysis_agent.robot
T
brent.edwards e8aa5ac268
CI / lint (pull_request) Successful in 15s
CI / typecheck (pull_request) Successful in 28s
CI / security (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 15s
CI / integration_tests (pull_request) Failing after 6m25s
CI / build (pull_request) Successful in 15s
CI / unit_tests (pull_request) Successful in 6m52s
CI / docker (pull_request) Successful in 9s
CI / coverage (pull_request) Successful in 5m5s
fix(ci): restore venv PATH, use absolute resource paths, and add timeouts in robot tests
- Restore session.env["PATH"] in integration_tests nox session to ensure
  Run Process uses venv Python instead of system Python
- Convert bare Resource references to ${CURDIR}/ absolute paths across
  30 robot files to fix CI resolution failures
- Add timeout=30s to all Run Process calls in rxpy_route_validation.robot
  to prevent hanging tests
- Tag 2 rxpy tests as slow (require running actors unavailable on CI)
- Fix LangGraph test to use correct config file (LANGGRAPH_CONFIG)
- All 204 tests pass (4 excluded: 2 slow + 2 discovery)
2026-02-13 02:42:57 +00:00

161 lines
6.9 KiB
Plaintext

*** Settings ***
Documentation Integration tests for ContextAnalysisAgent workflow
Resource ${CURDIR}/common.resource
Library Process
Library OperatingSystem
Library Collections
Library String
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${PYTHON} python
${SRC_DIR} ${CURDIR}/../src
${HELPER} ${CURDIR}/helper_context_analysis.py
*** Test Cases ***
Context Analysis Agent Module Can Be Imported
[Documentation] Verify the context analysis module can be imported
${result}= Run Process ${PYTHON} -c
... import sys; sys.path.insert(0, '${SRC_DIR}'); from cleveragents.agents.context_analysis import ContextAnalysisAgent; print('SUCCESS')
... shell=True
Should Contain ${result.stdout} SUCCESS
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Can Be Instantiated With Default Parameters
[Documentation] Create ContextAnalysisAgent with defaults
${script}= Catenate SEPARATOR=\n
... import sys
... sys.path.insert(0, '${SRC_DIR}')
... from cleveragents.agents.context_analysis import ContextAnalysisAgent
... agent = ContextAnalysisAgent()
... assert agent is not None
... assert agent.chunk_size == 2000
... assert agent.chunk_overlap == 200
... assert agent.llm is not None
... print('Agent initialized successfully')
${result}= Run Process ${PYTHON} -c ${script}
Should Contain ${result.stdout} initialized successfully
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Can Be Instantiated With Custom Chunk Settings
[Documentation] Create ContextAnalysisAgent with custom chunk_size and overlap
${script}= Catenate SEPARATOR=\n
... import sys
... sys.path.insert(0, '${SRC_DIR}')
... from cleveragents.agents.context_analysis import ContextAnalysisAgent
... agent = ContextAnalysisAgent(chunk_size=1000, chunk_overlap=100)
... assert agent.chunk_size == 1000
... assert agent.chunk_overlap == 100
... print('Chunk size: ' + str(agent.chunk_size) + ', overlap: ' + str(agent.chunk_overlap))
${result}= Run Process ${PYTHON} -c ${script}
Should Contain ${result.stdout} Chunk size: 1000
Should Contain ${result.stdout} overlap: 100
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Workflow Contains Expected Nodes
[Documentation] Verify all workflow nodes are present using helper script
${result}= Run Process ${PYTHON} ${HELPER} nodes
Log ${result.stdout}
Log ${result.stderr}
Should Contain ${result.stdout} SUCCESS
Should Contain ${result.stdout} All nodes present
Should Be Equal As Integers ${result.rc} 0
LangGraph Graphs Package Exports Context Analysis Agent
[Documentation] Ensure cleveragents.agents.graphs exports ContextAnalysisAgent
${script}= Catenate SEPARATOR=\n
... import sys
... sys.path.insert(0, '${SRC_DIR}')
... from cleveragents.agents.graphs import ContextAnalysisAgent, __all__
... from cleveragents.agents import ContextAnalysisAgent as ExportedContextAgent
... assert 'ContextAnalysisAgent' in __all__
... assert ContextAnalysisAgent is ExportedContextAgent
... print('ContextAnalysisAgent export verified')
${result}= Run Process ${PYTHON} -c ${script}
Should Contain ${result.stdout} ContextAnalysisAgent export verified
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Can Load Files
[Documentation] Test file loading functionality using helper script
${result}= Run Process ${PYTHON} ${HELPER} load_files
Log ${result.stdout}
Log ${result.stderr}
Should Contain ${result.stdout} SUCCESS
Should Contain ${result.stdout} Loaded
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Handles Missing Files
[Documentation] Test error handling for missing files using helper script
${result}= Run Process ${PYTHON} ${HELPER} missing_file
Log ${result.stdout}
Log ${result.stderr}
Should Contain ${result.stdout} SUCCESS
Should Contain ${result.stdout} Error handled
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Invoke Returns Complete Result
[Documentation] Test complete workflow execution via invoke using helper script
${result}= Run Process ${PYTHON} ${HELPER} invoke
Log ${result.stdout}
Log ${result.stderr}
Should Contain ${result.stdout} SUCCESS
Should Contain ${result.stdout} Workflow completed
Should Be Equal As Integers ${result.rc} 0
Context Analysis Agent Streaming Produces Updates
[Documentation] Test streaming workflow execution using helper script
${result}= Run Process ${PYTHON} ${HELPER} streaming
Log ${result.stdout}
Log ${result.stderr}
Should Contain ${result.stdout} SUCCESS
Should Contain ${result.stdout} stream updates
Should Be Equal As Integers ${result.rc} 0
Context Update Summary Models Validate Incoming Data
[Documentation] Ensure ContextUpdateResult and SummaryForUpdateContextParams accept camelCase payloads
${script}= Catenate SEPARATOR=\n
... import sys
... sys.path.insert(0, '${SRC_DIR}')
... from cleveragents.domain.models.core.context import (
... ContextType,
... ContextUpdateResult,
... SummaryForUpdateContextParams,
... )
... result = ContextUpdateResult(
... updatedContexts=[
... {
... "plan_id": 1,
... "type": ContextType.FILE,
... "path": "/tmp/main.py",
... "size": 256,
... }
... ],
... tokenDiffsById={"ctx-1": {"added": 10, "removed": 0}},
... tokensDiff=10,
... totalTokens=128,
... numFiles=1,
... numUrls=0,
... numImages=0,
... numTrees=0,
... numMaps=0,
... maxTokens=2048,
... )
... summary = SummaryForUpdateContextParams(
... numFiles=2,
... numTrees=1,
... numUrls=1,
... numMaps=0,
... tokensDiff=15,
... totalTokens=320,
... )
... assert result.num_files == 1
... assert result.updated_contexts[0].path.endswith("main.py")
... assert summary.num_urls == 1
... assert summary.tokens_diff == 15
... print('Context update models validated')
${result}= Run Process ${PYTHON} -c ${script}
Should Contain ${result.stdout} Context update models validated
Should Be Equal As Integers ${result.rc} 0