131 lines
6.1 KiB
Gherkin
131 lines
6.1 KiB
Gherkin
@cli_streaming
|
|
Feature: CLI Streaming Integration
|
|
As a developer using CleverAgents
|
|
I want to see real-time progress when generating plans
|
|
So that I can track the AI's progress and debug issues
|
|
|
|
Background:
|
|
Given a temporary directory
|
|
And I initialize a new project named "streaming-test"
|
|
And I add a test file to the project
|
|
|
|
Scenario: Tell command without streaming flag works as before
|
|
When I run tell command "add error handling" without streaming
|
|
Then the command should complete successfully
|
|
And the output should contain "Plan created"
|
|
And the output should not contain "Loading context"
|
|
|
|
Scenario: Tell command with streaming flag shows real-time progress
|
|
When I run tell command "add error handling" with streaming
|
|
Then the command should complete successfully
|
|
And the output should contain "Starting plan generation"
|
|
And the output should contain "Loading context files"
|
|
And the output should contain "Analyzing requirements"
|
|
And the output should contain "Generating plan"
|
|
And the output should contain "Validating plan"
|
|
|
|
Scenario: Streaming output shows timing information
|
|
When I run tell command "add tests" with streaming
|
|
Then the command should complete successfully
|
|
And the output should match the pattern "✓.*\(\d+\.\d+s\)"
|
|
|
|
Scenario: Streaming shows node completion checkmarks
|
|
When I run tell command "refactor code" with streaming
|
|
Then the command should complete successfully
|
|
And the output should contain "✓ Loading context files"
|
|
And the output should contain "✓ Analyzing requirements"
|
|
And the output should contain "✓ Generating plan"
|
|
|
|
Scenario: Streaming tell honors actor selection
|
|
Given actor overrides are stubbed with default "openai" and alternates "anthropic"
|
|
When I run tell command "use defaults" with streaming
|
|
And I run tell command "use override" with streaming and actor "anthropic"
|
|
Then the actor resolver should resolve actors "openai,anthropic" in order
|
|
And actor stub "openai" should record 1 streaming call(s)
|
|
And actor stub "anthropic" should record 1 streaming call(s)
|
|
|
|
Scenario: Streaming progress updates in real-time
|
|
When I run tell command "add documentation" with streaming
|
|
Then each node should show progress before completion
|
|
And timing should be sequential
|
|
|
|
Scenario: Non-streaming mode is faster for simple commands
|
|
Given a temporary directory
|
|
And I initialize a new project named "streaming-test"
|
|
And I add a test file to the project
|
|
When I measure time for tell command "simple change" without streaming
|
|
And I measure time for tell command "another simple change" with streaming
|
|
Then both commands should complete successfully
|
|
And both should create valid plans
|
|
|
|
Scenario: Streaming handles errors gracefully
|
|
Given the AI provider is configured to fail
|
|
When I run tell command "this will fail" with streaming
|
|
Then the command should fail with an error message
|
|
And the output should show which node failed
|
|
And the error message should be user-friendly
|
|
|
|
Scenario: Streaming works with custom plan names
|
|
When I run tell command "add feature" with name "custom-plan" and streaming
|
|
Then the command should complete successfully
|
|
And a plan named "custom-plan" should exist
|
|
And the output should show streaming progress
|
|
|
|
Scenario: Streaming output is properly formatted with Rich
|
|
When I run tell command "add logging" with streaming
|
|
Then the command should complete successfully
|
|
And the output should use colored text
|
|
And the output should have proper indentation
|
|
And checkmarks and spinners should be properly rendered
|
|
|
|
Scenario: Multiple sequential streaming commands work correctly
|
|
When I run tell command "first change" with streaming
|
|
And I wait for completion
|
|
And I run tell command "second change" with streaming
|
|
Then both commands should complete successfully
|
|
And each should show independent progress
|
|
|
|
Scenario: Streaming works with large context
|
|
Given I add 10 files to the project
|
|
When I run tell command "refactor all files" with streaming
|
|
Then the command should complete successfully
|
|
And the loading context step should take longer
|
|
And all workflow stages should complete
|
|
|
|
Scenario: Streaming handles interruption gracefully
|
|
When I run tell command "long operation" with streaming
|
|
Then the command should complete successfully
|
|
And no corrupted state should remain
|
|
And all workflow stages should complete
|
|
|
|
Scenario: Streaming progress persists across checkpoints
|
|
When I run tell command "complex task" with streaming
|
|
Then the command should complete successfully
|
|
And checkpoint data should be saved
|
|
And the workflow should be resumable if interrupted
|
|
|
|
Scenario: Streaming shows validation failures clearly
|
|
Given the AI provider generates invalid code
|
|
When I run tell command "add feature" with streaming
|
|
Then the validation node should show an error
|
|
And the output should explain the validation failure
|
|
And suggestions for fixing should be provided
|
|
|
|
Scenario: Streaming output works in non-TTY environments
|
|
When I run tell command "add feature" with streaming
|
|
Then the command should complete successfully
|
|
And the output should be plain text
|
|
And progress information should still be visible
|
|
|
|
Scenario: Help text documents streaming flag
|
|
When I run "agents tell --help"
|
|
Then the output should contain "--stream"
|
|
And the description should mention "real-time progress"
|
|
|
|
Scenario: Streaming tell forwards actor options to provider
|
|
Given actor overrides are stubbed with default "alpha" and alternates ""
|
|
And actor stub "alpha" uses config blob {"provider": "alpha", "model": "alpha-model", "options": {"temperature": 0.2}, "graph_descriptor": {"nodes": 1}, "initial_context": {"branch": "main"}}
|
|
And I have a context file with 1 python files
|
|
When I run tell command "add feature" with streaming
|
|
Then provider stub "alpha" should receive actor context with options {"temperature": 0.2} graph {"nodes": 1} initial context {"branch": "main"}
|