39b080d457
- Fix Set Suite Variable and Set Test Variable keyword calls - Fix Run Keyword And Ignore Error spacing and argument separation - WF16 now has 0 syntax failures
534 lines
22 KiB
XML
534 lines
22 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<robot generator="Robot 7.4.1 (Python 3.13.3 on linux)" generated="2026-04-07T03:32:36.199092" rpa="false" schemaversion="5">
|
|
<suite id="s1" name="Wf16 Devcontainer" source="/app/robot/e2e/wf16_devcontainer.robot">
|
|
<kw name="WF16 Suite Setup" type="SETUP">
|
|
<kw name="E2E Suite Setup" owner="common_e2e">
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>Setting up E2E test environment</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.271256" elapsed="0.000215"/>
|
|
</kw>
|
|
<kw name="Replace String" owner="String">
|
|
<var>${safe_suite}</var>
|
|
<arg>${SUITE NAME}</arg>
|
|
<arg>${SPACE}</arg>
|
|
<arg>_</arg>
|
|
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.271600" elapsed="0.000105"/>
|
|
</kw>
|
|
<kw name="Replace String" owner="String">
|
|
<var>${safe_suite}</var>
|
|
<arg>${safe_suite}</arg>
|
|
<arg>.</arg>
|
|
<arg>_</arg>
|
|
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.271812" elapsed="0.000089"/>
|
|
</kw>
|
|
<kw name="Replace String Using Regexp" owner="String">
|
|
<var>${safe_suite}</var>
|
|
<arg>${safe_suite}</arg>
|
|
<arg>[^A-Za-z0-9_-]</arg>
|
|
<arg>_</arg>
|
|
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.271997" elapsed="0.000079"/>
|
|
</kw>
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${home}</var>
|
|
<arg>${E2E_TEMP_ROOT}${/}${safe_suite}</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.272165" elapsed="0.000154"/>
|
|
</kw>
|
|
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
|
|
<kw name="Remove Directory" owner="OperatingSystem">
|
|
<arg>${home}</arg>
|
|
<arg>recursive=True</arg>
|
|
<doc>Removes the directory pointed to by the given ``path``.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.272723" elapsed="0.000076"/>
|
|
</kw>
|
|
<var>${rm_status}</var>
|
|
<var>${rm_msg}</var>
|
|
<arg>Remove Directory</arg>
|
|
<arg>${home}</arg>
|
|
<arg>recursive=True</arg>
|
|
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.272420" elapsed="0.000413"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${rm_status}' == 'FAIL'">
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>Could not remove previous suite home ${home}: ${rm_msg}</arg>
|
|
<arg>WARN</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.273051" elapsed="0.000202"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.272929" elapsed="0.000359"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.272900" elapsed="0.000418"/>
|
|
</if>
|
|
<kw name="Create Directory" owner="OperatingSystem">
|
|
<arg>${home}</arg>
|
|
<doc>Creates the specified directory.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.273400" elapsed="0.000048"/>
|
|
</kw>
|
|
<kw name="Set Environment Variable" owner="OperatingSystem">
|
|
<arg>CLEVERAGENTS_HOME</arg>
|
|
<arg>${home}</arg>
|
|
<doc>Sets an environment variable to a specified value.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.273527" elapsed="0.000055"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${SUITE_HOME}</arg>
|
|
<arg>${home}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.273675" elapsed="0.000161"/>
|
|
</kw>
|
|
<kw name="Set Environment Variable" owner="OperatingSystem">
|
|
<arg>CLEVERAGENTS_AUTO_APPLY_MIGRATIONS</arg>
|
|
<arg>true</arg>
|
|
<doc>Sets an environment variable to a specified value.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.273917" elapsed="0.000072"/>
|
|
</kw>
|
|
<kw name="Remove Environment Variable" owner="OperatingSystem">
|
|
<arg>CLEVERAGENTS_TESTING_USE_MOCK_AI</arg>
|
|
<doc>Deletes the specified environment variable.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.274070" elapsed="0.000045"/>
|
|
</kw>
|
|
<kw name="Evaluate" owner="BuiltIn">
|
|
<var>${python_exec}</var>
|
|
<arg>sys.executable</arg>
|
|
<arg>sys</arg>
|
|
<doc>Evaluates the given expression in Python and returns the result.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.274196" elapsed="0.000170"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${PYTHON}</arg>
|
|
<arg>${python_exec}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.274459" elapsed="0.000153"/>
|
|
</kw>
|
|
<kw name="Run CleverAgents Command" owner="common_e2e">
|
|
<kw name="Run Process" owner="Process">
|
|
<var>${result}</var>
|
|
<arg>${PYTHON}</arg>
|
|
<arg>-m</arg>
|
|
<arg>cleveragents</arg>
|
|
<arg>@{args}</arg>
|
|
<arg>cwd=${cwd}</arg>
|
|
<arg>timeout=${timeout}</arg>
|
|
<arg>on_timeout=kill</arg>
|
|
<arg>env:CLEVERAGENTS_HOME=${SUITE_HOME}</arg>
|
|
<arg>env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true</arg>
|
|
<arg>env:NO_COLOR=1</arg>
|
|
<doc>Runs a process and waits for it to complete.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.274947" elapsed="0.000302"/>
|
|
</kw>
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>STDOUT: ${result.stdout}</arg>
|
|
<arg>level=DEBUG</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.275355" elapsed="0.000204"/>
|
|
</kw>
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>STDERR: ${result.stderr}</arg>
|
|
<arg>level=DEBUG</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.275649" elapsed="0.000188"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${expected_rc}' != 'None'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${result.rc}</arg>
|
|
<arg>${expected_rc}</arg>
|
|
<arg>CleverAgents command failed with rc=${result.rc}. Check DEBUG-level log entries above.</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.276004" elapsed="0.000180"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.275912" elapsed="0.000308"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.275894" elapsed="0.000358"/>
|
|
</if>
|
|
<return>
|
|
<value>${result}</value>
|
|
<status status="PASS" start="2026-04-07T03:32:36.276295" elapsed="0.000022"/>
|
|
</return>
|
|
<var>${init}</var>
|
|
<arg>init</arg>
|
|
<arg>e2e_test</arg>
|
|
<arg>--yes</arg>
|
|
<arg>--force</arg>
|
|
<arg>--path</arg>
|
|
<arg>${SUITE_HOME}</arg>
|
|
<doc>Run a CleverAgents CLI command and return the result.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.274801" elapsed="0.001556"/>
|
|
</kw>
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${init.rc}</arg>
|
|
<arg>0</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.276448" elapsed="0.000151"/>
|
|
</kw>
|
|
<kw name="Directory Should Exist" owner="OperatingSystem">
|
|
<arg>${SUITE_HOME}${/}.cleveragents</arg>
|
|
<doc>Fails unless the given path points to an existing directory.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.276687" elapsed="0.000047"/>
|
|
</kw>
|
|
<kw name="File Should Exist" owner="OperatingSystem">
|
|
<arg>${SUITE_HOME}${/}.cleveragents${/}db.sqlite</arg>
|
|
<doc>Fails unless the given ``path`` points to an existing file.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.276810" elapsed="0.000045"/>
|
|
</kw>
|
|
<doc>Set up the E2E test environment with per-suite isolation.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.270805" elapsed="0.006087"/>
|
|
</kw>
|
|
<kw name="Run CleverAgents Command" owner="common_e2e">
|
|
<kw name="Run Process" owner="Process">
|
|
<var>${result}</var>
|
|
<arg>${PYTHON}</arg>
|
|
<arg>-m</arg>
|
|
<arg>cleveragents</arg>
|
|
<arg>@{args}</arg>
|
|
<arg>cwd=${cwd}</arg>
|
|
<arg>timeout=${timeout}</arg>
|
|
<arg>on_timeout=kill</arg>
|
|
<arg>env:CLEVERAGENTS_HOME=${SUITE_HOME}</arg>
|
|
<arg>env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true</arg>
|
|
<arg>env:NO_COLOR=1</arg>
|
|
<doc>Runs a process and waits for it to complete.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.277184" elapsed="0.000284"/>
|
|
</kw>
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>STDOUT: ${result.stdout}</arg>
|
|
<arg>level=DEBUG</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.277576" elapsed="0.000186"/>
|
|
</kw>
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>STDERR: ${result.stderr}</arg>
|
|
<arg>level=DEBUG</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.277907" elapsed="0.000182"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${expected_rc}' != 'None'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${result.rc}</arg>
|
|
<arg>${expected_rc}</arg>
|
|
<arg>CleverAgents command failed with rc=${result.rc}. Check DEBUG-level log entries above.</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.278234" elapsed="0.000169"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.278156" elapsed="0.000283"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.278139" elapsed="0.000325"/>
|
|
</if>
|
|
<return>
|
|
<value>${result}</value>
|
|
<status status="PASS" start="2026-04-07T03:32:36.278497" elapsed="0.000014"/>
|
|
</return>
|
|
<var>${init}</var>
|
|
<arg>init --force --yes</arg>
|
|
<doc>Run a CleverAgents CLI command and return the result.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.277062" elapsed="0.001483"/>
|
|
</kw>
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${init.rc}</arg>
|
|
<arg>0</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.278624" elapsed="0.000151"/>
|
|
</kw>
|
|
<kw name="Evaluate" owner="BuiltIn">
|
|
<var>${suffix}</var>
|
|
<arg>__import__('uuid').uuid4().hex[:12]</arg>
|
|
<doc>Evaluates the given expression in Python and returns the result.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.278863" elapsed="0.000160"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${RUN_SUFFIX}</arg>
|
|
<arg>${suffix}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.279117" elapsed="0.000152"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${ACTION_NAME}</arg>
|
|
<arg>${ACTION_PREFIX}-${suffix}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.279359" elapsed="0.000153"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${RESOURCE_NAME}</arg>
|
|
<arg>${RESOURCE_PREFIX}-${suffix}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.279601" elapsed="0.000156"/>
|
|
</kw>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${PROJECT_NAME}</arg>
|
|
<arg>${PROJECT_PREFIX}-${suffix}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.279845" elapsed="0.000155"/>
|
|
</kw>
|
|
<kw name="Evaluate" owner="BuiltIn">
|
|
<var>${has_openai}</var>
|
|
<arg>bool(__import__('os').environ.get('OPENAI_API_KEY', ''))</arg>
|
|
<doc>Evaluates the given expression in Python and returns the result.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.280112" elapsed="0.000160"/>
|
|
</kw>
|
|
<kw name="Evaluate" owner="BuiltIn">
|
|
<var>${has_anthropic}</var>
|
|
<arg>bool(__import__('os').environ.get('ANTHROPIC_API_KEY', ''))</arg>
|
|
<doc>Evaluates the given expression in Python and returns the result.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.280415" elapsed="0.000225"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="${has_openai}">
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${actor}</var>
|
|
<arg>openai/gpt-4o-mini</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.280903" elapsed="0.000216"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.280763" elapsed="0.000395"/>
|
|
</branch>
|
|
<branch type="ELSE IF" condition="${has_anthropic}">
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${actor}</var>
|
|
<arg>anthropic/claude-sonnet-4-20250514</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.281294" elapsed="0.000163"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.281187" elapsed="0.000306"/>
|
|
</branch>
|
|
<branch type="ELSE">
|
|
<kw name="Set Variable" owner="BuiltIn">
|
|
<var>${actor}</var>
|
|
<arg>openai/gpt-4o-mini</arg>
|
|
<doc>Returns the given values which can then be assigned to a variables.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.281613" elapsed="0.000168"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.281518" elapsed="0.000298"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.280737" elapsed="0.001102"/>
|
|
</if>
|
|
<kw name="Set Suite Variable" owner="BuiltIn">
|
|
<arg>${SELECTED_ACTOR}</arg>
|
|
<arg>${actor}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.281938" elapsed="0.000178"/>
|
|
</kw>
|
|
<tag>tdd_issue tdd_issue_4188 tdd_expected_fail</tag>
|
|
<doc>E2E Suite Setup plus database initialisation, unique suffix
|
|
generation, and dynamic actor selection for WF16 tests.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.270458" elapsed="0.011707"/>
|
|
</kw>
|
|
<test id="s1-t1" name="WF16 Devcontainer Driven Development Supervised Profile" line="120">
|
|
<kw name="Skip If No LLM Keys" owner="common_e2e">
|
|
<kw name="Evaluate" owner="BuiltIn">
|
|
<var>${has_keys}</var>
|
|
<arg>bool(__import__('os').environ.get('ANTHROPIC_API_KEY', '')) or bool(__import__('os').environ.get('OPENAI_API_KEY', ''))</arg>
|
|
<doc>Evaluates the given expression in Python and returns the result.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.283361" elapsed="0.000163"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="not ${has_keys}">
|
|
<kw name="Skip" owner="BuiltIn">
|
|
<arg>No LLM API keys available (ANTHROPIC_API_KEY / OPENAI_API_KEY). Skipping E2E test.</arg>
|
|
<doc>Skips the rest of the current test.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.283680" elapsed="0.000140"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.283603" elapsed="0.000248"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.283584" elapsed="0.000292"/>
|
|
</if>
|
|
<doc>Skip the current test if no LLM API keys are available.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.283184" elapsed="0.000722"/>
|
|
</kw>
|
|
<kw name="Evaluate" owner="BuiltIn">
|
|
<var>${ac_checks_missing}</var>
|
|
<arg>[]</arg>
|
|
<doc>Evaluates the given expression in Python and returns the result.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.283999" elapsed="0.000143"/>
|
|
</kw>
|
|
<kw name="Set Test Variable" owner="BuiltIn">
|
|
<arg>${WF16_PLAN_ID}</arg>
|
|
<arg>${EMPTY}</arg>
|
|
<doc>Makes a variable available everywhere within the scope of the current test.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.284237" elapsed="0.000152"/>
|
|
</kw>
|
|
<kw name="WF16 Test Teardown" type="TEARDOWN">
|
|
<kw name="Get Variable Value" owner="BuiltIn">
|
|
<var>${plan_id}</var>
|
|
<arg>${WF16_PLAN_ID}</arg>
|
|
<arg>${EMPTY}</arg>
|
|
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.284857" elapsed="0.000166"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${plan_id}' != ''">
|
|
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
|
|
<kw name="Run CleverAgents Command" owner="common_e2e">
|
|
<kw name="Run Process" owner="Process">
|
|
<var>${result}</var>
|
|
<arg>${PYTHON}</arg>
|
|
<arg>-m</arg>
|
|
<arg>cleveragents</arg>
|
|
<arg>@{args}</arg>
|
|
<arg>cwd=${cwd}</arg>
|
|
<arg>timeout=${timeout}</arg>
|
|
<arg>on_timeout=kill</arg>
|
|
<arg>env:CLEVERAGENTS_HOME=${SUITE_HOME}</arg>
|
|
<arg>env:CLEVERAGENTS_AUTO_APPLY_MIGRATIONS=true</arg>
|
|
<arg>env:NO_COLOR=1</arg>
|
|
<doc>Runs a process and waits for it to complete.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.285772" elapsed="0.000312"/>
|
|
</kw>
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>STDOUT: ${result.stdout}</arg>
|
|
<arg>level=DEBUG</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.286203" elapsed="0.000189"/>
|
|
</kw>
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>STDERR: ${result.stderr}</arg>
|
|
<arg>level=DEBUG</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.286479" elapsed="0.000181"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${expected_rc}' != 'None'">
|
|
<kw name="Should Be Equal As Integers" owner="BuiltIn">
|
|
<arg>${result.rc}</arg>
|
|
<arg>${expected_rc}</arg>
|
|
<arg>CleverAgents command failed with rc=${result.rc}. Check DEBUG-level log entries above.</arg>
|
|
<doc>Fails if objects are unequal after converting them to integers.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.286886" elapsed="0.000184"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.286806" elapsed="0.000301"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.286790" elapsed="0.000344"/>
|
|
</if>
|
|
<return>
|
|
<value>${result}</value>
|
|
<status status="PASS" start="2026-04-07T03:32:36.287170" elapsed="0.000016"/>
|
|
</return>
|
|
<arg>plan status ${plan_id} --format json</arg>
|
|
<arg>expected_rc=None</arg>
|
|
<arg>timeout=30s</arg>
|
|
<doc>Run a CleverAgents CLI command and return the result.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.285516" elapsed="0.001704"/>
|
|
</kw>
|
|
<var>${status}</var>
|
|
<var>${result}</var>
|
|
<arg>Run CleverAgents Command</arg>
|
|
<arg>plan status ${plan_id} --format json</arg>
|
|
<arg>expected_rc=None</arg>
|
|
<arg>timeout=30s</arg>
|
|
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.285185" elapsed="0.002066"/>
|
|
</kw>
|
|
<if>
|
|
<branch type="IF" condition="'${status}' == 'PASS'">
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>Teardown plan status: ${result.stdout}</arg>
|
|
<arg>WARN</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.287407" elapsed="0.000534"/>
|
|
</kw>
|
|
<status status="PASS" start="2026-04-07T03:32:36.287318" elapsed="0.000670"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.287304" elapsed="0.000710"/>
|
|
</if>
|
|
<status status="PASS" start="2026-04-07T03:32:36.285098" elapsed="0.002939"/>
|
|
</branch>
|
|
<status status="PASS" start="2026-04-07T03:32:36.285083" elapsed="0.002974"/>
|
|
</if>
|
|
<doc>Log diagnostic context on failure for debugging.
|
|
Captures plan status when a plan ID is available.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.284664" elapsed="0.003423"/>
|
|
</kw>
|
|
<doc>Supervised-profile workflow exercising devcontainer-specific
|
|
behaviors: auto-detection during resource registration,
|
|
lazy container build during execution, tool invocation
|
|
routing to the container workspace, and apply writing
|
|
changes back to the host filesystem via bind mount.
|
|
|
|
Devcontainer-specific assertions are enforced via
|
|
explicit AC checks. Missing AC indicators are collected
|
|
and reported as explicit test failures.
|
|
|
|
Tagged ``tdd_expected_fail`` because devcontainer features
|
|
are not yet fully wired; the listener inverts the failure
|
|
to a CI pass until all AC indicators are present.</doc>
|
|
<tag>E2E</tag>
|
|
<tag>tdd_issue tdd_issue_4188 tdd_expected_fail tdd_issue_1208</tag>
|
|
<timeout value="35 minutes"/>
|
|
<status status="PASS" start="2026-04-07T03:32:36.282340" elapsed="0.005787"/>
|
|
</test>
|
|
<kw name="E2E Suite Teardown" owner="common_e2e" type="TEARDOWN">
|
|
<kw name="Log" owner="BuiltIn">
|
|
<arg>Cleaning up E2E test environment</arg>
|
|
<doc>Logs the given message with the given level.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.288763" elapsed="0.000155"/>
|
|
</kw>
|
|
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
|
|
<kw name="Remove Directory" owner="OperatingSystem">
|
|
<arg>${SUITE_HOME}</arg>
|
|
<arg>recursive=True</arg>
|
|
<doc>Removes the directory pointed to by the given ``path``.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.289253" elapsed="0.000074"/>
|
|
</kw>
|
|
<arg>Remove Directory</arg>
|
|
<arg>${SUITE_HOME}</arg>
|
|
<arg>recursive=True</arg>
|
|
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.289020" elapsed="0.000341"/>
|
|
</kw>
|
|
<kw name="Remove Environment Variable" owner="OperatingSystem">
|
|
<arg>CLEVERAGENTS_HOME</arg>
|
|
<doc>Deletes the specified environment variable.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.289440" elapsed="0.000046"/>
|
|
</kw>
|
|
<kw name="Remove Environment Variable" owner="OperatingSystem">
|
|
<arg>CLEVERAGENTS_AUTO_APPLY_MIGRATIONS</arg>
|
|
<doc>Deletes the specified environment variable.</doc>
|
|
<status status="NOT RUN" start="2026-04-07T03:32:36.289560" elapsed="0.000044"/>
|
|
</kw>
|
|
<doc>Clean up the E2E test environment.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.288652" elapsed="0.000989"/>
|
|
</kw>
|
|
<doc>E2E test for Workflow Example 16: Devcontainer-Driven Development
|
|
(supervised automation profile).
|
|
|
|
Exercises the devcontainer-specific plan lifecycle:
|
|
devcontainer auto-detection during resource registration,
|
|
lazy container build during plan execution, tool invocation
|
|
routing to the container workspace, and apply writing changes
|
|
back to the host filesystem via bind mount.
|
|
|
|
**Devcontainer-specific assertions** are strict and contribute
|
|
to AC validation. If one or more AC indicators are missing,
|
|
the test records each unmet AC and fails explicitly rather
|
|
than skipping or passing silently.
|
|
|
|
The test is tagged ``tdd_expected_fail`` because devcontainer
|
|
features are not yet fully wired. The
|
|
``tdd_expected_fail_listener`` inverts the failure to a pass
|
|
in CI until all AC indicators are present.
|
|
|
|
Zero mocking — real CLI, real LLM API keys.</doc>
|
|
<status status="PASS" start="2026-04-07T03:32:36.200211" elapsed="0.089456"/>
|
|
</suite>
|
|
<statistics>
|
|
<total>
|
|
<stat pass="1" fail="0" skip="0">All Tests</stat>
|
|
</total>
|
|
<tag>
|
|
<stat pass="1" fail="0" skip="0">E2E</stat>
|
|
<stat pass="1" fail="0" skip="0">tdd_issue tdd_issue_4188 tdd_expected_fail tdd_issue_1208</stat>
|
|
</tag>
|
|
<suite>
|
|
<stat name="Wf16 Devcontainer" id="s1" pass="1" fail="0" skip="0">Wf16 Devcontainer</stat>
|
|
</suite>
|
|
</statistics>
|
|
<errors>
|
|
</errors>
|
|
</robot>
|