codev / desktop /src /components /tasks /TaskRunsPanel.test.tsx
chenbhao's picture
feat: desktop
1f21206
Raw
History Blame
1.99 kB
import { afterEach, describe, expect, it, vi } from 'vitest'
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
import '@testing-library/jest-dom'
import { TaskRunsPanel } from './TaskRunsPanel'
import { useSettingsStore } from '../../stores/settingsStore'
import { useTaskStore } from '../../stores/taskStore'
import type { TaskRun } from '../../types/task'
afterEach(() => {
cleanup()
useSettingsStore.setState(useSettingsStore.getInitialState(), true)
useTaskStore.setState(useTaskStore.getInitialState(), true)
})
describe('TaskRunsPanel', () => {
it('renders scheduled task summaries as markdown', async () => {
const run: TaskRun = {
id: 'run-1',
taskId: 'task-1',
taskName: 'Daily summary',
startedAt: '2026-05-08T12:05:37.000Z',
status: 'completed',
prompt: 'Summarize recent commits',
output: '最近7天有3个commit,主要改动:\n\n**1. 2865d50 - UI无障碍改进**\n- 添加 theme-color meta 标签\n- 修复 select 标签问题',
durationMs: 12000,
sessionId: 'session-1',
}
useSettingsStore.setState({ locale: 'en' })
useTaskStore.setState({
fetchTaskRuns: vi.fn(async () => [run]),
} as Partial<ReturnType<typeof useTaskStore.getState>>)
const { container } = render(
<TaskRunsPanel taskId="task-1" onClose={vi.fn()} />,
)
await waitFor(() => expect(screen.getByRole('button', { name: 'Summary' })).toBeInTheDocument())
fireEvent.click(screen.getByRole('button', { name: 'Summary' }))
expect(screen.getByText('1. 2865d50 - UI无障碍改进')).toBeInTheDocument()
expect(container.querySelector('strong')).toHaveTextContent('1. 2865d50 - UI无障碍改进')
expect(screen.getByText('添加 theme-color meta 标签')).toBeInTheDocument()
expect(container.querySelector('li')).toHaveTextContent('添加 theme-color meta 标签')
expect(container.textContent).not.toContain('**1. 2865d50')
})
})