diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 22aeb0240a..03bf83884c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -92,7 +92,7 @@ jobs: cd webview-ui # Ensure coverage dependency is installed npm install --no-save @vitest/coverage-v8 - npm run test:coverage > webview_coverage.txt 2>&1 || true + npm run test:coverage > webview_coverage.txt 2>&1 cd .. PYTHONPATH=.github/scripts python -m coverage_check extract-coverage webview-ui/webview_coverage.txt --type=webview --github-output --verbose diff --git a/webview-ui/src/components/chat/Announcement.tsx b/webview-ui/src/components/chat/Announcement.tsx index 981d8e1e3b..d9ab1a0e70 100644 --- a/webview-ui/src/components/chat/Announcement.tsx +++ b/webview-ui/src/components/chat/Announcement.tsx @@ -36,7 +36,7 @@ const Announcement = ({ version, hideAnnouncement }: AnnouncementProps) => { const minorVersion = version.split(".").slice(0, 2).join(".") // 2.0.0 -> 2.0 return (
- +

diff --git a/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx b/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx index 227a785953..d234c197d4 100644 --- a/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx @@ -20,13 +20,7 @@ describe("Announcement", () => { it("calls hideAnnouncement when close button is clicked", () => { render() - fireEvent.click(screen.getByRole("button")) + fireEvent.click(screen.getByTestId("close-button")) expect(hideAnnouncement).toHaveBeenCalled() }) - - it("renders the enhanced MCP support announcement", () => { - render() - // Updated text based on actual component output - expect(screen.getByText(/Enhanced MCP Support:/)).toBeInTheDocument() - }) }) diff --git a/webview-ui/src/components/settings/__tests__/APIOptions.spec.tsx b/webview-ui/src/components/settings/__tests__/APIOptions.spec.tsx index 2316dd64fc..aeae5ca8ec 100644 --- a/webview-ui/src/components/settings/__tests__/APIOptions.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/APIOptions.spec.tsx @@ -1,7 +1,8 @@ import { render, screen, fireEvent } from "@testing-library/react" import { describe, it, expect, vi } from "vitest" import ApiOptions from "../ApiOptions" -import { ExtensionStateContextProvider } from "@/context/ExtensionStateContext" +import { ExtensionStateContextProvider, useExtensionState } from "@/context/ExtensionStateContext" +import { ApiConfiguration } from "@shared/api" vi.mock("../../../context/ExtensionStateContext", async (importOriginal) => { const actual = await importOriginal() @@ -16,10 +17,20 @@ vi.mock("../../../context/ExtensionStateContext", async (importOriginal) => { }, setApiConfiguration: vi.fn(), uriScheme: "vscode", + requestyModels: {}, })), } }) +const mockExtensionState = (apiConfiguration: Partial) => { + vi.mocked(useExtensionState).mockReturnValue({ + apiConfiguration, + setApiConfiguration: vi.fn(), + uriScheme: "vscode", + requestyModels: {}, + } as any) +} + describe("ApiOptions Component", () => { vi.clearAllMocks() const mockPostMessage = vi.fn() @@ -27,6 +38,9 @@ describe("ApiOptions Component", () => { beforeEach(() => { //@ts-expect-error - vscode is not defined in the global namespace in test environment global.vscode = { postMessage: mockPostMessage } + mockExtensionState({ + apiProvider: "requesty", + }) }) it("renders Requesty API Key input", () => { @@ -45,28 +59,11 @@ describe("ApiOptions Component", () => { , ) - const modelIdInput = screen.getByPlaceholderText("Enter Model ID...") + const modelIdInput = screen.getByPlaceholderText("Search and select a model...") expect(modelIdInput).toBeInTheDocument() }) }) -vi.mock("../../../context/ExtensionStateContext", async (importOriginal) => { - const actual = await importOriginal() - return { - ...(actual || {}), - // your mocked methods - useExtensionState: vi.fn(() => ({ - apiConfiguration: { - apiProvider: "together", - requestyApiKey: "", - requestyModelId: "", - }, - setApiConfiguration: vi.fn(), - uriScheme: "vscode", - })), - } -}) - describe("ApiOptions Component", () => { vi.clearAllMocks() const mockPostMessage = vi.fn() @@ -74,6 +71,9 @@ describe("ApiOptions Component", () => { beforeEach(() => { //@ts-expect-error - vscode is not defined in the global namespace in test environment global.vscode = { postMessage: mockPostMessage } + mockExtensionState({ + apiProvider: "together", + }) }) it("renders Together API Key input", () => { @@ -97,24 +97,6 @@ describe("ApiOptions Component", () => { }) }) -vi.mock("../../../context/ExtensionStateContext", async (importOriginal) => { - const actual = await importOriginal() - return { - ...(actual || {}), - useExtensionState: vi.fn(() => ({ - apiConfiguration: { - apiProvider: "fireworks", - fireworksApiKey: "", - fireworksModelId: "", - fireworksModelMaxCompletionTokens: 2000, - fireworksModelMaxTokens: 4000, - }, - setApiConfiguration: vi.fn(), - uriScheme: "vscode", - })), - } -}) - describe("ApiOptions Component", () => { vi.clearAllMocks() const mockPostMessage = vi.fn() @@ -122,6 +104,14 @@ describe("ApiOptions Component", () => { beforeEach(() => { //@ts-expect-error - vscode is not defined in the global namespace in test environment global.vscode = { postMessage: mockPostMessage } + + mockExtensionState({ + apiProvider: "fireworks", + fireworksApiKey: "", + fireworksModelId: "", + fireworksModelMaxCompletionTokens: 2000, + fireworksModelMaxTokens: 4000, + }) }) it("renders Fireworks API Key input", () => { @@ -165,23 +155,6 @@ describe("ApiOptions Component", () => { }) }) -vi.mock("../../../context/ExtensionStateContext", async (importOriginal) => { - const actual = await importOriginal() - return { - ...(actual || {}), - // your mocked methods - useExtensionState: vi.fn(() => ({ - apiConfiguration: { - apiProvider: "openai", - requestyApiKey: "", - requestyModelId: "", - }, - setApiConfiguration: vi.fn(), - uriScheme: "vscode", - })), - } -}) - describe("OpenApiInfoOptions", () => { const mockPostMessage = vi.fn() @@ -189,6 +162,9 @@ describe("OpenApiInfoOptions", () => { vi.clearAllMocks() //@ts-expect-error - vscode is not defined in the global namespace in test environment global.vscode = { postMessage: mockPostMessage } + mockExtensionState({ + apiProvider: "openai", + }) }) it("renders OpenAI Supports Images input", () => {