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')
})