TidGi-Desktop/features/newAgent.feature
lin onetwo 256e0fcb65
Chore/upgrade2 (#656)
* upgrade rjsf

* Always enable devTools, even in test mode for debugging

* Update index.tsx

* lint

* fix: properly log error to log file

* fix: precalculate json plugin route and exclude it even before save

* Update WatchFileSystemAdaptor.ts

* fix: hooks.addHook usage wrong

* fix: tw5-typed

* fix: outdated rjsf usage

* refactor: cleanup fs watch logs

* v0.13.0-rc5

* fix: lint

* fix: unused

* fix: IFileInfo type

* fix: type

* fix: failed rjsf test
2025-11-23 12:31:02 +08:00

124 lines
10 KiB
Gherkin
Raw 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.

Feature: Create New Agent Workflow
As a user
I want to create a new agent definition using a multi-step wizard
So that I can customize agents for specific tasks and use them immediately
Background:
Given I add test ai settings
Then I launch the TidGi application
And I wait for the page to load completely
And I should see a "page body" element with selector "body"
# Ensure we are in the correct workspace before each scenario
When I click on an "agent workspace button" element with selector "[data-testid='workspace-agent']"
And I should see a "new tab button" element with selector "[data-tab-id='new-tab-button']"
@newAgent @mockOpenAI
Scenario: Create new agent definition and edit prompt and check server request
# Setup mock OpenAI server first
Given I have started the mock OpenAI server
| response | stream |
| | false |
# Step 1: Open new tab and navigate to CreateNewAgent
When I click on "new tab button and create new agent button" elements with selectors:
| [data-tab-id='new-tab-button'] |
| [data-testid='create-new-agent-button'] |
# Step 2: Verify first step content (Setup Agent: Name + Template)
Then I should see "step title and search input and agent name input field" elements with selectors:
| *:has-text('') |
| .aa-Input |
| [data-testid='agent-name-input-field'] |
# Step 3: Select template to advance to step 2
When I click on a "search input" element with selector ".aa-Input"
# Immediately click on the Example Agent template (don't wait or panel will close)
# Using description text to select specific agent, more precise than just name
When I click on a "Example Agent template" element with selector '.aa-Item[role="option"]:has-text("Example agent with prompt processing")'
# Fill in agent name while still in step 1
When I clear text in "agent name input" element with selector "[data-testid='agent-name-input-field']"
When I type "" in "agent name input" element with selector "[data-testid='agent-name-input-field']"
# Advance to step 2 (Edit Prompt)
When I click on a "next button" element with selector "[data-testid='next-button']"
# Step 4: Verify second step content (Edit Prompt) - using text selector as a diagnostic
And I should see a "edit prompt title" element with selector "h6:has-text('')"
# Step 4.1: Wait for PromptConfigForm to load
# Verify the PromptConfigForm is present with our new test id
And I should see a "prompt config form" element with selector "[data-testid='prompt-config-form']"
# Step 4.2: Navigate to the correct tab and expand array items to edit prompt
# Look for tabs in the PromptConfigForm
And I should see a "config tabs" element with selector "[data-testid='prompt-config-form'] .MuiTabs-root"
# Click on the first tab, expand array item, and click on the system prompt text field
When I click on "first config tab and expand array item button and system prompt text field" elements with selectors:
| [data-testid='prompt-config-form'] .MuiTab-root:first-of-type |
| [data-testid='prompt-config-form'] [role='tabpanel']:not([hidden]) button[title*=''], [data-testid='prompt-config-form'] [role='tabpanel']:not([hidden]) button svg[data-testid='ExpandMoreIcon'] |
| [data-testid='prompt-config-form'] [role='tabpanel']:not([hidden]) textarea[id*='_text']:not([readonly]) |
When I clear text in "system prompt text field" element with selector "[data-testid='prompt-config-form'] [role='tabpanel']:not([hidden]) textarea[id*='_text']:not([readonly])"
And I wait for 0.1 seconds for "clear to complete and DOM to stabilize"
When I type "" in "system prompt text field" element with selector "[data-testid='prompt-config-form'] [role='tabpanel']:not([hidden]) textarea[id*='_text']:not([readonly])"
And I wait for 0.2 seconds for "form content save to backend"
# Step 5: Advance to step 3 (Immediate Use)
When I click on a "next button" element with selector "[data-testid='next-button']"
# Step 6: Verify third step content (Immediate Use with chat interface)
And I should see a "immediate use title" element with selector "*:has-text('使')"
# Step 7: Test in the preview chat interface (part of step 3)
When I click on a "message input textarea" element with selector "[data-testid='agent-message-input']"
When I type " Hello World" in "chat input" element with selector "[data-testid='agent-message-input']"
And I press "Enter" key
# Verify the agent responds in the preview interface
Then I should see "user message and assistant message" elements with selectors:
| *:has-text(' Hello World') |
| *:has-text('') |
And the last AI request should contain system prompt ""
# Step 8: Save and start using (after testing in step 3)
When I click on a "save and use button" element with selector "button:has-text('使')"
# Verify agent was created and separate chat tab opened
Then I should see a "message input box" element with selector "[data-testid='agent-message-input']"
@editAgentDefinition @mockOpenAI
Scenario: Edit existing agent definition workflow
# Setup mock OpenAI server first
Given I have started the mock OpenAI server
| response | stream |
| | false |
# Step 1: Open new tab to access create default agent card
When I click on a "new tab button" element with selector "[data-tab-id='new-tab-button']"
# Step 2: Right-click on create default agent card to open context menu
When I right-click on a "create default agent card" element with selector "[data-testid='create-default-agent-button']"
# Step 3: Click on edit definition option in context menu
When I click on a "edit definition menu item" element with selector "[data-testid='edit-definition-menu-item']"
# Step 4: Verify direct edit interface (no steps - all content visible)
And I should see "edit agent title and basic info section and edit prompt section and immediate use section" elements with selectors:
| *:has-text('') |
| *:has-text('') |
| *:has-text('') |
| *:has-text('使') |
# Step 5: Edit agent name in the basic info section
And I should see a "agent name input" element with selector "[data-testid='edit-agent-name-input']"
When I clear text in "agent name input" element with selector "[data-testid='edit-agent-name-input-field']"
When I type "" in "agent name input" element with selector "[data-testid='edit-agent-name-input-field']"
# Step 6: Edit the prompt configuration - Wait for PromptConfigForm to load
# Verify the PromptConfigForm is present
And I should see a "prompt config form" element with selector "[data-testid='edit-agent-prompt-form']"
# Step 6.1: Navigate to the correct tab and expand array items to edit prompt
# Look for tabs in the PromptConfigForm
And I should see a "config tabs" element with selector "[data-testid='edit-agent-prompt-form'] .MuiTabs-root"
# Click on the first tab, expand array item, and click on the system prompt text field
When I click on "first config tab and expand array item button and system prompt text field" elements with selectors:
| [data-testid='edit-agent-prompt-form'] .MuiTab-root:first-of-type |
| [data-testid='edit-agent-prompt-form'] [role='tabpanel']:not([hidden]) button[title*=''], [data-testid='edit-agent-prompt-form'] [role='tabpanel']:not([hidden]) button svg[data-testid='ExpandMoreIcon'] |
| [data-testid='edit-agent-prompt-form'] [role='tabpanel']:not([hidden]) textarea[id*='_text']:not([readonly]) |
When I clear text in "system prompt text field" element with selector "[data-testid='edit-agent-prompt-form'] [role='tabpanel']:not([hidden]) textarea[id*='_text']:not([readonly])"
When I type "" in "system prompt text field" element with selector "[data-testid='edit-agent-prompt-form'] [role='tabpanel']:not([hidden]) textarea[id*='_text']:not([readonly])"
# Step 7: Test in the immediate use section (embedded chat)
# The immediate use section should show an embedded chat interface
# Find a message input in the immediate use section and test the agent
When I click on a "message input textarea" element with selector "[data-testid='agent-message-input']"
When I type "" in "chat input" element with selector "[data-testid='agent-message-input']"
And I press "Enter" key
# Verify the agent responds in the embedded chat
Then I should see "user message and assistant message" elements with selectors:
| *:has-text('') |
| *:has-text('') |
# Verify that the server received the request with the modified system prompt
And the last AI request should contain system prompt ""
# Step 8: Save the edited agent definition
And I should see a "save button" element with selector "[data-testid='edit-agent-save-button']"
When I click on a "save button" element with selector "[data-testid='edit-agent-save-button']"