diff --git a/packages/client/ui-conversation/tests/todo-panel.spec.tsx b/packages/client/ui-conversation/tests/todo-panel.spec.tsx index 761cb4dfd3..d3c5b93ecf 100644 --- a/packages/client/ui-conversation/tests/todo-panel.spec.tsx +++ b/packages/client/ui-conversation/tests/todo-panel.spec.tsx @@ -113,6 +113,16 @@ describe('TodoRow', () => { expect(openDetails).toHaveBeenCalledTimes(1) }) + it.each([ + { label: 'null root', argsRaw: 'null' }, + { label: 'non-object root', argsRaw: '42' }, + { label: 'null items', argsRaw: '{"todos":[null]}' }, + ])('falls back to the generic summary on valid JSON with an invalid shape ($label)', ({ argsRaw }) => { + render() + // No throw, and the generic others summary carries the raw args verbatim. + expect(screen.getByText(`todo_write · ${argsRaw}`)).toBeTruthy() + }) + it('window-truncated result (call head lost) falls back to the callId summary', () => { render() expect(screen.getByText('todo_write · c1')).toBeTruthy()