mirror of
https://github.com/tiddly-gittly/TidGi-Desktop.git
synced 2025-12-06 02:30:47 -08:00
* 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
124 lines
10 KiB
Gherkin
124 lines
10 KiB
Gherkin
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']"
|