diff --git a/tools/server/webui/.storybook/main.ts b/tools/server/webui/.storybook/main.ts
index 7145bcb7eb..bfd16fa224 100644
--- a/tools/server/webui/.storybook/main.ts
+++ b/tools/server/webui/.storybook/main.ts
@@ -1,7 +1,7 @@
import type { StorybookConfig } from '@storybook/sveltekit';
const config: StorybookConfig = {
- stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|ts|svelte)'],
+ stories: ['../tests/stories/**/*.mdx', '../tests/stories/**/*.stories.@(js|ts|svelte)'],
addons: [
'@storybook/addon-svelte-csf',
'@chromatic-com/storybook',
diff --git a/tools/server/webui/playwright.config.ts b/tools/server/webui/playwright.config.ts
index 51688b3941..26d3be535d 100644
--- a/tools/server/webui/playwright.config.ts
+++ b/tools/server/webui/playwright.config.ts
@@ -7,5 +7,5 @@ export default defineConfig({
timeout: 120000,
reuseExistingServer: false
},
- testDir: 'e2e'
+ testDir: 'tests/e2e'
});
diff --git a/tools/server/webui/src/lib/utils/model-names.test.ts b/tools/server/webui/src/lib/utils/model-names.test.ts
index e19e92f777..ca85df3d30 100644
--- a/tools/server/webui/src/lib/utils/model-names.test.ts
+++ b/tools/server/webui/src/lib/utils/model-names.test.ts
@@ -2,12 +2,19 @@ import { describe, expect, it } from 'vitest';
import { isValidModelName, normalizeModelName } from './model-names';
describe('normalizeModelName', () => {
- it('extracts filename from forward slash path', () => {
- expect(normalizeModelName('models/model-name-1')).toBe('model-name-1');
- expect(normalizeModelName('path/to/model/model-name-2')).toBe('model-name-2');
+ it('preserves Hugging Face org/model format (single slash)', () => {
+ // Single slash is treated as Hugging Face format and preserved
+ expect(normalizeModelName('meta-llama/Llama-3.1-8B')).toBe('meta-llama/Llama-3.1-8B');
+ expect(normalizeModelName('models/model-name-1')).toBe('models/model-name-1');
});
- it('extracts filename from backslash path', () => {
+ it('extracts filename from multi-segment paths', () => {
+ // Multiple slashes -> extract just the filename
+ expect(normalizeModelName('path/to/model/model-name-2')).toBe('model-name-2');
+ expect(normalizeModelName('/absolute/path/to/model')).toBe('model');
+ });
+
+ it('extracts filename from backslash paths', () => {
expect(normalizeModelName('C\\Models\\model-name-1')).toBe('model-name-1');
expect(normalizeModelName('path\\to\\model\\model-name-2')).toBe('model-name-2');
});
diff --git a/tools/server/webui/src/routes/page.svelte.test.ts b/tools/server/webui/src/routes/page.svelte.test.ts
deleted file mode 100644
index d8db7cda1e..0000000000
--- a/tools/server/webui/src/routes/page.svelte.test.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { describe, it } from 'vitest';
-import { render } from 'vitest-browser-svelte';
-import Page from './+page.svelte';
-
-describe('/+page.svelte', () => {
- it('should render page', async () => {
- render(Page);
-
- // todo - add tests
- });
-});
diff --git a/tools/server/webui/tests/client/components/TestWrapper.svelte b/tools/server/webui/tests/client/components/TestWrapper.svelte
new file mode 100644
index 0000000000..4bbb8e8603
--- /dev/null
+++ b/tools/server/webui/tests/client/components/TestWrapper.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/tools/server/webui/tests/client/page.svelte.test.ts b/tools/server/webui/tests/client/page.svelte.test.ts
new file mode 100644
index 0000000000..6849beb27b
--- /dev/null
+++ b/tools/server/webui/tests/client/page.svelte.test.ts
@@ -0,0 +1,11 @@
+import { describe, it, expect } from 'vitest';
+import { render } from 'vitest-browser-svelte';
+import TestWrapper from './components/TestWrapper.svelte';
+
+describe('/+page.svelte', () => {
+ it('should render page without throwing', async () => {
+ // Basic smoke test - page should render without throwing errors
+ // API calls will fail in test environment but component should still mount
+ expect(() => render(TestWrapper)).not.toThrow();
+ });
+});
diff --git a/tools/server/webui/e2e/demo.test.ts b/tools/server/webui/tests/e2e/demo.test.ts
similarity index 100%
rename from tools/server/webui/e2e/demo.test.ts
rename to tools/server/webui/tests/e2e/demo.test.ts
diff --git a/tools/server/webui/src/stories/ChatForm.stories.svelte b/tools/server/webui/tests/stories/ChatForm.stories.svelte
similarity index 100%
rename from tools/server/webui/src/stories/ChatForm.stories.svelte
rename to tools/server/webui/tests/stories/ChatForm.stories.svelte
diff --git a/tools/server/webui/src/stories/ChatMessage.stories.svelte b/tools/server/webui/tests/stories/ChatMessage.stories.svelte
similarity index 100%
rename from tools/server/webui/src/stories/ChatMessage.stories.svelte
rename to tools/server/webui/tests/stories/ChatMessage.stories.svelte
diff --git a/tools/server/webui/src/stories/ChatSettings.stories.svelte b/tools/server/webui/tests/stories/ChatSettings.stories.svelte
similarity index 100%
rename from tools/server/webui/src/stories/ChatSettings.stories.svelte
rename to tools/server/webui/tests/stories/ChatSettings.stories.svelte
diff --git a/tools/server/webui/src/stories/ChatSidebar.stories.svelte b/tools/server/webui/tests/stories/ChatSidebar.stories.svelte
similarity index 100%
rename from tools/server/webui/src/stories/ChatSidebar.stories.svelte
rename to tools/server/webui/tests/stories/ChatSidebar.stories.svelte
diff --git a/tools/server/webui/src/stories/Introduction.mdx b/tools/server/webui/tests/stories/Introduction.mdx
similarity index 100%
rename from tools/server/webui/src/stories/Introduction.mdx
rename to tools/server/webui/tests/stories/Introduction.mdx
diff --git a/tools/server/webui/src/stories/MarkdownContent.stories.svelte b/tools/server/webui/tests/stories/MarkdownContent.stories.svelte
similarity index 100%
rename from tools/server/webui/src/stories/MarkdownContent.stories.svelte
rename to tools/server/webui/tests/stories/MarkdownContent.stories.svelte
diff --git a/tools/server/webui/src/stories/fixtures/ai-tutorial.ts b/tools/server/webui/tests/stories/fixtures/ai-tutorial.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/ai-tutorial.ts
rename to tools/server/webui/tests/stories/fixtures/ai-tutorial.ts
diff --git a/tools/server/webui/src/stories/fixtures/api-docs.ts b/tools/server/webui/tests/stories/fixtures/api-docs.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/api-docs.ts
rename to tools/server/webui/tests/stories/fixtures/api-docs.ts
diff --git a/tools/server/webui/src/stories/fixtures/assets/1.jpg b/tools/server/webui/tests/stories/fixtures/assets/1.jpg
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/assets/1.jpg
rename to tools/server/webui/tests/stories/fixtures/assets/1.jpg
diff --git a/tools/server/webui/src/stories/fixtures/assets/beautiful-flowers-lotus.webp b/tools/server/webui/tests/stories/fixtures/assets/beautiful-flowers-lotus.webp
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/assets/beautiful-flowers-lotus.webp
rename to tools/server/webui/tests/stories/fixtures/assets/beautiful-flowers-lotus.webp
diff --git a/tools/server/webui/src/stories/fixtures/assets/example.pdf b/tools/server/webui/tests/stories/fixtures/assets/example.pdf
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/assets/example.pdf
rename to tools/server/webui/tests/stories/fixtures/assets/example.pdf
diff --git a/tools/server/webui/src/stories/fixtures/assets/hf-logo.svg b/tools/server/webui/tests/stories/fixtures/assets/hf-logo.svg
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/assets/hf-logo.svg
rename to tools/server/webui/tests/stories/fixtures/assets/hf-logo.svg
diff --git a/tools/server/webui/src/stories/fixtures/blog-post.ts b/tools/server/webui/tests/stories/fixtures/blog-post.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/blog-post.ts
rename to tools/server/webui/tests/stories/fixtures/blog-post.ts
diff --git a/tools/server/webui/src/stories/fixtures/data-analysis.ts b/tools/server/webui/tests/stories/fixtures/data-analysis.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/data-analysis.ts
rename to tools/server/webui/tests/stories/fixtures/data-analysis.ts
diff --git a/tools/server/webui/src/stories/fixtures/empty.ts b/tools/server/webui/tests/stories/fixtures/empty.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/empty.ts
rename to tools/server/webui/tests/stories/fixtures/empty.ts
diff --git a/tools/server/webui/src/stories/fixtures/math-formulas.ts b/tools/server/webui/tests/stories/fixtures/math-formulas.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/math-formulas.ts
rename to tools/server/webui/tests/stories/fixtures/math-formulas.ts
diff --git a/tools/server/webui/src/stories/fixtures/readme.ts b/tools/server/webui/tests/stories/fixtures/readme.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/readme.ts
rename to tools/server/webui/tests/stories/fixtures/readme.ts
diff --git a/tools/server/webui/src/stories/fixtures/storybook-mocks.ts b/tools/server/webui/tests/stories/fixtures/storybook-mocks.ts
similarity index 100%
rename from tools/server/webui/src/stories/fixtures/storybook-mocks.ts
rename to tools/server/webui/tests/stories/fixtures/storybook-mocks.ts
diff --git a/tools/server/webui/vite.config.ts b/tools/server/webui/vite.config.ts
index f2df5dc287..efb33965e7 100644
--- a/tools/server/webui/vite.config.ts
+++ b/tools/server/webui/vite.config.ts
@@ -118,8 +118,7 @@ export default defineConfig({
provider: 'playwright',
instances: [{ browser: 'chromium' }]
},
- include: ['src/**/*.svelte.{test,spec}.{js,ts}'],
- exclude: ['src/lib/server/**'],
+ include: ['tests/client/**/*.svelte.{test,spec}.{js,ts}'],
setupFiles: ['./vitest-setup-client.ts']
}
},
@@ -128,8 +127,7 @@ export default defineConfig({
test: {
name: 'server',
environment: 'node',
- include: ['src/**/*.{test,spec}.{js,ts}'],
- exclude: ['src/**/*.svelte.{test,spec}.{js,ts}']
+ include: ['tests/server/**/*.{test,spec}.{js,ts}']
}
},
{
@@ -142,7 +140,7 @@ export default defineConfig({
provider: 'playwright',
instances: [{ browser: 'chromium', headless: true }]
},
- include: ['src/**/*.stories.{js,ts,svelte}'],
+ include: ['tests/stories/**/*.stories.{js,ts,svelte}'],
setupFiles: ['./.storybook/vitest.setup.ts']
},
plugins: [