chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# QA: Agentic Chat — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the agentic-chat demo page
|
||||
- [ ] Verify the chat interface loads with a text input placeholder "Type a message"
|
||||
- [ ] Verify the background container (`data-testid="background-container"`) is visible
|
||||
- [ ] Verify the default background color is the theme default (rgb(250, 250, 249))
|
||||
- [ ] Send a basic message (e.g. "Hello")
|
||||
- [ ] Verify the agent responds with a text message
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Change background" suggestion button is visible
|
||||
- [ ] Verify "Generate sonnet" suggestion button is visible
|
||||
- [ ] Click the "Change background" suggestion
|
||||
- [ ] Verify the suggestion either populates the input or sends the message
|
||||
|
||||
#### Background Change (useFrontendTool)
|
||||
|
||||
- [ ] Ask "Change the background to a sunset gradient"
|
||||
- [ ] Verify the background container style changes from the default
|
||||
- [ ] Verify the change_background tool returns a success status
|
||||
|
||||
#### Weather Render Tool (useRenderTool)
|
||||
|
||||
- [ ] Type "What's the weather in Tokyo?"
|
||||
- [ ] Verify loading state shows "Loading weather..." (`data-testid="weather-info-loading"`)
|
||||
- [ ] Verify WeatherCard renders (`data-testid="weather-info"`) with:
|
||||
- [ ] City name displayed
|
||||
- [ ] Temperature in degrees C
|
||||
- [ ] Humidity percentage
|
||||
- [ ] Wind speed in mph
|
||||
- [ ] Conditions text
|
||||
|
||||
#### Agent Context
|
||||
|
||||
- [ ] Verify the agent knows the user's name is "Bob" (provided via useAgentContext)
|
||||
- [ ] Ask "What is my name?" and verify the agent responds with "Bob"
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
- [ ] Send a very long message and verify no UI breakage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Chat loads within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- Background changes are instant after tool execution
|
||||
- Weather card renders with all data fields populated
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,11 @@
|
||||
# QA: Chat Customization (CSS) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/chat-customization-css
|
||||
- [ ] Verify scoped theme applied — `.chat-css-demo-scope` wrapper has hot-pink accents
|
||||
- [ ] Send a message — verify user bubble is hot-pink gradient, assistant bubble is amber monospace
|
||||
- [ ] Input border is dashed pink
|
||||
- [ ] No theme leak to other pages
|
||||
|
||||
## Expected Results
|
||||
|
||||
- All CSS overrides visible, scoped to this demo
|
||||
@@ -0,0 +1,12 @@
|
||||
# QA: Chat Slots — AG2
|
||||
|
||||
- [ ] Navigate to /demos/chat-slots
|
||||
- [ ] Verify custom welcome screen visible (`data-testid="custom-welcome-screen"`)
|
||||
- [ ] Verify "Custom Slot" badge
|
||||
- [ ] Send a message (or click a suggestion)
|
||||
- [ ] Verify custom assistant message wrapper (`data-testid="custom-assistant-message"`) renders
|
||||
- [ ] Verify custom disclaimer (`data-testid="custom-disclaimer"`) renders
|
||||
|
||||
## Expected Results
|
||||
|
||||
- All three slot overrides render and are visible
|
||||
@@ -0,0 +1,11 @@
|
||||
# QA: Frontend Tools (Async) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/frontend-tools-async
|
||||
- [ ] Click "Find project-planning notes"
|
||||
- [ ] Verify NotesCard loading state ("Querying local notes DB...")
|
||||
- [ ] After ~500ms, verify matches render (notes-list)
|
||||
- [ ] Verify agent summarizes the notes in the next assistant bubble
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Async frontend-tool handler waits and returns data to the agent
|
||||
@@ -0,0 +1,10 @@
|
||||
# QA: Frontend Tools — AG2
|
||||
|
||||
- [ ] Navigate to /demos/frontend-tools
|
||||
- [ ] Click "Change background" suggestion
|
||||
- [ ] Verify background updates via client-side handler
|
||||
- [ ] Verify success message in chat
|
||||
|
||||
## Expected Results
|
||||
|
||||
- useFrontendTool handler runs on the client; agent uses the return value
|
||||
@@ -0,0 +1,62 @@
|
||||
# QA: Agentic Generative UI — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the gen-ui-agent demo page
|
||||
- [ ] Verify the chat interface loads in a centered full-height layout
|
||||
- [ ] Verify the chat input placeholder "Type a message" is visible
|
||||
- [ ] Send a basic message
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Simple plan" suggestion button is visible (plan to go to Mars in 5 steps)
|
||||
- [ ] Verify "Complex plan" suggestion button is visible (plan to make pizza in 10 steps)
|
||||
|
||||
#### Task Progress Tracker (useAgent with state streaming)
|
||||
|
||||
- [ ] Click "Simple plan" suggestion or type "Build a plan to go to Mars in 5 steps"
|
||||
- [ ] Verify the TaskProgress component renders (`data-testid="task-progress"`)
|
||||
- [ ] Verify the progress bar appears with a gradient fill
|
||||
- [ ] Verify step items appear with descriptions (`data-testid="task-step-text"`)
|
||||
- [ ] Verify the "N/N Complete" counter updates as steps complete
|
||||
- [ ] Verify completed steps show:
|
||||
- Green background gradient
|
||||
- Check icon
|
||||
- Green text color
|
||||
- [ ] Verify the current pending step shows:
|
||||
- Blue/purple background gradient
|
||||
- Spinner icon with "Processing..." text
|
||||
- Pulsing animation
|
||||
- [ ] Verify future pending steps show:
|
||||
- Gray background
|
||||
- Clock icon
|
||||
- Muted text color
|
||||
|
||||
#### Complex Plan
|
||||
|
||||
- [ ] Type "Plan to make pizza in 10 steps"
|
||||
- [ ] Verify 10 steps appear in the progress tracker
|
||||
- [ ] Verify progress bar width increases as steps complete
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Chat loads within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- Task progress tracker shows live step completion
|
||||
- Progress bar animates smoothly
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,59 @@
|
||||
# QA: Tool-Based Generative UI — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the gen-ui-tool-based demo page
|
||||
- [ ] Verify the CopilotSidebar opens by default with title "Haiku Generator"
|
||||
- [ ] Verify a placeholder haiku card is displayed on the main area
|
||||
- [ ] Send a basic message via the sidebar
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Nature Haiku" suggestion button is visible
|
||||
- [ ] Verify "Ocean Haiku" suggestion button is visible
|
||||
- [ ] Verify "Spring Haiku" suggestion button is visible
|
||||
|
||||
#### Haiku Generation (useFrontendTool)
|
||||
|
||||
- [ ] Click the "Nature Haiku" suggestion or type "Write me a haiku about nature"
|
||||
- [ ] Verify a HaikuCard renders (`data-testid="haiku-card"`) with:
|
||||
- [ ] Three Japanese text lines (`data-testid="haiku-japanese-line"`)
|
||||
- [ ] Three English translation lines (`data-testid="haiku-english-line"`)
|
||||
- [ ] A background gradient style applied to the card
|
||||
- [ ] Verify the Japanese text contains actual Japanese characters (not Latin)
|
||||
- [ ] Verify the English lines are a readable English translation
|
||||
|
||||
#### Image Display
|
||||
|
||||
- [ ] After haiku generation, verify an image renders (`data-testid="haiku-image"`) if the agent provides an image_name
|
||||
- [ ] Verify the image src points to /images/ with a valid filename from the predefined list
|
||||
|
||||
#### Multiple Haikus
|
||||
|
||||
- [ ] Generate a second haiku (e.g. "Ocean Haiku")
|
||||
- [ ] Verify the new haiku card appears at the top
|
||||
- [ ] Verify the previous haiku card is still visible below
|
||||
- [ ] Verify the initial placeholder haiku is removed
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Sidebar loads within 3 seconds
|
||||
- Agent responds and generates haiku within 10 seconds
|
||||
- Haiku cards display with Japanese and English text
|
||||
- Generated haikus stack with newest on top
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,13 @@
|
||||
# QA: Headless Chat (Simple) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/headless-simple
|
||||
- [ ] Verify "Headless Chat (Simple)" heading
|
||||
- [ ] Type "show a card about cats"
|
||||
- [ ] Click Send
|
||||
- [ ] Verify user bubble appears
|
||||
- [ ] Verify assistant replies, `ShowCard` renders (title + body)
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Custom chat UI works (not pre-built CopilotChat)
|
||||
- useComponent registration wired via copilotkit.runAgent
|
||||
@@ -0,0 +1,12 @@
|
||||
# QA: In-App HITL — AG2
|
||||
|
||||
- [ ] Navigate to /demos/hitl-in-app
|
||||
- [ ] Verify tickets panel on left, chat on right
|
||||
- [ ] Click suggestion "Approve refund for #12345"
|
||||
- [ ] Verify approval dialog modal appears (`data-testid="approval-dialog"`) OUTSIDE the chat
|
||||
- [ ] Click Approve
|
||||
- [ ] Verify dialog closes and agent acknowledges approval in chat
|
||||
|
||||
## Expected Results
|
||||
|
||||
- App-level modal routes through async useFrontendTool Promise
|
||||
@@ -0,0 +1,57 @@
|
||||
# QA: Human in the Loop — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the HITL demo page (`/demos/hitl`) > _Note: the URL path `/demos/hitl` is intentionally shorter than the feature id `hitl-in-chat`._
|
||||
- [ ] Verify the chat interface loads in a centered max-w-4xl container
|
||||
- [ ] Verify the chat input placeholder "Type a message" is visible
|
||||
- [ ] Send a basic message
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Simple plan" suggestion button is visible
|
||||
- [ ] Verify "Complex plan" suggestion button is visible
|
||||
- [ ] Click the "Simple plan" suggestion
|
||||
- [ ] Verify it triggers a message about planning a trip to Mars in 5 steps
|
||||
|
||||
#### Step Selection and Approval
|
||||
|
||||
The HITL demo renders a single StepSelector card regardless of whether
|
||||
the underlying flow uses an interrupt hook or a frontend HITL tool. The
|
||||
framework-specific hook name is an implementation detail covered in each
|
||||
package's demo source; QA below validates the user-visible card behavior.
|
||||
|
||||
- [ ] Send "Plan a trip to Mars in 5 steps"
|
||||
- [ ] Verify the StepSelector card appears (`data-testid="select-steps"`)
|
||||
- [ ] Verify step items are displayed with checkboxes (`data-testid="step-item"`)
|
||||
- [ ] Verify step text is visible (`data-testid="step-text"`)
|
||||
- [ ] Verify the selected count display shows "N/N selected"
|
||||
- [ ] Toggle a step checkbox off and verify the count decreases
|
||||
- [ ] Toggle it back on and verify the count increases
|
||||
- [ ] Click "Perform Steps (N)" / "Confirm (N)" button
|
||||
- [ ] Verify the agent continues processing after confirmation
|
||||
- [ ] In a new conversation, trigger the same flow and click "Reject" (where present)
|
||||
- [ ] Verify the card reflects the decision (Accepted / Rejected) and buttons disable
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Chat loads within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- Step selector renders with toggleable checkboxes
|
||||
- Accept/Reject flow completes without errors
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,12 @@
|
||||
# QA: Pre-Built Popup — AG2
|
||||
|
||||
- [ ] Navigate to /demos/prebuilt-popup
|
||||
- [ ] Verify floating launcher visible
|
||||
- [ ] Popup opens by default
|
||||
- [ ] Send "Say hi from the popup"
|
||||
- [ ] Verify agent responds
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Popup opens as overlay
|
||||
- Agent replies inside the popup window
|
||||
@@ -0,0 +1,20 @@
|
||||
# QA: Pre-Built Sidebar — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
- [ ] Navigate to /demos/prebuilt-sidebar
|
||||
- [ ] Verify main content renders ("Sidebar demo — click the launcher")
|
||||
- [ ] Verify sidebar launcher button visible
|
||||
- [ ] Verify sidebar is open by default
|
||||
- [ ] Send "Say hi"
|
||||
- [ ] Verify agent responds
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Sidebar toggles via launcher
|
||||
- Agent replies inside the sidebar
|
||||
@@ -0,0 +1,12 @@
|
||||
# QA: Readonly State (Agent Context) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/readonly-state-agent-context
|
||||
- [ ] Verify context card (`data-testid="context-card"`)
|
||||
- [ ] Change name in `data-testid="ctx-name"` input
|
||||
- [ ] Toggle an activity checkbox
|
||||
- [ ] Send "Who am I?"
|
||||
- [ ] Verify agent reflects the context (name, timezone, activities)
|
||||
|
||||
## Expected Results
|
||||
|
||||
- useAgentContext values visibly propagate into agent's replies
|
||||
@@ -0,0 +1,10 @@
|
||||
# QA: Reasoning (Default Render) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/reasoning-default-render
|
||||
- [ ] Send "Think step-by-step: what is 17 \* 23?"
|
||||
- [ ] Verify a reasoning card appears above the final answer (default CopilotChatReasoningMessage)
|
||||
- [ ] Card is collapsible
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Built-in reasoning UI renders without a custom slot
|
||||
@@ -0,0 +1,69 @@
|
||||
# QA: Shared State (Read + Write) — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible at `/demos/shared-state-read-write`
|
||||
- Agent backend is healthy (check `/api/copilotkit` GET → `agent_status: reachable`)
|
||||
- Backend has `OPENAI_API_KEY` set
|
||||
- The `shared-state-read-write` agent is mounted at `/shared-state-read-write` on
|
||||
the FastAPI server (see `src/agent_server.py`)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Page renders with the two cards and chat
|
||||
|
||||
- [ ] Navigate to `/demos/shared-state-read-write`
|
||||
- [ ] Sidebar shows the **Preferences** card (`data-testid="preferences-card"`)
|
||||
- [ ] Sidebar shows the **Agent notes** card (`data-testid="notes-card"`) with the
|
||||
empty state copy "No notes yet. Ask the agent to remember something."
|
||||
- [ ] Right-hand pane shows `<CopilotChat />` with the placeholder
|
||||
"Chat with the agent..."
|
||||
- [ ] The "Shared state" panel inside the preferences card shows JSON with
|
||||
`name: ""`, `tone: "casual"`, `language: "English"`, `interests: []`
|
||||
|
||||
### 2. UI -> agent (write)
|
||||
|
||||
- [ ] Type a name (e.g. `Atai`) into the **Name** input. The "Shared state"
|
||||
JSON inside the card updates immediately to reflect the new name.
|
||||
- [ ] Change **Tone** to `playful`. JSON updates.
|
||||
- [ ] Change **Language** to `Spanish`. JSON updates.
|
||||
- [ ] Toggle 2-3 interests (e.g. `Cooking`, `Tech`). JSON updates and the
|
||||
buttons show the selected style.
|
||||
- [ ] In the chat, send: **"Greet me in one sentence."**
|
||||
- [ ] The agent's reply addresses the user by name in a playful tone, in
|
||||
Spanish (i.e. it actually used the preferences). It must NOT just
|
||||
echo the JSON.
|
||||
|
||||
### 3. agent -> UI (read)
|
||||
|
||||
- [ ] In the chat, send: **"Remember that I prefer morning meetings and that
|
||||
I don't eat dairy."**
|
||||
- [ ] The **Agent notes** card transitions from the empty state to a
|
||||
bulleted list with at least 2 entries (`data-testid="note-item"`),
|
||||
reflecting the two facts above. The list updates in real time
|
||||
while/after the agent finishes its turn.
|
||||
- [ ] In the chat, send: **"Also remember I work in Pacific time."**
|
||||
- [ ] The notes list now has at least 3 entries (the agent passed the FULL
|
||||
list to `set_notes`, not just the new one).
|
||||
|
||||
### 4. Round-trip + Clear
|
||||
|
||||
- [ ] Click the **Clear** button on the notes card.
|
||||
- [ ] The notes card returns to the empty state immediately.
|
||||
- [ ] In the chat, send: **"What do you remember about me?"**
|
||||
- [ ] The agent reports it has no remembered notes (because the UI cleared
|
||||
them via `agent.setState`), confirming the UI's write-back was
|
||||
visible to the agent on its next turn.
|
||||
|
||||
### 5. Error handling
|
||||
|
||||
- [ ] Send an empty message → handled gracefully (no crash, no broken UI).
|
||||
- [ ] No console errors during normal usage.
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Page loads in < 3 seconds.
|
||||
- Preferences edits propagate to agent state instantly.
|
||||
- Agent replies adapt visibly to preferences (name, tone, language).
|
||||
- Notes card reflects every `set_notes` call from the agent.
|
||||
- Clearing notes from the UI is reflected on the agent's next turn.
|
||||
@@ -0,0 +1,75 @@
|
||||
# QA: Shared State (Reading) — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the shared-state-read demo page
|
||||
- [ ] Verify the recipe card form loads (`data-testid="recipe-card"`)
|
||||
- [ ] Verify the CopilotSidebar opens by default with title "AI Recipe Assistant"
|
||||
- [ ] Send a message via the sidebar
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Initial Recipe State
|
||||
|
||||
- [ ] Verify the recipe title input shows "Make Your Recipe"
|
||||
- [ ] Verify the cooking time dropdown defaults to "45 min"
|
||||
- [ ] Verify the skill level dropdown defaults to "Intermediate"
|
||||
- [ ] Verify the default ingredients are displayed:
|
||||
- [ ] Carrots (3 large, grated) with carrot emoji
|
||||
- [ ] All-Purpose Flour (2 cups) with wheat emoji
|
||||
- [ ] Verify the default instruction is displayed: "Preheat oven to 350 F"
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Create Italian recipe" suggestion is visible
|
||||
- [ ] Verify "Make it healthier" suggestion is visible
|
||||
- [ ] Verify "Suggest variations" suggestion is visible
|
||||
|
||||
#### Recipe Editing (Local State)
|
||||
|
||||
- [ ] Edit the recipe title and verify it updates
|
||||
- [ ] Change the skill level dropdown and verify it updates
|
||||
- [ ] Change the cooking time dropdown and verify it updates
|
||||
- [ ] Toggle a dietary preference checkbox (e.g. "Vegetarian") and verify it's checked
|
||||
- [ ] Click "+ Add Ingredient" (`data-testid="add-ingredient-button"`) and verify a new empty row appears
|
||||
- [ ] Edit an ingredient name and amount
|
||||
- [ ] Remove an ingredient by clicking the "x" button
|
||||
- [ ] Click "+ Add Step" and verify a new instruction row appears
|
||||
- [ ] Edit an instruction and verify it saves
|
||||
- [ ] Remove an instruction by clicking the "x" button
|
||||
|
||||
#### AI-Powered Recipe Updates (useAgent with shared state)
|
||||
|
||||
- [ ] Click "Create Italian recipe" suggestion
|
||||
- [ ] Verify the agent updates the recipe title, ingredients, and instructions
|
||||
- [ ] Verify the ping indicator appears on changed sections
|
||||
- [ ] Verify the "Improve with AI" button (`data-testid="improve-button"`) changes to "Please Wait..." while loading
|
||||
- [ ] Click "Improve with AI" and verify the recipe is enhanced
|
||||
|
||||
#### Agent Reads Frontend State
|
||||
|
||||
- [ ] Edit the recipe (change title, add ingredients)
|
||||
- [ ] Ask the agent "What recipe am I making?"
|
||||
- [ ] Verify the agent's response references the current recipe state
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
- [ ] Verify the "Improve with AI" button is disabled while loading
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Recipe card and sidebar load within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- Recipe state syncs bidirectionally between UI and agent
|
||||
- Ping indicators highlight changed sections
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,41 @@
|
||||
# QA: State Streaming — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the shared-state-streaming demo page
|
||||
- [ ] Verify the chat interface loads with title "State Streaming"
|
||||
- [ ] Verify the chat input placeholder "Type a message..." is visible
|
||||
- [ ] Send a basic message (e.g. "Hello! What can you do?")
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Get started" suggestion button is visible
|
||||
|
||||
#### Note: Stub Demo
|
||||
|
||||
> **Status: Stub** — This demo is currently a stub (TODO: implement)
|
||||
|
||||
- [ ] Verify the basic CopilotChat loads and accepts messages
|
||||
- [ ] Verify the agent responds to messages
|
||||
- [ ] No custom UI components are expected beyond the chat interface
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Chat loads within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,41 @@
|
||||
# QA: Shared State (Writing) — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the shared-state-write demo page
|
||||
- [ ] Verify the chat interface loads with title "Shared State (Writing)"
|
||||
- [ ] Verify the chat input placeholder "Type a message..." is visible
|
||||
- [ ] Send a basic message (e.g. "Hello! What can you do?")
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Get started" suggestion button is visible
|
||||
|
||||
#### Note: Stub Demo
|
||||
|
||||
> **Status: Stub** — This demo is currently a stub (TODO: implement)
|
||||
|
||||
- [ ] Verify the basic CopilotChat loads and accepts messages
|
||||
- [ ] Verify the agent responds to messages
|
||||
- [ ] No custom UI components are expected beyond the chat interface
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Chat loads within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- No UI errors or broken layouts
|
||||
@@ -0,0 +1,74 @@
|
||||
# QA: Sub-Agents — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible at `/demos/subagents`
|
||||
- Agent backend is healthy (check `/api/copilotkit` GET → `agent_status: reachable`)
|
||||
- Backend has `OPENAI_API_KEY` set
|
||||
- The `subagents` supervisor is mounted at `/subagents` on the FastAPI
|
||||
server (see `src/agent_server.py`)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Page renders with delegation log + chat
|
||||
|
||||
- [ ] Navigate to `/demos/subagents`
|
||||
- [ ] Left pane shows the **Delegation log** panel
|
||||
(`data-testid="delegation-log"`)
|
||||
- [ ] Header reads "Sub-agent delegations" with a counter
|
||||
`data-testid="delegation-count"` showing `0 calls`
|
||||
- [ ] Empty-state copy: "Ask the supervisor to complete a task. Every
|
||||
sub-agent it calls will appear here."
|
||||
- [ ] Right pane shows the chat with placeholder
|
||||
"Give the supervisor a task..."
|
||||
|
||||
### 2. Single delegation chain
|
||||
|
||||
- [ ] Click suggestion **"Write a blog post"** (or send the equivalent
|
||||
message).
|
||||
- [ ] While the supervisor runs, the badge
|
||||
`data-testid="supervisor-running"` ("Supervisor running") appears in
|
||||
the header.
|
||||
- [ ] As the supervisor delegates, entries appear in the log
|
||||
(`data-testid="delegation-entry"`). Expect at least 3 entries — one
|
||||
`Research`, one `Writing`, one `Critique` — in that order.
|
||||
- [ ] Each entry shows:
|
||||
- A `#N` index, a colored badge with the sub-agent name + emoji.
|
||||
- A `Task: ...` line summarizing what was delegated.
|
||||
- A `result` block containing the sub-agent's output (real LLM text,
|
||||
not placeholders).
|
||||
- [ ] Counter updates to `3 calls` (or more if the supervisor iterated).
|
||||
|
||||
### 3. Independent delegations
|
||||
|
||||
- [ ] Reload the page (state resets).
|
||||
- [ ] Send: **"Research what causes the northern lights."**
|
||||
- [ ] At least 1 `Research` delegation appears with a bulleted list of
|
||||
facts in the result.
|
||||
- [ ] Send: **"Now write a paragraph aimed at a 10-year-old, using those
|
||||
facts."**
|
||||
- [ ] A `Writing` delegation appears with a polished paragraph in the
|
||||
result.
|
||||
- [ ] Send: **"Critique that paragraph."**
|
||||
- [ ] A `Critique` delegation appears with 2-3 actionable critiques.
|
||||
|
||||
### 4. Supervisor reply hygiene
|
||||
|
||||
- [ ] After each chain, the supervisor's chat reply is short — it
|
||||
summarizes rather than re-pasting the full sub-agent output (which
|
||||
already lives in the delegation log).
|
||||
- [ ] The "Supervisor running" badge disappears once the run is complete.
|
||||
|
||||
### 5. Error handling
|
||||
|
||||
- [ ] Send a very short message (e.g. "Hi"). The supervisor responds
|
||||
gracefully (it may not delegate for a trivial greeting).
|
||||
- [ ] No console errors during normal usage.
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Page loads in < 3 seconds.
|
||||
- Each user request that's non-trivial produces at least one delegation
|
||||
entry.
|
||||
- The delegation log grows live during the run, not just at the end.
|
||||
- Sub-agent results are real LLM outputs (not stubbed strings).
|
||||
@@ -0,0 +1,10 @@
|
||||
# QA: Tool Rendering (Custom Catch-all) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/tool-rendering-custom-catchall
|
||||
- [ ] Click "Weather in SF"
|
||||
- [ ] Verify custom catch-all card renders (`data-testid="custom-catchall-card"`)
|
||||
- [ ] Status progresses through streaming / running / done
|
||||
|
||||
## Expected Results
|
||||
|
||||
- The single custom wildcard renderer paints every tool call
|
||||
@@ -0,0 +1,10 @@
|
||||
# QA: Tool Rendering (Default Catch-all) — AG2
|
||||
|
||||
- [ ] Navigate to /demos/tool-rendering-default-catchall
|
||||
- [ ] Click "Weather in SF" suggestion
|
||||
- [ ] Verify DefaultToolCallRenderer fires — tool name visible, Running → Done
|
||||
- [ ] Expand arguments / result
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Out-of-box default tool-call card renders without custom config
|
||||
@@ -0,0 +1,61 @@
|
||||
# QA: Tool Rendering — AG2
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Demo is deployed and accessible
|
||||
- Agent backend is healthy (check /api/health)
|
||||
|
||||
## Test Steps
|
||||
|
||||
### 1. Basic Functionality
|
||||
|
||||
- [ ] Navigate to the tool-rendering demo page
|
||||
- [ ] Verify the chat interface loads in a centered full-height layout
|
||||
- [ ] Verify the chat input placeholder "Type a message" is visible
|
||||
- [ ] Send a basic message
|
||||
- [ ] Verify the agent responds
|
||||
|
||||
### 2. Feature-Specific Checks
|
||||
|
||||
#### Suggestions
|
||||
|
||||
- [ ] Verify "Weather in San Francisco" suggestion button is visible
|
||||
- [ ] Verify "Weather in New York" suggestion button is visible
|
||||
- [ ] Verify "Weather in Tokyo" suggestion button is visible
|
||||
- [ ] Click a weather suggestion and verify it populates the input or sends the message
|
||||
|
||||
#### Weather Card Rendering (useRenderTool)
|
||||
|
||||
- [ ] Type "What's the weather in San Francisco?"
|
||||
- [ ] Verify loading state shows "Retrieving weather..." with a spinner
|
||||
- [ ] Verify the WeatherCard renders (`data-testid="weather-card"`) with:
|
||||
- [ ] City name displayed (`data-testid="weather-city"`)
|
||||
- [ ] Temperature in both Celsius and Fahrenheit
|
||||
- [ ] Humidity percentage (`data-testid="weather-humidity"`)
|
||||
- [ ] Wind speed in mph (`data-testid="weather-wind"`)
|
||||
- [ ] Feels-like temperature (`data-testid="weather-feels-like"`)
|
||||
- [ ] Conditions text with appropriate weather icon (sun/rain/cloud)
|
||||
- [ ] Verify the card background color matches the weather condition theme:
|
||||
- Clear/Sunny: #667eea (blue-purple)
|
||||
- Rain/Storm: #4A5568 (dark gray)
|
||||
- Cloudy: #718096 (medium gray)
|
||||
- Snow: #63B3ED (light blue)
|
||||
|
||||
#### Multiple Weather Queries
|
||||
|
||||
- [ ] Ask about weather in a second city
|
||||
- [ ] Verify a second WeatherCard renders without breaking the first
|
||||
- [ ] Verify each card shows the correct city name
|
||||
|
||||
### 3. Error Handling
|
||||
|
||||
- [ ] Send an empty message (should be handled gracefully)
|
||||
- [ ] Verify no console errors during normal usage
|
||||
|
||||
## Expected Results
|
||||
|
||||
- Chat loads within 3 seconds
|
||||
- Agent responds within 10 seconds
|
||||
- Weather cards render with all data fields populated
|
||||
- Weather icon and theme color match the conditions
|
||||
- No UI errors or broken layouts
|
||||
Reference in New Issue
Block a user