fix(cli): enable typechecking for ui/components tests (#11419)

Co-authored-by: Jacob MacDonald <jakemac@google.com>
This commit is contained in:
Sandy Tao
2025-10-17 16:16:12 -07:00
committed by GitHub
parent f4330c9f5e
commit cedf0235a1
12 changed files with 377 additions and 239 deletions

View File

@@ -9,6 +9,7 @@ import { describe, it, expect, vi } from 'vitest';
import { ToolStatsDisplay } from './ToolStatsDisplay.js';
import * as SessionContext from '../contexts/SessionContext.js';
import type { SessionMetrics } from '../contexts/SessionContext.js';
import { ToolCallDecision } from '@google/gemini-cli-core';
// Mock the context to provide controlled data for testing
vi.mock('../contexts/SessionContext.js', async (importOriginal) => {
@@ -24,6 +25,7 @@ const useSessionStatsMock = vi.mocked(SessionContext.useSessionStats);
const renderWithMockedStats = (metrics: SessionMetrics) => {
useSessionStatsMock.mockReturnValue({
stats: {
sessionId: 'test-session-id',
sessionStartTime: new Date(),
metrics,
lastPromptTokenCount: 0,
@@ -46,9 +48,18 @@ describe('<ToolStatsDisplay />', () => {
totalSuccess: 0,
totalFail: 0,
totalDurationMs: 0,
totalDecisions: { accept: 0, reject: 0, modify: 0 },
totalDecisions: {
accept: 0,
reject: 0,
modify: 0,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
byName: {},
},
files: {
totalLinesAdded: 0,
totalLinesRemoved: 0,
},
});
expect(lastFrame()).toContain(
@@ -65,17 +76,31 @@ describe('<ToolStatsDisplay />', () => {
totalSuccess: 1,
totalFail: 0,
totalDurationMs: 100,
totalDecisions: { accept: 1, reject: 0, modify: 0 },
totalDecisions: {
accept: 1,
reject: 0,
modify: 0,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
byName: {
'test-tool': {
count: 1,
success: 1,
fail: 0,
durationMs: 100,
decisions: { accept: 1, reject: 0, modify: 0 },
decisions: {
accept: 1,
reject: 0,
modify: 0,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
},
},
},
files: {
totalLinesAdded: 0,
totalLinesRemoved: 0,
},
});
const output = lastFrame();
@@ -91,24 +116,43 @@ describe('<ToolStatsDisplay />', () => {
totalSuccess: 2,
totalFail: 1,
totalDurationMs: 300,
totalDecisions: { accept: 1, reject: 1, modify: 1 },
totalDecisions: {
accept: 1,
reject: 1,
modify: 1,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
byName: {
'tool-a': {
count: 2,
success: 1,
fail: 1,
durationMs: 200,
decisions: { accept: 1, reject: 1, modify: 0 },
decisions: {
accept: 1,
reject: 1,
modify: 0,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
},
'tool-b': {
count: 1,
success: 1,
fail: 0,
durationMs: 100,
decisions: { accept: 0, reject: 0, modify: 1 },
decisions: {
accept: 0,
reject: 0,
modify: 1,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
},
},
},
files: {
totalLinesAdded: 0,
totalLinesRemoved: 0,
},
});
const output = lastFrame();
@@ -129,6 +173,7 @@ describe('<ToolStatsDisplay />', () => {
accept: 123456789,
reject: 98765432,
modify: 12345,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
byName: {
'long-named-tool-for-testing-wrapping-and-such': {
@@ -140,10 +185,15 @@ describe('<ToolStatsDisplay />', () => {
accept: 123456789,
reject: 98765432,
modify: 12345,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
},
},
},
files: {
totalLinesAdded: 0,
totalLinesRemoved: 0,
},
});
expect(lastFrame()).toMatchSnapshot();
@@ -157,17 +207,31 @@ describe('<ToolStatsDisplay />', () => {
totalSuccess: 1,
totalFail: 0,
totalDurationMs: 100,
totalDecisions: { accept: 0, reject: 0, modify: 0 },
totalDecisions: {
accept: 0,
reject: 0,
modify: 0,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
byName: {
'test-tool': {
count: 1,
success: 1,
fail: 0,
durationMs: 100,
decisions: { accept: 0, reject: 0, modify: 0 },
decisions: {
accept: 0,
reject: 0,
modify: 0,
[ToolCallDecision.AUTO_ACCEPT]: 0,
},
},
},
},
files: {
totalLinesAdded: 0,
totalLinesRemoved: 0,
},
});
const output = lastFrame();