summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/__snapshots__
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/components/__snapshots__')
-rw-r--r--packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap121
-rw-r--r--packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap54
-rw-r--r--packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap166
-rw-r--r--packages/cli/src/ui/components/__snapshots__/ToolStatsDisplay.test.tsx.snap91
4 files changed, 384 insertions, 48 deletions
diff --git a/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap
new file mode 100644
index 00000000..efc0862b
--- /dev/null
+++ b/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap
@@ -0,0 +1,121 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`<ModelStatsDisplay /> > should display a single model correctly 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Model Stats For Nerds │
+│ │
+│ Metric gemini-2.5-pro │
+│ ────────────────────────────────────────────────────────────────────────────────────────────── │
+│ API │
+│ Requests 1 │
+│ Errors 0 (0.0%) │
+│ Avg Latency 100ms │
+│ │
+│ Tokens │
+│ Total 30 │
+│ ↳ Prompt 10 │
+│ ↳ Cached 5 (50.0%) │
+│ ↳ Thoughts 2 │
+│ ↳ Tool 1 │
+│ ↳ Output 20 │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ModelStatsDisplay /> > should display conditional rows if at least one model has data 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Model Stats For Nerds │
+│ │
+│ Metric gemini-2.5-pro gemini-2.5-flash │
+│ ────────────────────────────────────────────────────────────────────────────────────────────── │
+│ API │
+│ Requests 1 1 │
+│ Errors 0 (0.0%) 0 (0.0%) │
+│ Avg Latency 100ms 50ms │
+│ │
+│ Tokens │
+│ Total 30 15 │
+│ ↳ Prompt 10 5 │
+│ ↳ Cached 5 (50.0%) 0 (0.0%) │
+│ ↳ Thoughts 2 0 │
+│ ↳ Tool 0 3 │
+│ ↳ Output 20 10 │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ModelStatsDisplay /> > should display stats for multiple models correctly 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Model Stats For Nerds │
+│ │
+│ Metric gemini-2.5-pro gemini-2.5-flash │
+│ ────────────────────────────────────────────────────────────────────────────────────────────── │
+│ API │
+│ Requests 10 20 │
+│ Errors 1 (10.0%) 2 (10.0%) │
+│ Avg Latency 100ms 25ms │
+│ │
+│ Tokens │
+│ Total 300 600 │
+│ ↳ Prompt 100 200 │
+│ ↳ Cached 50 (50.0%) 100 (50.0%) │
+│ ↳ Thoughts 10 20 │
+│ ↳ Tool 5 10 │
+│ ↳ Output 200 400 │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ModelStatsDisplay /> > should handle large values without wrapping or overlapping 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Model Stats For Nerds │
+│ │
+│ Metric gemini-2.5-pro │
+│ ────────────────────────────────────────────────────────────────────────────────────────────── │
+│ API │
+│ Requests 999,999,999 │
+│ Errors 123,456,789 (12.3%) │
+│ Avg Latency 0ms │
+│ │
+│ Tokens │
+│ Total 999,999,999 │
+│ ↳ Prompt 987,654,321 │
+│ ↳ Cached 123,456,789 (12.5%) │
+│ ↳ Thoughts 111,111,111 │
+│ ↳ Tool 222,222,222 │
+│ ↳ Output 123,456,789 │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ModelStatsDisplay /> > should not display conditional rows if no model has data for them 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Model Stats For Nerds │
+│ │
+│ Metric gemini-2.5-pro │
+│ ────────────────────────────────────────────────────────────────────────────────────────────── │
+│ API │
+│ Requests 1 │
+│ Errors 0 (0.0%) │
+│ Avg Latency 100ms │
+│ │
+│ Tokens │
+│ Total 30 │
+│ ↳ Prompt 10 │
+│ ↳ Output 20 │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ModelStatsDisplay /> > should render "no API calls" message when there are no active models 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ No API calls have been made in this session. │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
diff --git a/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap
index 3d2c373c..06dc2116 100644
--- a/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap
@@ -1,43 +1,45 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`<SessionSummaryDisplay /> > renders correctly with given stats and duration 1`] = `
+exports[`<SessionSummaryDisplay /> > correctly sums and displays stats from multiple models 1`] = `
"╭─────────────────────────────────────╮
│ │
│ Agent powering down. Goodbye! │
│ │
│ │
-│ Cumulative Stats (10 Turns) │
+│ Cumulative Stats (15 API calls) │
│ │
-│ Input Tokens 1,000 │
-│ Output Tokens 2,000 │
-│ Tool Use Tokens 200 │
-│ Thoughts Tokens 300 │
-│ Cached Tokens 500 (14.3%) │
+│ Input Tokens 1,500 │
+│ Output Tokens 3,000 │
+│ Tool Use Tokens 220 │
+│ Thoughts Tokens 350 │
+│ Cached Tokens 600 (12.0%) │
│ ───────────────────────────────── │
-│ Total Tokens 3,500 │
+│ Total Tokens 5,000 │
│ │
-│ Total duration (API) 50.2s │
+│ Total duration (API) 1m 2s │
+│ Total duration (Tools) 0s │
│ Total duration (wall) 1h 23m 45s │
│ │
╰─────────────────────────────────────╯"
`;
exports[`<SessionSummaryDisplay /> > renders zero state correctly 1`] = `
-"╭─────────────────────────────────╮
-│ │
-│ Agent powering down. Goodbye! │
-│ │
-│ │
-│ Cumulative Stats (0 Turns) │
-│ │
-│ Input Tokens 0 │
-│ Output Tokens 0 │
-│ Thoughts Tokens 0 │
-│ ────────────────────────── │
-│ Total Tokens 0 │
-│ │
-│ Total duration (API) 0s │
-│ Total duration (wall) 0s │
-│ │
-╰─────────────────────────────────╯"
+"╭─────────────────────────────────────╮
+│ │
+│ Agent powering down. Goodbye! │
+│ │
+│ │
+│ Cumulative Stats (0 API calls) │
+│ │
+│ Input Tokens 0 │
+│ Output Tokens 0 │
+│ Thoughts Tokens 0 │
+│ ───────────────────────────────── │
+│ Total Tokens 0 │
+│ │
+│ Total duration (API) 0s │
+│ Total duration (Tools) 0s │
+│ Total duration (wall) 1h 23m 45s │
+│ │
+╰─────────────────────────────────────╯"
`;
diff --git a/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap
index b8a070a3..6fc2565e 100644
--- a/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap
@@ -1,41 +1,163 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`<StatsDisplay /> > renders correctly with given stats and duration 1`] = `
+exports[`<StatsDisplay /> > Conditional Color Tests > renders success rate in green for high values 1`] = `
"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
-│ Stats │
+│ Session Stats │
│ │
-│ Last Turn Cumulative (10 Turns) │
+│ Interaction Summary │
+│ Tool Calls: 10 ( ✔ 10 ✖ 0 ) │
+│ Success Rate: 100.0% │
│ │
-│ Input Tokens 100 Input Tokens 1,000 │
-│ Output Tokens 200 Output Tokens 2,000 │
-│ Tool Use Tokens 20 Tool Use Tokens 200 │
-│ Thoughts Tokens 30 Thoughts Tokens 300 │
-│ Cached Tokens 50 Cached Tokens 500 (14.3%) │
-│ ───────────────────────────────────────────── ───────────────────────────────────────────── │
-│ Total Tokens 350 Total Tokens 3,500 │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 0s │
+│ » API Time: 0s (0.0%) │
+│ » Tool Time: 0s (0.0%) │
│ │
-│ Turn Duration (API) 1.2s Total duration (API) 50.2s │
-│ Total duration (wall) 1h 23m 45s │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
`;
-exports[`<StatsDisplay /> > renders zero state correctly 1`] = `
+exports[`<StatsDisplay /> > Conditional Color Tests > renders success rate in red for low values 1`] = `
"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
-│ Stats │
+│ Session Stats │
│ │
-│ Last Turn Cumulative (0 Turns) │
+│ Interaction Summary │
+│ Tool Calls: 10 ( ✔ 5 ✖ 5 ) │
+│ Success Rate: 50.0% │
│ │
-│ Input Tokens 0 Input Tokens 0 │
-│ Output Tokens 0 Output Tokens 0 │
-│ Thoughts Tokens 0 Thoughts Tokens 0 │
-│ ───────────────────────────────────────────── ───────────────────────────────────────────── │
-│ Total Tokens 0 Total Tokens 0 │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 0s │
+│ » API Time: 0s (0.0%) │
+│ » Tool Time: 0s (0.0%) │
+│ │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<StatsDisplay /> > Conditional Color Tests > renders success rate in yellow for medium values 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Session Stats │
+│ │
+│ Interaction Summary │
+│ Tool Calls: 10 ( ✔ 9 ✖ 1 ) │
+│ Success Rate: 90.0% │
+│ │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 0s │
+│ » API Time: 0s (0.0%) │
+│ » Tool Time: 0s (0.0%) │
+│ │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<StatsDisplay /> > Conditional Rendering Tests > hides Efficiency section when cache is not used 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Session Stats │
+│ │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 100ms │
+│ » API Time: 100ms (100.0%) │
+│ » Tool Time: 0s (0.0%) │
+│ │
+│ │
+│ Model Usage Reqs Input Tokens Output Tokens │
+│ ─────────────────────────────────────────────────────────────── │
+│ gemini-2.5-pro 1 100 100 │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<StatsDisplay /> > Conditional Rendering Tests > hides User Agreement when no decisions are made 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Session Stats │
+│ │
+│ Interaction Summary │
+│ Tool Calls: 2 ( ✔ 1 ✖ 1 ) │
+│ Success Rate: 50.0% │
+│ │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 123ms │
+│ » API Time: 0s (0.0%) │
+│ » Tool Time: 123ms (100.0%) │
+│ │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<StatsDisplay /> > renders a table with two models correctly 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Session Stats │
+│ │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 19.5s │
+│ » API Time: 19.5s (100.0%) │
+│ » Tool Time: 0s (0.0%) │
+│ │
+│ │
+│ Model Usage Reqs Input Tokens Output Tokens │
+│ ─────────────────────────────────────────────────────────────── │
+│ gemini-2.5-pro 3 1,000 2,000 │
+│ gemini-2.5-flash 5 25,000 15,000 │
+│ │
+│ Savings Highlight: 10,500 (40.4%) of input tokens were served from the cache, reducing costs. │
+│ │
+│ » Tip: For a full token breakdown, run \`/stats model\`. │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<StatsDisplay /> > renders all sections when all data is present 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Session Stats │
+│ │
+│ Interaction Summary │
+│ Tool Calls: 2 ( ✔ 1 ✖ 1 ) │
+│ Success Rate: 50.0% │
+│ User Agreement: 100.0% (1 reviewed) │
+│ │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 223ms │
+│ » API Time: 100ms (44.8%) │
+│ » Tool Time: 123ms (55.2%) │
+│ │
+│ │
+│ Model Usage Reqs Input Tokens Output Tokens │
+│ ─────────────────────────────────────────────────────────────── │
+│ gemini-2.5-pro 1 100 100 │
+│ │
+│ Savings Highlight: 50 (50.0%) of input tokens were served from the cache, reducing costs. │
+│ │
+│ » Tip: For a full token breakdown, run \`/stats model\`. │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<StatsDisplay /> > renders only the Performance section in its zero state 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ Session Stats │
+│ │
+│ Performance │
+│ Wall Time: 1s │
+│ Agent Active: 0s │
+│ » API Time: 0s (0.0%) │
+│ » Tool Time: 0s (0.0%) │
│ │
-│ Turn Duration (API) 0s Total duration (API) 0s │
-│ Total duration (wall) 0s │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
`;
diff --git a/packages/cli/src/ui/components/__snapshots__/ToolStatsDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/ToolStatsDisplay.test.tsx.snap
new file mode 100644
index 00000000..61fb3efc
--- /dev/null
+++ b/packages/cli/src/ui/components/__snapshots__/ToolStatsDisplay.test.tsx.snap
@@ -0,0 +1,91 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`<ToolStatsDisplay /> > should display stats for a single tool correctly 1`] = `
+"╭────────────────────────────────────────────────────────────────────╮
+│ │
+│ Tool Stats For Nerds │
+│ │
+│ Tool Name Calls Success Rate Avg Duration │
+│ ──────────────────────────────────────────────────────────────── │
+│ test-tool 1 100.0% 100ms │
+│ │
+│ User Decision Summary │
+│ Total Reviewed Suggestions: 1 │
+│ » Accepted: 1 │
+│ » Rejected: 0 │
+│ » Modified: 0 │
+│ ──────────────────────────────────────────────────────────────── │
+│ Overall Agreement Rate: 100.0% │
+│ │
+╰────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ToolStatsDisplay /> > should display stats for multiple tools correctly 1`] = `
+"╭────────────────────────────────────────────────────────────────────╮
+│ │
+│ Tool Stats For Nerds │
+│ │
+│ Tool Name Calls Success Rate Avg Duration │
+│ ──────────────────────────────────────────────────────────────── │
+│ tool-a 2 50.0% 100ms │
+│ tool-b 1 100.0% 100ms │
+│ │
+│ User Decision Summary │
+│ Total Reviewed Suggestions: 3 │
+│ » Accepted: 1 │
+│ » Rejected: 1 │
+│ » Modified: 1 │
+│ ──────────────────────────────────────────────────────────────── │
+│ Overall Agreement Rate: 33.3% │
+│ │
+╰────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ToolStatsDisplay /> > should handle large values without wrapping or overlapping 1`] = `
+"╭────────────────────────────────────────────────────────────────────╮
+│ │
+│ Tool Stats For Nerds │
+│ │
+│ Tool Name Calls Success Rate Avg Duration │
+│ ──────────────────────────────────────────────────────────────── │
+│ long-named-tool-for-testi99999999 88.9% 1ms │
+│ ng-wrapping-and-such 9 │
+│ │
+│ User Decision Summary │
+│ Total Reviewed Suggestions: 222234566 │
+│ » Accepted: 123456789 │
+│ » Rejected: 98765432 │
+│ » Modified: 12345 │
+│ ──────────────────────────────────────────────────────────────── │
+│ Overall Agreement Rate: 55.6% │
+│ │
+╰────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ToolStatsDisplay /> > should handle zero decisions gracefully 1`] = `
+"╭────────────────────────────────────────────────────────────────────╮
+│ │
+│ Tool Stats For Nerds │
+│ │
+│ Tool Name Calls Success Rate Avg Duration │
+│ ──────────────────────────────────────────────────────────────── │
+│ test-tool 1 100.0% 100ms │
+│ │
+│ User Decision Summary │
+│ Total Reviewed Suggestions: 0 │
+│ » Accepted: 0 │
+│ » Rejected: 0 │
+│ » Modified: 0 │
+│ ──────────────────────────────────────────────────────────────── │
+│ Overall Agreement Rate: -- │
+│ │
+╰────────────────────────────────────────────────────────────────────╯"
+`;
+
+exports[`<ToolStatsDisplay /> > should render "no tool calls" message when there are no active tools 1`] = `
+"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │
+│ No tool calls have been made in this session. │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────╯"
+`;