From bba5d284aa6b04716e5cbdd25ea9690d5863cf06 Mon Sep 17 00:00:00 2001 From: Neil Date: Tue, 6 Oct 2026 11:59:44 -0700 Subject: [PATCH] fix(ci): update chat test arguments and extract mobile test harness --- ...ative-chat-turn-disclosure-test-harness.ts | 40 +++++++++++++++++++ ...obile-native-chat-turn-disclosure.test.tsx | 37 +---------------- ...structured-agent-session-live-turn.test.ts | 8 +++- 3 files changed, 47 insertions(+), 38 deletions(-) create mode 100644 mobile/src/session/mobile-native-chat-turn-disclosure-test-harness.ts diff --git a/mobile/src/session/mobile-native-chat-turn-disclosure-test-harness.ts b/mobile/src/session/mobile-native-chat-turn-disclosure-test-harness.ts new file mode 100644 index 000000000000..ac1799d0b75d --- /dev/null +++ b/mobile/src/session/mobile-native-chat-turn-disclosure-test-harness.ts @@ -0,0 +1,40 @@ +import { createElement } from 'react' +import type { NativeChatMessage } from '../../../src/shared/native-chat-types' +import type { NativeChatTurnJournal } from '../../../src/shared/native-chat-turn-membership' +import type { NativeChatSettledTurns } from '../../../src/shared/native-chat-turn-status' +import { useMobileNativeChatTurnDisclosure } from './use-mobile-native-chat-turn-disclosure' + +export function MobileNativeChatTurnDisclosureHarness({ + messages, + enabled, + isWorking = true, + settledTurns, + turnJournal, + workingStartedAt, + thinking, + lineYields, + scopeKey = 'host\0worktree\0tab-a' +}: { + messages: readonly NativeChatMessage[] + enabled: boolean + isWorking?: boolean + settledTurns?: NativeChatSettledTurns + turnJournal?: NativeChatTurnJournal + workingStartedAt?: number | null + thinking?: boolean + lineYields?: boolean + scopeKey?: string +}): React.JSX.Element { + const disclosure = useMobileNativeChatTurnDisclosure({ + messages, + enabled, + isWorking, + settledTurns, + turnJournal, + workingStartedAt, + thinking, + lineYields, + scopeKey + }) + return createElement('result', { disclosure }) +} diff --git a/mobile/src/session/use-mobile-native-chat-turn-disclosure.test.tsx b/mobile/src/session/use-mobile-native-chat-turn-disclosure.test.tsx index 766190a6bf07..51a5a1b483b2 100644 --- a/mobile/src/session/use-mobile-native-chat-turn-disclosure.test.tsx +++ b/mobile/src/session/use-mobile-native-chat-turn-disclosure.test.tsx @@ -9,7 +9,7 @@ import type { import { agentJournalSubmissionKey } from '../../../src/shared/agent-session-journal-item-key' import type { NativeChatMessage } from '../../../src/shared/native-chat-types' import type { NativeChatTurnJournal } from '../../../src/shared/native-chat-turn-membership' -import type { NativeChatSettledTurns } from '../../../src/shared/native-chat-turn-status' +import { MobileNativeChatTurnDisclosureHarness as Harness } from './mobile-native-chat-turn-disclosure-test-harness' import { useMobileNativeChatTurnDisclosure } from './use-mobile-native-chat-turn-disclosure' function userMessage(id: string): NativeChatMessage { @@ -22,41 +22,6 @@ function userMessage(id: string): NativeChatMessage { } } -function Harness({ - messages, - enabled, - isWorking = true, - settledTurns, - turnJournal, - workingStartedAt, - thinking, - lineYields, - scopeKey = 'host\0worktree\0tab-a' -}: { - messages: readonly NativeChatMessage[] - enabled: boolean - isWorking?: boolean - settledTurns?: NativeChatSettledTurns - turnJournal?: NativeChatTurnJournal - workingStartedAt?: number | null - thinking?: boolean - lineYields?: boolean - scopeKey?: string -}): React.JSX.Element { - const disclosure = useMobileNativeChatTurnDisclosure({ - messages, - enabled, - isWorking, - settledTurns, - turnJournal, - workingStartedAt, - thinking, - lineYields, - scopeKey - }) - return createElement('result', { disclosure }) -} - describe('useMobileNativeChatTurnDisclosure', () => { let renderer: ReactTestRenderer | null = null diff --git a/src/shared/structured-agent-session-live-turn.test.ts b/src/shared/structured-agent-session-live-turn.test.ts index 5a4d1f7d43c8..389e6b2aff38 100644 --- a/src/shared/structured-agent-session-live-turn.test.ts +++ b/src/shared/structured-agent-session-live-turn.test.ts @@ -39,9 +39,13 @@ describe('isStructuredAgentSessionThinking', () => { state, ...(state === 'completed' ? { completedAt: 3 } : {}) }) - expect(isStructuredAgentSessionThinking([turnStart, withState('running')])).toBe(true) + expect(isStructuredAgentSessionThinking({ items: [turnStart, withState('running')] })).toBe( + true + ) // Ended reasoning stays the newest row while Claude streams a tool's input after it. - expect(isStructuredAgentSessionThinking([turnStart, withState('completed')])).toBe(false) + expect(isStructuredAgentSessionThinking({ items: [turnStart, withState('completed')] })).toBe( + false + ) }) it('is false once a tool call, a message or a diff lands after the reasoning', () => {