test(ui): assert the publish button is disabled while submitting

The migration closed a double submit hole that antd left open, but the
rewritten tests only proved the flow had not completed, so removing the
guard would not have failed them. Verified by mutation: dropping
disabled={loading} fails exactly this case.
This commit is contained in:
Yuneng Jiang 2026-08-14 02:57:55 -07:00
parent 9b8f9c69ad
commit fbc56c3b7b
No known key found for this signature in database
3 changed files with 12 additions and 25 deletions

View file

@ -115,7 +115,6 @@ describe("MakeAgentPublicForm", () => {
fireEvent.click(selectAllCheckbox);
});
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -126,7 +125,6 @@ describe("MakeAgentPublicForm", () => {
expect(screen.getByText("Confirm Making Agents Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
@ -312,7 +310,6 @@ describe("MakeAgentPublicForm", () => {
render(<MakeAgentPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -322,7 +319,6 @@ describe("MakeAgentPublicForm", () => {
expect(screen.getByText("Confirm Making Agents Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
@ -347,7 +343,6 @@ describe("MakeAgentPublicForm", () => {
render(<MakeAgentPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -357,19 +352,20 @@ describe("MakeAgentPublicForm", () => {
expect(screen.getByText("Confirm Making Agents Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
});
// While the request is in flight the flow must not have completed
expectDisabledControl(submitButton);
await act(async () => {
fireEvent.click(submitButton);
});
expect(mockMakeAgentsPublicCall).toHaveBeenCalledTimes(1);
expect(mockProps.onSuccess).not.toHaveBeenCalled();
expect(mockProps.onClose).not.toHaveBeenCalled();
expect(screen.getByText("Confirm Making Agents Public")).toBeInTheDocument();
// Resolve the promise
resolvePromise({});
await waitFor(() => {
expect(mockProps.onSuccess).toHaveBeenCalled();

View file

@ -138,7 +138,6 @@ describe("MakeMCPPublicForm", () => {
fireEvent.click(selectAllCheckbox);
});
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -149,7 +148,6 @@ describe("MakeMCPPublicForm", () => {
expect(screen.getByText("Confirm Making MCP Servers Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
@ -329,7 +327,6 @@ describe("MakeMCPPublicForm", () => {
render(<MakeMCPPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -339,7 +336,6 @@ describe("MakeMCPPublicForm", () => {
expect(screen.getByText("Confirm Making MCP Servers Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
@ -364,7 +360,6 @@ describe("MakeMCPPublicForm", () => {
render(<MakeMCPPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -374,19 +369,20 @@ describe("MakeMCPPublicForm", () => {
expect(screen.getByText("Confirm Making MCP Servers Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
});
// While the request is in flight the flow must not have completed
expectDisabledControl(submitButton);
await act(async () => {
fireEvent.click(submitButton);
});
expect(mockMakeMCPPublicCall).toHaveBeenCalledTimes(1);
expect(mockProps.onSuccess).not.toHaveBeenCalled();
expect(mockProps.onClose).not.toHaveBeenCalled();
expect(screen.getByText("Confirm Making MCP Servers Public")).toBeInTheDocument();
// Resolve the promise
resolvePromise({});
await waitFor(() => {
expect(mockProps.onSuccess).toHaveBeenCalled();

View file

@ -162,7 +162,6 @@ describe("MakeModelPublicForm", () => {
fireEvent.click(selectAllCheckbox);
});
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -173,7 +172,6 @@ describe("MakeModelPublicForm", () => {
expect(screen.getByText("Confirm Making Models Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
@ -345,7 +343,6 @@ describe("MakeModelPublicForm", () => {
render(<MakeModelPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -355,7 +352,6 @@ describe("MakeModelPublicForm", () => {
expect(screen.getByText("Confirm Making Models Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
@ -380,7 +376,6 @@ describe("MakeModelPublicForm", () => {
render(<MakeModelPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);
@ -390,19 +385,20 @@ describe("MakeModelPublicForm", () => {
expect(screen.getByText("Confirm Making Models Public")).toBeInTheDocument();
});
// Submit
const submitButton = screen.getByRole("button", { name: "Make Public" });
await act(async () => {
fireEvent.click(submitButton);
});
// While the request is in flight the flow must not have completed
expectDisabledControl(submitButton);
await act(async () => {
fireEvent.click(submitButton);
});
expect(mockMakeModelGroupPublic).toHaveBeenCalledTimes(1);
expect(mockProps.onSuccess).not.toHaveBeenCalled();
expect(mockProps.onClose).not.toHaveBeenCalled();
expect(screen.getByText("Confirm Making Models Public")).toBeInTheDocument();
// Resolve the promise
resolvePromise({});
await waitFor(() => {
expect(mockProps.onSuccess).toHaveBeenCalled();
@ -479,7 +475,6 @@ describe("MakeModelPublicForm", () => {
it("should show confirmation step with selected models", async () => {
render(<MakeModelPublicForm {...mockProps} />);
// Navigate to confirm step
const nextButton = screen.getByRole("button", { name: "Next" });
await act(async () => {
fireEvent.click(nextButton);