Files
cleveragents-core/robot/e2e/wf14_server_mode.robot
brent.edwards 998aaf25f8 fix(infra): ensure E2E suite setup initializes database before CLI commands
Centralize E2E initialization in common suite setup so DB-dependent CLI commands no longer rely on per-suite or per-test init workarounds. This also sanitizes suite-home names to prevent invalid path-derived initialization failures in isolated Robot runs.

ISSUES CLOSED: #1023
2026-04-03 01:43:27 +00:00

134 lines
7.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
*** Settings ***
Documentation E2E test for Workflow Example 14: server mode team collaboration.
...
... Validates the ``supervised`` automation profile in a distributed
... team scenario where multiple engineers share actions, actors, and
... projects via CleverAgents server mode. All commands exercise the
... real CLI with zero mocking.
...
... Coverage: Steps 12 (server config, resource publishing).
... Steps 34 (multi-machine usage, team monitoring) require a
... live server and are deferred.
Resource common_e2e.resource
Suite Setup WF14 Suite Setup
Suite Teardown WF14 Suite Teardown
Force Tags E2E
*** Keywords ***
WF14 Suite Setup
[Documentation] E2E Suite Setup plus unique run suffix generation.
E2E Suite Setup
# Generate a unique suffix for entity names to avoid UNIQUE
# constraint collisions on repeated E2E runs or parallel CI.
${suffix}= Evaluate __import__('uuid').uuid4().hex[:12]
Set Suite Variable ${RUN_SUFFIX} ${suffix}
WF14 Suite Teardown
[Documentation] Restore config state and clean up E2E test environment.
# Reset config keys set during the server config test to avoid
# contaminating subsequent test suites.
Run Keyword And Ignore Error Run CleverAgents Command config set server.url ${EMPTY} expected_rc=None
Run Keyword And Ignore Error Run CleverAgents Command config set server.token ${EMPTY} expected_rc=None
Run Keyword And Ignore Error Run CleverAgents Command config set core.namespace local expected_rc=None
E2E Suite Teardown
*** Test Cases ***
WF14 E2E Server Config Setup
[Documentation] Configure server URL, authentication token, and team namespace
... for server mode per Specification Example 14 Step 1.
# Set and verify server URL
${set_url}= Run CleverAgents Command config set server.url https://agents.example.com
Output Should Contain ${set_url} server.url
${get_url}= Run CleverAgents Command config get server.url
Output Should Contain ${get_url} https://agents.example.com
# Set and verify server token (spec Step 1 includes token configuration)
${set_token}= Run CleverAgents Command config set server.token tok_e2e_test_placeholder
Output Should Contain ${set_token} server.token
${get_token}= Run CleverAgents Command config get server.token
Output Should Contain ${get_token} tok_e2e_test_placeholder
# Set and verify team namespace
${set_ns}= Run CleverAgents Command config set core.namespace myteam
Output Should Contain ${set_ns} core.namespace
${get_ns}= Run CleverAgents Command config get core.namespace
Output Should Contain ${get_ns} myteam
WF14 E2E Diagnostics
[Documentation] Run diagnostics and verify basic health-check output.
... Diagnostics checks are all local (config, database, disk,
... API keys, git, etc.) so the command should succeed even
... without a live server. Server-mode diagnostics (Server
... connectivity, Namespace membership) shown in the spec are
... not yet implemented in the diagnostics command (spec gap).
${result}= Run CleverAgents Command diagnostics --format plain expected_rc=0
# Basic diagnostic categories should appear in the output
${combined}= Set Variable ${result.stdout}\n${result.stderr}
Should Contain Any ${combined} config Config configuration
Should Contain Any ${combined} database Database db
Should Contain Any ${combined} disk Disk space storage
WF14 E2E Action Create For Namespace
[Documentation] Create an action in the team namespace and verify it persists.
... Uses ``myteam/`` prefix per Specification Example 14 Step 2.
${action_name}= Set Variable myteam/gen-tests-${RUN_SUFFIX}
${yaml_content}= Catenate SEPARATOR=\n
... name: ${action_name}
... description: Generate unit tests for source modules
... strategy_actor: local/strategist
... execution_actor: local/executor
... definition_of_done: All source modules have corresponding unit tests.
... reusable: true
... read_only: true
${yaml_file}= Set Variable ${SUITE_HOME}${/}generate-tests-action.yaml
Create File ${yaml_file} ${yaml_content}
${create_result}= Run CleverAgents Command action create --config ${yaml_file}
Output Should Contain ${create_result} gen-tests
# Verify action persists across separate CLI invocations via action show
${show_result}= Run CleverAgents Command action show ${action_name}
Output Should Contain ${show_result} gen-tests
# Make the action name available for the namespace listing test
Set Suite Variable ${WF14_ACTION_NAME} ${action_name}
WF14 E2E Action List By Namespace
[Documentation] List shared actions filtered by team namespace.
... Validates Specification Example 14 Step 2:
... ``agents action list --namespace myteam``.
${list_result}= Run CleverAgents Command action list --namespace myteam --format plain
Output Should Contain ${list_result} gen-tests
WF14 E2E Actor Add For Namespace
[Documentation] Add an actor from YAML configuration and verify it appears.
... Custom actors must use the ``local/`` namespace prefix per
... the current ActorService validation.
${actor_name}= Set Variable local/team-rev-${RUN_SUFFIX}
${yaml_content}= Catenate SEPARATOR=\n
... name: ${actor_name}
... provider: openai
... model: gpt-4
... description: Team code reviewer actor for collaborative reviews
${yaml_file}= Set Variable ${SUITE_HOME}${/}team-reviewer-actor.yaml
Create File ${yaml_file} ${yaml_content}
${add_result}= Run CleverAgents Command actor add --config ${yaml_file}
Output Should Contain ${add_result} team-rev
# Use --format plain to avoid table truncation
${list_result}= Run CleverAgents Command actor list --format plain
Output Should Contain ${list_result} team-rev
WF14 E2E Plan List
[Documentation] Verify that the plan list command executes without crashing.
... No plans exist after init, so the output may be an empty table
... or an informational message. The ``--namespace`` flag is not
... yet implemented for plan list (spec gap).
${result}= Run CleverAgents Command plan list expected_rc=0
# After init, plan list should succeed (rc=0) even with an empty plan table
Should Not Be Empty ${result.stdout}${result.stderr}
WF14 E2E Supervised Profile Verification
[Documentation] Verify the built-in supervised automation profile exists and
... contains the expected confidence threshold fields.
${result}= Run CleverAgents Command automation-profile show supervised
Output Should Contain ${result} supervised
# Verify supervised-specific threshold fields are present in the output
Output Should Contain ${result} decompose_task
Output Should Contain ${result} execute_command
Output Should Contain ${result} approve_plan