diff --git a/packages/svelte-query-devtools/package.json b/packages/svelte-query-devtools/package.json index 79cca89edb..c6b58ea9a2 100644 --- a/packages/svelte-query-devtools/package.json +++ b/packages/svelte-query-devtools/package.json @@ -24,6 +24,8 @@ "compile": "tsc --build", "test:types": "svelte-check --tsconfig ./tsconfig.json", "test:eslint": "eslint --concurrency=auto ./src", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict && attw --pack", "build": "svelte-package --input ./src --output ./dist" }, @@ -53,6 +55,7 @@ "@sveltejs/package": "^2.4.0", "@sveltejs/vite-plugin-svelte": "^5.1.1", "@tanstack/svelte-query": "workspace:*", + "@testing-library/svelte": "^5.2.8", "@typescript-eslint/parser": "^8.48.0", "eslint-plugin-svelte": "^3.11.0", "svelte": "^5.39.3", diff --git a/packages/svelte-query-devtools/tests/Devtools.svelte.test.ts b/packages/svelte-query-devtools/tests/Devtools.svelte.test.ts new file mode 100644 index 0000000000..6808633dad --- /dev/null +++ b/packages/svelte-query-devtools/tests/Devtools.svelte.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from 'vitest' +import { render } from '@testing-library/svelte' +import { QueryClient } from '@tanstack/svelte-query' +import SvelteQueryDevtools from '../src/Devtools.svelte' + +describe('SvelteQueryDevtools', () => { + it('should render the parent container without throwing in non-development environments', () => { + const queryClient = new QueryClient() + + const { container } = render(SvelteQueryDevtools, { + props: { client: queryClient }, + }) + + expect( + container.querySelector('.tsqd-parent-container'), + ).toBeInTheDocument() + }) +}) diff --git a/packages/svelte-query-devtools/tests/test-setup.ts b/packages/svelte-query-devtools/tests/test-setup.ts new file mode 100644 index 0000000000..a9d0dd31aa --- /dev/null +++ b/packages/svelte-query-devtools/tests/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom/vitest' diff --git a/packages/svelte-query-devtools/tsconfig.json b/packages/svelte-query-devtools/tsconfig.json index 773fd3d525..cce7cfa8c3 100644 --- a/packages/svelte-query-devtools/tsconfig.json +++ b/packages/svelte-query-devtools/tsconfig.json @@ -4,6 +4,6 @@ "outDir": "./dist-ts", "rootDir": "." }, - "include": ["src", "*.config.*", "package.json"], + "include": ["src", "tests", "*.config.*", "package.json"], "references": [{ "path": "../query-devtools" }, { "path": "../svelte-query" }] } diff --git a/packages/svelte-query-devtools/vite.config.ts b/packages/svelte-query-devtools/vite.config.ts index 01ebc554bd..5b2d97f30f 100644 --- a/packages/svelte-query-devtools/vite.config.ts +++ b/packages/svelte-query-devtools/vite.config.ts @@ -1,8 +1,11 @@ import { svelte } from '@sveltejs/vite-plugin-svelte' -import { defineConfig } from 'vite' +import { defineConfig } from 'vitest/config' +import { svelteTesting } from '@testing-library/svelte/vite' + +import packageJson from './package.json' export default defineConfig({ - plugins: [svelte()], + plugins: [svelte(), svelteTesting()], // fix from https://github.com/vitest-dev/vitest/issues/6992#issuecomment-2509408660 resolve: { conditions: ['@tanstack/custom-condition'], @@ -14,4 +17,17 @@ export default defineConfig({ }, }, }, + test: { + name: packageJson.name, + dir: './tests', + watch: false, + environment: 'jsdom', + setupFiles: ['./tests/test-setup.ts'], + coverage: { + enabled: true, + provider: 'istanbul', + include: ['src/**/*'], + }, + typecheck: { enabled: true }, + }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 258ab23246..82cb34c922 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2936,6 +2936,9 @@ importers: '@tanstack/svelte-query': specifier: workspace:* version: link:../svelte-query + '@testing-library/svelte': + specifier: ^5.2.8 + version: 5.3.1(svelte@5.55.1)(vite@6.4.1(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2(@types/node@22.19.15)(jsdom@27.4.0)(msw@2.12.14(@types/node@22.19.15)(typescript@5.9.3))(vite@6.4.1(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(yaml@2.8.3))) '@typescript-eslint/parser': specifier: 8.58.1 version: 8.58.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)