mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 23:50:32 +02:00
54 lines
2.6 KiB
JavaScript
54 lines
2.6 KiB
JavaScript
const fs = require('node:fs');
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const monitor = fs.readFileSync('web/static/js/monitor.js', 'utf8');
|
|
const webshell = fs.readFileSync('web/static/js/webshell.js', 'utf8');
|
|
const styles = fs.readFileSync('web/static/css/style.css', 'utf8');
|
|
const zh = JSON.parse(fs.readFileSync('web/static/i18n/zh-CN.json', 'utf8'));
|
|
const en = JSON.parse(fs.readFileSync('web/static/i18n/en-US.json', 'utf8'));
|
|
|
|
test('Eino token usage summary is rendered as a first-class timeline event', () => {
|
|
assert.match(monitor, /case 'eino_usage_summary'/);
|
|
assert.match(monitor, /formatEinoUsageSummaryTitle\(d\)/);
|
|
assert.match(monitor, /formatEinoUsageSummaryMessage\(d\)/);
|
|
assert.match(monitor, /addTimelineItem\(timeline, 'eino_usage_summary'/);
|
|
assert.match(styles, /\.timeline-item-eino_usage_summary/);
|
|
assert.match(styles, /html\[data-theme="dark"\] \.timeline-item-eino_usage_summary/);
|
|
});
|
|
|
|
test('Eino token usage summary is visible in WebShell live and restored timelines', () => {
|
|
assert.match(webshell, /_et === 'eino_usage_summary'/);
|
|
assert.match(webshell, /appendTimelineItem\('eino_usage_summary'/);
|
|
assert.match(webshell, /function formatWebshellEinoUsageSummaryTitle/);
|
|
assert.match(webshell, /function formatWebshellEinoUsageSummaryMessage/);
|
|
assert.match(webshell, /eventType === 'eino_usage_summary'/);
|
|
assert.match(styles, /\.webshell-ai-timeline-eino_usage_summary/);
|
|
assert.match(styles, /html\[data-theme="dark"\] \.webshell-ai-timeline-eino_usage_summary/);
|
|
});
|
|
|
|
test('Eino token usage summary supports language refresh', () => {
|
|
assert.match(monitor, /type === 'eino_usage_summary'/);
|
|
assert.match(monitor, /item\.dataset\.modelCalls/);
|
|
assert.match(monitor, /setTimelineItemContentStreamPlain\(contentEl, formatEinoUsageSummaryMessage\(usageData\)\)/);
|
|
});
|
|
|
|
test('Eino resilience and usage timeline labels have zh/en translations', () => {
|
|
[
|
|
'einoModelRetryTitle',
|
|
'einoModelFailoverTitle',
|
|
'einoUsageSummaryTitle',
|
|
'einoUsageModelCalls',
|
|
'einoUsagePromptTokens',
|
|
'einoUsageCompletionTokens',
|
|
'einoUsageTotalTokens',
|
|
'einoUsageCachedTokens',
|
|
'einoUsageReasoningTokens'
|
|
].forEach((key) => {
|
|
assert.equal(typeof zh.chat[key], 'string', `zh chat.${key}`);
|
|
assert.ok(zh.chat[key].length > 0, `zh chat.${key} is empty`);
|
|
assert.equal(typeof en.chat[key], 'string', `en chat.${key}`);
|
|
assert.ok(en.chat[key].length > 0, `en chat.${key} is empty`);
|
|
});
|
|
});
|