test(client): cover unnamed results and versionless update tooltips

This commit is contained in:
liyao committed 2026-09-24 17:13:12 +08:00
1 parent be5a84ad0b
commit 274bb97e0a
3 files changed
+26 -3

No files matched your search

@@ -164,3 +164,16 @@ it.each(['checking', 'verifying', 'installing'] as const)('shows only the versio
expect((await screen.findByRole('tooltip')).textContent).toBe('0.1.7-alpha.2')
} finally { f.view.unmount(); f.status.resolve({ phase: 'idle' }) }
})
it.each([
['checking', '正在检查更新…'],
['verifying', '正在校验更新文件…'],
['installing', '正在准备重启…'],
] as const)('retains the state label when %s has no version', async (phase, label) => {
const f = fixture()
try {
await f.emit({ phase })
fireEvent.focus(screen.getByRole('button', { name: label }))
expect((await screen.findByRole('tooltip')).textContent).toBe(label)
} finally { f.view.unmount(); f.status.resolve({ phase: 'idle' }) }
})
@@ -119,8 +119,8 @@ describe('session rename through the assembled browser', () => {
registerAction('last', 600, -2, 'Last action')
const view = runtime.renderRoot()
const row = (await view.findByText('Session title')).closest('[role="treeitem"]')!
const trigger = within(row as HTMLElement).getByLabelText('会话“Session title”的操作')
const row = (await view.findByText('Persisted title')).closest('[role="treeitem"]')!
const trigger = within(row as HTMLElement).getByLabelText('会话“Persisted title”的操作')
fireEvent.click(trigger)
expect(view.getAllByRole('menuitem').map(item => item.textContent)).toEqual([
'置顶会话', '重命名', '分叉会话', '归档会话', 'Export action', 'Last action',
@@ -134,7 +134,7 @@ describe('session rename through the assembled browser', () => {
fireEvent.keyDown(last, { key: 'ArrowUp' })
expect(document.activeElement).toBe(exportRow)
fireEvent.click(exportRow)
expect(selected).toHaveBeenCalledWith('export', SID, 'Session title')
expect(selected).toHaveBeenCalledWith('export', SID, 'Persisted title')
// The plugin row dismissed the menu through the bound open-state hook;
// the list returns focus to the trigger.
expect(view.queryByRole('menu')).toBeNull()
@@ -1088,3 +1088,13 @@ it.each([['未命名', t], ['Untitled', tEn]])('labels unnamed history as %s', (
renderSlot={() => null} t={translate} />)
expect(screen.getByText(label)).toBeTruthy()
})
it.each([['未命名', t], ['Untitled', tEn]])('labels unnamed search results as %s', (label, translate) => {
const result: SearchResultNode = { id: sid('unnamed-search'), title: '', workspace: 'Project',
running: false, runningSubagentCount: 0, completed: false, archived: false }
const onOpen = vi.fn()
render(<SearchResultItem result={result} currentId={undefined} onOpen={onOpen}
onUnarchive={vi.fn()} t={translate} />)
fireEvent.click(screen.getByText(label))
expect(onOpen).toHaveBeenCalledWith(result.id)
})