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", () => {