60 lines
3.0 KiB
TypeScript
60 lines
3.0 KiB
TypeScript
// @vitest-environment jsdom
|
|
import { readFileSync } from 'fs'
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
describe('chat message mobile layout guards', () => {
|
|
it('keeps chat message containers shrinkable on narrow screens', () => {
|
|
const chatPanel = readFileSync('packages/client/src/components/hermes/chat/ChatPanel.vue', 'utf8')
|
|
const messageList = readFileSync('packages/client/src/components/hermes/chat/MessageList.vue', 'utf8')
|
|
const virtualList = readFileSync('packages/client/src/components/hermes/chat/VirtualMessageList.vue', 'utf8')
|
|
const messageItem = readFileSync('packages/client/src/components/hermes/chat/MessageItem.vue', 'utf8')
|
|
const markdownRenderer = readFileSync('packages/client/src/components/hermes/chat/MarkdownRenderer.vue', 'utf8')
|
|
const groupChatPanel = readFileSync('packages/client/src/components/hermes/group-chat/GroupChatPanel.vue', 'utf8')
|
|
const groupMessageList = readFileSync('packages/client/src/components/hermes/group-chat/GroupMessageList.vue', 'utf8')
|
|
const groupMessageItem = readFileSync('packages/client/src/components/hermes/group-chat/GroupMessageItem.vue', 'utf8')
|
|
|
|
expect(chatPanel).toContain('.chat-panel')
|
|
expect(chatPanel).toContain('min-width: 0;')
|
|
expect(chatPanel).toContain('.chat-content-wrapper')
|
|
expect(chatPanel).toContain('max-width: 100%;')
|
|
|
|
expect(messageList).toContain('.streaming-indicator')
|
|
expect(messageList).toContain('.tool-calls-panel')
|
|
expect(messageList).toContain('.tool-call-preview')
|
|
expect(messageList).toContain('function toolPreviewText')
|
|
expect(messageList).toContain(':title="tc.toolPreview"')
|
|
expect(messageList).toContain('max-width: 34%;')
|
|
expect(messageList).toContain('flex: 1 1 0;')
|
|
expect(messageList).toContain('width: 100%;')
|
|
expect(messageList).toContain('max-width: none;')
|
|
|
|
expect(virtualList).toContain('.virtual-message-list-host')
|
|
expect(virtualList).toContain('.virtual-row')
|
|
expect(virtualList).toContain('min-width: 0;')
|
|
expect(virtualList).toContain('max-width: 100%;')
|
|
|
|
expect(messageItem).toContain('.msg-body')
|
|
expect(messageItem).toContain('.msg-content')
|
|
expect(messageItem).toContain('.message-bubble')
|
|
expect(messageItem).toContain('overflow-wrap: anywhere;')
|
|
|
|
expect(markdownRenderer).toContain('.markdown-body')
|
|
expect(markdownRenderer).toContain('width: 100%;')
|
|
expect(markdownRenderer).toContain('code:not(.hljs)')
|
|
expect(markdownRenderer).toContain('white-space: pre-wrap;')
|
|
|
|
expect(groupChatPanel).toContain('.group-chat-panel')
|
|
expect(groupChatPanel).toContain('min-width: 0;')
|
|
expect(groupChatPanel).toContain('max-width: 100%;')
|
|
|
|
expect(groupMessageList).toContain('.group-message-list')
|
|
expect(groupMessageList).toContain('min-width: 0;')
|
|
expect(groupMessageList).toContain('max-width: 100%;')
|
|
|
|
expect(groupMessageItem).toContain('.group-message')
|
|
expect(groupMessageItem).toContain('.msg-body')
|
|
expect(groupMessageItem).toContain('.msg-content')
|
|
expect(groupMessageItem).toContain('overflow-wrap: anywhere;')
|
|
})
|
|
})
|