diff --git a/webview-ui/jest.config.cjs b/webview-ui/jest.config.cjs new file mode 100644 index 0000000000..69ed93166e --- /dev/null +++ b/webview-ui/jest.config.cjs @@ -0,0 +1,22 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: "ts-jest", + testEnvironment: "jsdom", + injectGlobals: true, + moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], + transform: { "^.+\\.(ts|tsx)$": ["ts-jest", { tsconfig: { jsx: "react-jsx" } }] }, + testMatch: ["/src/**/__tests__/**/*.{js,jsx,ts,tsx}", "/src/**/*.{spec,test}.{js,jsx,ts,tsx}"], + setupFilesAfterEnv: ["/src/setupTests.ts", "@testing-library/jest-dom/extend-expect"], + moduleNameMapper: { + "\\.(css|less|scss|sass)$": "identity-obj-proxy", + "^vscrui$": "/src/__mocks__/vscrui.ts", + "^@vscode/webview-ui-toolkit/react$": "/src/__mocks__/@vscode/webview-ui-toolkit/react.ts", + "^@/(.*)$": "/src/$1", + }, + reporters: [["jest-simple-dot-reporter", {}]], + transformIgnorePatterns: [ + "/node_modules/(?!(rehype-highlight|react-remark|unist-util-visit|unist-util-find-after|vfile|unified|bail|is-plain-obj|trough|vfile-message|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|decode-named-character-reference|character-entities|markdown-table|zwitch|longest-streak|escape-string-regexp|unist-util-is|hast-util-to-text|@vscode/webview-ui-toolkit|@microsoft/fast-react-wrapper|@microsoft/fast-element|@microsoft/fast-foundation|@microsoft/fast-web-utilities|exenv-es6|vscrui)/)", + ], + roots: ["/src"], + moduleDirectories: ["node_modules", "src"], +} diff --git a/webview-ui/package.json b/webview-ui/package.json index 8229a6aa34..e3eb3c8818 100644 --- a/webview-ui/package.json +++ b/webview-ui/package.json @@ -69,44 +69,5 @@ "ts-jest": "^27.1.5", "typescript": "^4.9.5", "vite": "6.0.11" - }, - "jest": { - "testEnvironment": "jsdom", - "setupFilesAfterEnv": [ - "@testing-library/jest-dom/extend-expect" - ], - "preset": "ts-jest", - "reporters": [ - [ - "jest-simple-dot-reporter", - {} - ] - ], - "moduleNameMapper": { - "\\.(css|less|scss|sass)$": "identity-obj-proxy", - "^vscrui$": "/src/__mocks__/vscrui.ts", - "^@vscode/webview-ui-toolkit/react$": "/src/__mocks__/@vscode/webview-ui-toolkit/react.ts" - }, - "transformIgnorePatterns": [ - "/node_modules/(?!(rehype-highlight|react-remark|unist-util-visit|unist-util-find-after|vfile|unified|bail|is-plain-obj|trough|vfile-message|unist-util-stringify-position|mdast-util-from-markdown|mdast-util-to-string|micromark|decode-named-character-reference|character-entities|markdown-table|zwitch|longest-streak|escape-string-regexp|unist-util-is|hast-util-to-text|@vscode/webview-ui-toolkit|@microsoft/fast-react-wrapper|@microsoft/fast-element|@microsoft/fast-foundation|@microsoft/fast-web-utilities|exenv-es6|vscrui)/)" - ], - "transform": { - "^.+\\.(ts|tsx)$": [ - "ts-jest", - { - "tsconfig": { - "jsx": "react-jsx" - } - } - ] - }, - "moduleDirectories": [ - "node_modules", - "src" - ], - "testMatch": [ - "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", - "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" - ] } } diff --git a/webview-ui/src/components/chat/__tests__/ChatTextArea.test.tsx b/webview-ui/src/components/chat/__tests__/ChatTextArea.test.tsx index 599e8d3ddb..205912fc15 100644 --- a/webview-ui/src/components/chat/__tests__/ChatTextArea.test.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatTextArea.test.tsx @@ -1,5 +1,4 @@ import { render, fireEvent, screen } from "@testing-library/react" -import "@testing-library/jest-dom" import ChatTextArea from "../ChatTextArea" import { useExtensionState } from "../../../context/ExtensionStateContext" import { vscode } from "../../../utils/vscode" diff --git a/webview-ui/src/components/prompts/__tests__/PromptsView.test.tsx b/webview-ui/src/components/prompts/__tests__/PromptsView.test.tsx index b31e0f868b..d3827a24c0 100644 --- a/webview-ui/src/components/prompts/__tests__/PromptsView.test.tsx +++ b/webview-ui/src/components/prompts/__tests__/PromptsView.test.tsx @@ -1,5 +1,4 @@ import { render, screen, fireEvent, waitFor } from "@testing-library/react" -import "@testing-library/jest-dom" import PromptsView from "../PromptsView" import { ExtensionStateContext } from "../../../context/ExtensionStateContext" import { vscode } from "../../../utils/vscode" diff --git a/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx b/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx index 7df9ea54ba..ac6245d6d1 100644 --- a/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx +++ b/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx @@ -1,5 +1,4 @@ import { render, screen, fireEvent } from "@testing-library/react" -import "@testing-library/jest-dom" import ApiConfigManager from "../ApiConfigManager" // Mock VSCode components