From 41a9c7f42c70a3253228480a877daa9a7e3b065c Mon Sep 17 00:00:00 2001 From: fahe1em1 Date: Thu, 12 Mar 2026 19:51:04 +0000 Subject: [PATCH 1/2] fix: update model docs links in config panel --- .../config/sections/ModelsSection.test.tsx | 69 +++++++++++++++++++ .../pages/config/sections/ModelsSection.tsx | 12 ++-- 2 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 gui/src/pages/config/sections/ModelsSection.test.tsx diff --git a/gui/src/pages/config/sections/ModelsSection.test.tsx b/gui/src/pages/config/sections/ModelsSection.test.tsx new file mode 100644 index 00000000000..9cf32268a61 --- /dev/null +++ b/gui/src/pages/config/sections/ModelsSection.test.tsx @@ -0,0 +1,69 @@ +import { act, fireEvent, render, screen } from "@testing-library/react"; +import { Provider } from "react-redux"; +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { AuthProvider } from "../../../context/Auth"; +import { IdeMessengerContext } from "../../../context/IdeMessenger"; +import { MockIdeMessenger } from "../../../context/MockIdeMessenger"; +import { createMockStore } from "../../../util/test/mockStore"; +import { ModelsSection } from "./ModelsSection"; + +describe("ModelsSection", () => { + const renderComponent = async (mockMessenger?: MockIdeMessenger) => { + const { mockIdeMessenger, ...store } = createMockStore({}, mockMessenger); + + const result = await act(async () => + render( + + + + + + + , + ), + ); + + return { ...result, mockIdeMessenger }; + }; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("renders current docs links for chat, autocomplete, and edit", async () => { + await renderComponent(); + + const learnMoreLinks = screen.getAllByRole("link", { name: "Learn more" }); + const hrefs = learnMoreLinks.map((link) => link.getAttribute("href")); + + expect(hrefs).toEqual([ + "https://docs.continue.dev/ide-extensions/chat/quick-start", + "https://docs.continue.dev/ide-extensions/autocomplete/quick-start", + "https://docs.continue.dev/ide-extensions/edit/quick-start", + ]); + }); + + it("opens current setup docs URLs when setup buttons are clicked", async () => { + const { mockIdeMessenger } = await renderComponent(new MockIdeMessenger()); + const postSpy = vi.spyOn(mockIdeMessenger, "post"); + + fireEvent.click(screen.getByRole("button", { name: "Setup Chat model" })); + fireEvent.click( + screen.getByRole("button", { name: "Setup Autocomplete model" }), + ); + fireEvent.click(screen.getByRole("button", { name: "Setup Edit model" })); + + expect(postSpy).toHaveBeenCalledWith( + "openUrl", + "https://docs.continue.dev/ide-extensions/chat/model-setup", + ); + expect(postSpy).toHaveBeenCalledWith( + "openUrl", + "https://docs.continue.dev/ide-extensions/autocomplete/model-setup", + ); + expect(postSpy).toHaveBeenCalledWith( + "openUrl", + "https://docs.continue.dev/ide-extensions/edit/model-setup", + ); + }); +}); diff --git a/gui/src/pages/config/sections/ModelsSection.tsx b/gui/src/pages/config/sections/ModelsSection.tsx index 316f463a88a..1c29c555be9 100644 --- a/gui/src/pages/config/sections/ModelsSection.tsx +++ b/gui/src/pages/config/sections/ModelsSection.tsx @@ -83,7 +83,7 @@ export function ModelsSection() { Used in Chat, Plan, Agent mode ( handleRoleUpdate("chat", model)} onConfigure={handleConfigureModel} - setupURL="https://docs.continue.dev/chat/model-setup" + setupURL="https://docs.continue.dev/ide-extensions/chat/model-setup" /> @@ -109,7 +109,7 @@ export function ModelsSection() { Used in inline code completions as you type ( handleRoleUpdate("autocomplete", model)} onConfigure={handleConfigureModel} - setupURL="https://docs.continue.dev/autocomplete/model-setup" + setupURL="https://docs.continue.dev/ide-extensions/autocomplete/model-setup" /> {/* Jetbrains has a model selector inline */} @@ -142,7 +142,7 @@ export function ModelsSection() { Used to transform a selected section of code ( handleRoleUpdate("edit", model)} onConfigure={handleConfigureModel} - setupURL="https://docs.continue.dev/edit/model-setup" + setupURL="https://docs.continue.dev/ide-extensions/edit/model-setup" /> )} From e93e3b3869c5b4741455c590e12deee7033dbefd Mon Sep 17 00:00:00 2001 From: fahe1em1 Date: Thu, 12 Mar 2026 20:02:36 +0000 Subject: [PATCH 2/2] test: strengthen model docs link regression coverage --- gui/src/pages/config/sections/ModelsSection.test.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gui/src/pages/config/sections/ModelsSection.test.tsx b/gui/src/pages/config/sections/ModelsSection.test.tsx index 9cf32268a61..bcac6f2c474 100644 --- a/gui/src/pages/config/sections/ModelsSection.test.tsx +++ b/gui/src/pages/config/sections/ModelsSection.test.tsx @@ -53,15 +53,19 @@ describe("ModelsSection", () => { ); fireEvent.click(screen.getByRole("button", { name: "Setup Edit model" })); - expect(postSpy).toHaveBeenCalledWith( + expect(postSpy).toHaveBeenCalledTimes(3); + expect(postSpy).toHaveBeenNthCalledWith( + 1, "openUrl", "https://docs.continue.dev/ide-extensions/chat/model-setup", ); - expect(postSpy).toHaveBeenCalledWith( + expect(postSpy).toHaveBeenNthCalledWith( + 2, "openUrl", "https://docs.continue.dev/ide-extensions/autocomplete/model-setup", ); - expect(postSpy).toHaveBeenCalledWith( + expect(postSpy).toHaveBeenNthCalledWith( + 3, "openUrl", "https://docs.continue.dev/ide-extensions/edit/model-setup", );