diff --git a/frontend/__tests__/components/features/microagent-management/microagent-management.test.tsx b/frontend/__tests__/components/features/microagent-management/microagent-management.test.tsx
index 59a4231668..6b6d6b0231 100644
--- a/frontend/__tests__/components/features/microagent-management/microagent-management.test.tsx
+++ b/frontend/__tests__/components/features/microagent-management/microagent-management.test.tsx
@@ -6,6 +6,7 @@ import { createRoutesStub } from "react-router";
import React from "react";
import { renderWithProviders } from "test-utils";
import MicroagentManagement from "#/routes/microagent-management";
+import { MicroagentManagementMain } from "#/components/features/microagent-management/microagent-management-main";
import OpenHands from "#/api/open-hands";
import { GitRepository } from "#/types/git";
import { RepositoryMicroagent } from "#/types/microagent-management";
@@ -28,12 +29,12 @@ describe("MicroagentManagement", () => {
usage: null,
},
microagentManagement: {
- selectedMicroagent: null,
addMicroagentModalVisible: false,
selectedRepository: null,
personalRepositories: [],
organizationRepositories: [],
repositories: [],
+ selectedMicroagentItem: null,
},
},
});
@@ -109,6 +110,7 @@ describe("MicroagentManagement", () => {
tools: [],
created_at: "2021-10-01T12:00:00Z",
git_provider: "github",
+ path: ".openhands/microagents/test-microagent-1",
},
{
name: "test-microagent-2",
@@ -119,6 +121,7 @@ describe("MicroagentManagement", () => {
tools: [],
created_at: "2021-10-02T12:00:00Z",
git_provider: "github",
+ path: ".openhands/microagents/test-microagent-2",
},
];
@@ -168,10 +171,6 @@ describe("MicroagentManagement", () => {
vi.spyOn(OpenHands, "searchConversations").mockResolvedValue([
...mockConversations,
]);
- // Mock branches to always return a 'main' branch for the modal
- vi.spyOn(OpenHands, "getRepositoryBranches").mockResolvedValue([
- { name: "main", commit_sha: "abc123", protected: false },
- ]);
});
it("should render the microagent management page", async () => {
@@ -1234,6 +1233,12 @@ describe("MicroagentManagement", () => {
// Add microagent integration tests
describe("Add microagent functionality", () => {
+ beforeEach(() => {
+ vi.spyOn(OpenHands, "getRepositoryBranches").mockResolvedValue([
+ { name: "main", commit_sha: "abc123", protected: false },
+ ]);
+ });
+
it("should render add microagent button", async () => {
renderMicroagentManagement();
@@ -1276,17 +1281,16 @@ describe("MicroagentManagement", () => {
usage: null,
},
microagentManagement: {
- selectedMicroagent: null,
+ selectedMicroagentItem: null,
addMicroagentModalVisible: true, // Start with modal visible
selectedRepository: {
id: "1",
- name: "test-repo",
full_name: "user/test-repo",
- private: false,
git_provider: "github",
- default_branch: "main",
is_public: true,
- } as GitRepository,
+ owner_type: "user",
+ pushed_at: "2021-10-01T12:00:00Z",
+ },
personalRepositories: [],
organizationRepositories: [],
repositories: [],
@@ -1395,9 +1399,10 @@ describe("MicroagentManagement", () => {
await waitFor(() => {
expect(screen.getByTestId("add-microagent-modal")).toBeInTheDocument();
});
- // Wait for the confirm button to be enabled after entering query and branch selection
+ // Enter query text
const queryInput = screen.getByTestId("query-input");
await user.type(queryInput, "Test query");
+ // Wait for the confirm button to be enabled after entering query and branch selection
await waitFor(() => {
const confirmButton = screen.getByTestId("confirm-button");
expect(confirmButton).not.toBeDisabled();
@@ -1457,4 +1462,401 @@ describe("MicroagentManagement", () => {
});
});
});
+
+ // MicroagentManagementMain component tests
+ describe("MicroagentManagementMain", () => {
+ const mockRepositoryMicroagent: RepositoryMicroagent = {
+ name: "test-microagent",
+ type: "repo",
+ content: "Test microagent content",
+ triggers: ["test", "microagent"],
+ inputs: [],
+ tools: [],
+ created_at: "2021-10-01T12:00:00Z",
+ git_provider: "github",
+ path: ".openhands/microagents/test-microagent",
+ };
+
+ const mockConversationWithPr: Conversation = {
+ conversation_id: "conv-with-pr",
+ title: "Test Conversation with PR",
+ selected_repository: "user/repo2/.openhands",
+ selected_branch: "main",
+ git_provider: "github",
+ last_updated_at: "2021-10-01T12:00:00Z",
+ created_at: "2021-10-01T12:00:00Z",
+ status: "RUNNING",
+ runtime_status: "STATUS$READY",
+ trigger: "microagent_management",
+ url: null,
+ session_api_key: null,
+ pr_number: [123],
+ };
+
+ const mockConversationWithoutPr: Conversation = {
+ conversation_id: "conv-without-pr",
+ title: "Test Conversation without PR",
+ selected_repository: "user/repo2/.openhands",
+ selected_branch: "main",
+ git_provider: "github",
+ last_updated_at: "2021-10-01T12:00:00Z",
+ created_at: "2021-10-01T12:00:00Z",
+ status: "RUNNING",
+ runtime_status: "STATUS$READY",
+ trigger: "microagent_management",
+ url: null,
+ session_api_key: null,
+ pr_number: [],
+ };
+
+ const mockConversationWithNullPr: Conversation = {
+ conversation_id: "conv-null-pr",
+ title: "Test Conversation with null PR",
+ selected_repository: "user/repo2/.openhands",
+ selected_branch: "main",
+ git_provider: "github",
+ last_updated_at: "2021-10-01T12:00:00Z",
+ created_at: "2021-10-01T12:00:00Z",
+ status: "RUNNING",
+ runtime_status: null,
+ trigger: "microagent_management",
+ url: null,
+ session_api_key: null,
+ pr_number: null,
+ };
+
+ const renderMicroagentManagementMain = (selectedMicroagentItem: any) => {
+ return renderWithProviders(
{t(I18nKey.MICROAGENT_MANAGEMENT$USE_MICROAGENTS)}
-