import { render } from "lit" ;
import { describe, expect, it } from "vitest" ;
import { renderAgents, type AgentsProps } from "./agents.ts" ;
function createSkill() {
return {
name: "Repo Skill" ,
description: "Skill description" ,
source: "workspace" ,
filePath: "/tmp/skill" ,
baseDir: "/tmp" ,
skillKey: "repo-skill" ,
always: false ,
disabled: false ,
blockedByAllowlist: false ,
eligible: true ,
requirements: {
bins: [],
env: [],
config: [],
os: [],
},
missing: {
bins: [],
env: [],
config: [],
os: [],
},
configChecks: [],
install: [],
};
}
function createProps(overrides: Partial<AgentsProps> = {}): AgentsProps {
return {
basePath: "" ,
loading: false ,
error: null ,
agentsList: {
defaultId: "alpha" ,
mainKey: "main" ,
scope: "workspace" ,
agents: [{ id: "alpha" , name: "Alpha" } as never, { id: "beta" , name: "Beta" } as never],
},
selectedAgentId: "beta" ,
activePanel: "overview" ,
config: {
form: null ,
loading: false ,
saving: false ,
dirty: false ,
},
channels: {
snapshot: null ,
loading: false ,
error: null ,
lastSuccess: null ,
},
cron: {
status: null ,
jobs: [],
loading: false ,
error: null ,
},
agentFiles: {
list: null ,
loading: false ,
error: null ,
active: null ,
contents: {},
drafts: {},
saving: false ,
},
agentIdentityLoading: false ,
agentIdentityError: null ,
agentIdentityById: {},
agentSkills: {
report: null ,
loading: false ,
error: null ,
agentId: null ,
filter: "" ,
},
toolsCatalog: {
loading: false ,
error: null ,
result: null ,
},
toolsEffective: {
loading: false ,
error: null ,
result: null ,
},
runtimeSessionKey: "main" ,
runtimeSessionMatchesSelectedAgent: false ,
modelCatalog: [],
onRefresh: () => undefined,
onSelectAgent: () => undefined,
onSelectPanel: () => undefined,
onLoadFiles: () => undefined,
onSelectFile: () => undefined,
onFileDraftChange: () => undefined,
onFileReset: () => undefined,
onFileSave: () => undefined,
onToolsProfileChange: () => undefined,
onToolsOverridesChange: () => undefined,
onConfigReload: () => undefined,
onConfigSave: () => undefined,
onModelChange: () => undefined,
onModelFallbacksChange: () => undefined,
onChannelsRefresh: () => undefined,
onCronRefresh: () => undefined,
onCronRunNow: () => undefined,
onSkillsFilterChange: () => undefined,
onSkillsRefresh: () => undefined,
onAgentSkillToggle: () => undefined,
onAgentSkillsClear: () => undefined,
onAgentSkillsDisableAll: () => undefined,
onSetDefault: () => undefined,
...overrides,
};
}
describe("renderAgents" , () => {
it("shows the skills count only for the selected agent's report" , async () => {
const container = document.createElement("div" );
render(
renderAgents(
createProps({
agentSkills: {
report: {
workspaceDir: "/tmp/workspace" ,
managedSkillsDir: "/tmp/skills" ,
skills: [createSkill()],
},
loading: false ,
error: null ,
agentId: "alpha" ,
filter: "" ,
},
}),
),
container,
);
await Promise.resolve();
let skillsTab = Array.from(container.querySelectorAll<HTMLButtonElement>(".agent-tab" )).find(
(button) => button.textContent?.includes("Skills" ),
);
expect(skillsTab?.textContent?.trim()).toBe("Skills" );
render(
renderAgents(
createProps({
agentSkills: {
report: {
workspaceDir: "/tmp/workspace" ,
managedSkillsDir: "/tmp/skills" ,
skills: [createSkill()],
},
loading: false ,
error: null ,
agentId: "beta" ,
filter: "" ,
},
}),
),
container,
);
await Promise.resolve();
skillsTab = Array.from(container.querySelectorAll<HTMLButtonElement>(".agent-tab" )).find(
(button) => button.textContent?.includes("Skills" ),
);
expect(skillsTab?.textContent?.trim()).toContain("1" );
});
});
Messung V0.5 in Prozent C=99 H=99 G=98
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland