diff --git a/dsh-community-market/tests/client-launcher.spec.tsx b/dsh-community-market/tests/client-launcher.spec.tsx
new file mode 100644
index 0000000000..37a0aab494
--- /dev/null
+++ b/dsh-community-market/tests/client-launcher.spec.tsx
@@ -0,0 +1,43 @@
+// @vitest-environment jsdom
+
+import { cleanup, fireEvent, render, screen } from '@testing-library/react'
+import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots'
+import { afterEach, describe, expect, it, vi } from 'vitest'
+import type {} from '../src/client/index.js'
+import { MarketController } from '../src/client/controller.js'
+import { MarketLauncher, type MarketLauncherProps } from '../src/client/MarketLauncher.js'
+
+vi.mock('@deepseek-ai/dsh-client-ui-primitives', () => ({
+ IconCordisPluginOutline14: () => null,
+ Tooltip: ({ children }: { children: unknown }) => children,
+}))
+
+afterEach(() => { cleanup() })
+
+const t = ((key: string) => key) as PropsLocale<'community-market'>['t']
+
+describe('community market launcher', () => {
+ it('opens the market and reflects narrow versus wide sidebar presentation', () => {
+ const controller = new MarketController()
+ const props = {
+ wide: false,
+ controller,
+ t,
+ useSessions: (() => undefined) as MarketLauncherProps['useSessions'],
+ useWorkspaces: (() => undefined) as MarketLauncherProps['useWorkspaces'],
+ } satisfies MarketLauncherProps
+
+ const { rerender } = render()
+ const button = screen.getByRole('button', { name: 'launcher' })
+ expect(button.getAttribute('data-wide')).toBe('false')
+ expect(button.getAttribute('data-active')).toBe('false')
+ expect(button.textContent).not.toContain('launcher')
+
+ fireEvent.click(button)
+ expect(button.getAttribute('data-active')).toBe('true')
+
+ rerender()
+ expect(button.getAttribute('data-wide')).toBe('true')
+ expect(button.textContent).toContain('launcher')
+ })
+})
diff --git a/dsh-community-market/tests/style-modules.d.ts b/dsh-community-market/tests/style-modules.d.ts
new file mode 100644
index 0000000000..a2e0814cb8
--- /dev/null
+++ b/dsh-community-market/tests/style-modules.d.ts
@@ -0,0 +1,2 @@
+declare module '*.css' {}
+declare module 'katex/dist/katex.min.css' {}