diff --git a/src/renderer/src/components/native-chat/tools/runs/NativeChatToolRunMembers.reader.test.tsx b/src/renderer/src/components/native-chat/tools/runs/NativeChatToolRunMembers.reader.test.tsx index 8cc29275993..c0a9b4d754f 100644 --- a/src/renderer/src/components/native-chat/tools/runs/NativeChatToolRunMembers.reader.test.tsx +++ b/src/renderer/src/components/native-chat/tools/runs/NativeChatToolRunMembers.reader.test.tsx @@ -176,6 +176,9 @@ function editRun(count: number, editAt: number): NativeChatBlock[] { return blocks } +// Stable, as a real transcript's callback is: a new one each render would make every card reveal again. +const ignoreRevealTarget = (): void => {} + function Transcript({ blocks, mounted = true, @@ -203,7 +206,7 @@ function Transcript({ activeTurnIsWorking={live} disclosureId="message-1" revealedDiff={revealedDiff} - onRevealDiff={() => {}} + onRevealDiff={ignoreRevealTarget} /> ) : null} @@ -388,7 +391,9 @@ describe('NativeChatToolRun opened-run reader', () => { await settle() expect(topRow(container).key).toBe('edit:apply_patch:400') - // A reveal made in the same render that shows the pane again wins over the place it kept while hidden. + // A reveal made in the same render that shows the pane again wins over the place it kept while hidden, + // and is what the run keeps even before the browser reports the reveal's scroll: hidden again at once and + // shown under the same request (so no fresh reveal), it returns to the revealed edit. await scrollBox(container, 2_000) pane.hidden = true rerender( @@ -396,17 +401,12 @@ describe('NativeChatToolRun opened-run reader', () => { ) pane.hidden = false rerender() - await settle() - expect(topRow(container).key).toBe('edit:apply_patch:400') - - // That revealed place is what the run keeps: hidden, evicted and back, it returns there. pane.hidden = true rerender( ) - rerender() pane.hidden = false - rerender() + rerender() await settle() expect(topRow(container).key).toBe('edit:apply_patch:400') })