Merge story 83: remove active work list from agents panel
Resolves conflict in AgentPanel.test.tsx (duplicate RosterBadge tests from story 81 merge). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: "Remove active work list from Agents panel"
|
||||||
|
test_plan: approved
|
||||||
|
---
|
||||||
|
|
||||||
|
# Story 83: Remove active work list from Agents panel
|
||||||
|
|
||||||
|
## User Story
|
||||||
|
|
||||||
|
As a user, I want the Agents panel to only show the agent roster (with lozenges) and not a separate list of active work items, since the flying lozenges already indicate which agents are working on which stories.
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
- [ ] The Agents panel no longer displays the list of active work items / agents-at-work section
|
||||||
|
- [ ] The agent roster with availability lozenges remains visible and functional
|
||||||
|
- [ ] Flying lozenge animations continue to work as before
|
||||||
|
|
||||||
|
## Out of Scope
|
||||||
|
|
||||||
|
- TBD
|
||||||
@@ -66,6 +66,7 @@ describe("AgentPanel active work list removed", () => {
|
|||||||
expect(
|
expect(
|
||||||
container.querySelector('[data-testid^="agent-entry-"]'),
|
container.querySelector('[data-testid^="agent-entry-"]'),
|
||||||
).not.toBeInTheDocument();
|
).not.toBeInTheDocument();
|
||||||
|
<<<<<<< HEAD
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -140,73 +141,3 @@ describe("RosterBadge availability state", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("RosterBadge availability state", () => {
|
|
||||||
beforeAll(() => {
|
|
||||||
Element.prototype.scrollIntoView = vi.fn();
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
mockedAgents.getAgentConfig.mockResolvedValue(ROSTER);
|
|
||||||
mockedAgents.listAgents.mockResolvedValue([]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows a green dot for an idle agent", async () => {
|
|
||||||
render(<AgentPanel />);
|
|
||||||
|
|
||||||
const dot = await screen.findByTestId("roster-dot-coder-1");
|
|
||||||
// JSDOM normalizes #3fb950 to rgb(63, 185, 80)
|
|
||||||
expect(dot.style.background).toBe("rgb(63, 185, 80)");
|
|
||||||
expect(dot.style.animation).toBe("");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows green badge styling for an idle agent", async () => {
|
|
||||||
render(<AgentPanel />);
|
|
||||||
|
|
||||||
const badge = await screen.findByTestId("roster-badge-coder-1");
|
|
||||||
// JSDOM normalizes #3fb95015 to rgba(63, 185, 80, 0.082) and #3fb950 to rgb(63, 185, 80)
|
|
||||||
expect(badge.style.background).toBe("rgba(63, 185, 80, 0.082)");
|
|
||||||
expect(badge.style.color).toBe("rgb(63, 185, 80)");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows a blue pulsing dot for an active agent", async () => {
|
|
||||||
const agentList: AgentInfo[] = [
|
|
||||||
{
|
|
||||||
story_id: "81_active",
|
|
||||||
agent_name: "coder-1",
|
|
||||||
status: "running",
|
|
||||||
session_id: null,
|
|
||||||
worktree_path: null,
|
|
||||||
base_branch: null,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
mockedAgents.listAgents.mockResolvedValue(agentList);
|
|
||||||
|
|
||||||
render(<AgentPanel />);
|
|
||||||
|
|
||||||
const dot = await screen.findByTestId("roster-dot-coder-1");
|
|
||||||
// JSDOM normalizes #58a6ff to rgb(88, 166, 255)
|
|
||||||
expect(dot.style.background).toBe("rgb(88, 166, 255)");
|
|
||||||
expect(dot.style.animation).toBe("pulse 1.5s infinite");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows blue badge styling for an active agent", async () => {
|
|
||||||
const agentList: AgentInfo[] = [
|
|
||||||
{
|
|
||||||
story_id: "81_active",
|
|
||||||
agent_name: "coder-1",
|
|
||||||
status: "running",
|
|
||||||
session_id: null,
|
|
||||||
worktree_path: null,
|
|
||||||
base_branch: null,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
mockedAgents.listAgents.mockResolvedValue(agentList);
|
|
||||||
|
|
||||||
render(<AgentPanel />);
|
|
||||||
|
|
||||||
const badge = await screen.findByTestId("roster-badge-coder-1");
|
|
||||||
// JSDOM normalizes #58a6ff18 to rgba(88, 166, 255, 0.094) and #58a6ff to rgb(88, 166, 255)
|
|
||||||
expect(badge.style.background).toBe("rgba(88, 166, 255, 0.094)");
|
|
||||||
expect(badge.style.color).toBe("rgb(88, 166, 255)");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|||||||
Reference in New Issue
Block a user