diff --git a/packages/client/ui-primitives/tests/fence-previews.client.spec.tsx b/packages/client/ui-primitives/tests/fence-previews.client.spec.tsx
index f7fe436821..cc240f75c1 100644
--- a/packages/client/ui-primitives/tests/fence-previews.client.spec.tsx
+++ b/packages/client/ui-primitives/tests/fence-previews.client.spec.tsx
@@ -81,6 +81,18 @@ describe('Markdown fence previews', () => {
})
describe('static preview documents', () => {
+ it.each(['light', 'dark'])('uses the document %s color scheme for HTML previews', (scheme) => {
+ const previous = document.documentElement.style.colorScheme
+ try {
+ document.documentElement.style.colorScheme = scheme
+ const doc = renderHtml('
Example
', new AbortController().signal)
+ const parsed = new DOMParser().parseFromString(doc, 'text/html')
+ expect(parsed.documentElement.style.colorScheme).toBe(scheme)
+ } finally {
+ document.documentElement.style.colorScheme = previous
+ }
+ })
+
it('preserves HTML styling while removing scripts, navigation, and nested documents', () => {
const doc = renderHtml(`
diff --git a/packages/client/ui-primitives/tests/mermaid-runtime.client.spec.ts b/packages/client/ui-primitives/tests/mermaid-runtime.client.spec.ts
index 863abde53d..c5a4ccd6d3 100644
--- a/packages/client/ui-primitives/tests/mermaid-runtime.client.spec.ts
+++ b/packages/client/ui-primitives/tests/mermaid-runtime.client.spec.ts
@@ -13,6 +13,17 @@ beforeEach(() => {
afterEach(() => { vi.doUnmock('mermaid') })
describe('Mermaid runtime', () => {
+ it('allows another attempt after the runtime import fails', async () => {
+ vi.doMock('mermaid', () => { throw new Error('runtime unavailable') })
+ const { renderMermaid } = await import('../src/markdown/mermaid.ts')
+ await expect(renderMermaid('first', new AbortController().signal)).rejects.toThrow()
+ expect(initialize).not.toHaveBeenCalled()
+ vi.doMock('mermaid', () => ({ default: { initialize, render: renderDiagram } }))
+ renderDiagram.mockResolvedValue({ svg: '' })
+ await expect(renderMermaid('retry', new AbortController().signal)).resolves.toContain('data:image/svg+xml')
+ expect(renderDiagram).toHaveBeenCalledOnce()
+ })
+
it('accepts native configuration without weakening preview restrictions', async () => {
const { renderMermaid } = await import('../src/markdown/mermaid.ts')
renderDiagram.mockResolvedValue({ svg: '' })