Files
qiming/qimingclaw/crates/agent-gui-server/tests/agent/systemPrompt.test.ts

54 lines
1.9 KiB
TypeScript

/**
* Unit tests for agent/systemPrompt.ts — buildSystemPrompt.
*/
import { describe, it, expect } from 'vitest';
import { buildSystemPrompt } from '../../src/agent/systemPrompt.js';
describe('buildSystemPrompt', () => {
it('includes the task text', () => {
const prompt = buildSystemPrompt('Open Finder', '');
expect(prompt).toContain('Open Finder');
});
it('includes all 7 tool names', () => {
const prompt = buildSystemPrompt('test', '');
expect(prompt).toContain('computer_screenshot');
expect(prompt).toContain('computer_click');
expect(prompt).toContain('computer_type');
expect(prompt).toContain('computer_scroll');
expect(prompt).toContain('computer_hotkey');
expect(prompt).toContain('computer_wait');
expect(prompt).toContain('computer_done');
});
it('includes memory section when memory text is provided', () => {
const prompt = buildSystemPrompt('task', 'Step 1: clicked button\nStep 2: typed text');
expect(prompt).toContain('Previous Actions Memory');
expect(prompt).toContain('Step 1: clicked button');
expect(prompt).toContain('Step 2: typed text');
});
it('does not include memory section when memory text is empty', () => {
const prompt = buildSystemPrompt('task', '');
expect(prompt).not.toContain('Previous Actions Memory');
});
it('contains workflow guidance', () => {
const prompt = buildSystemPrompt('task', '');
expect(prompt).toContain('Workflow');
expect(prompt).toContain('screenshot');
});
it('contains guidelines about popups and errors', () => {
const prompt = buildSystemPrompt('task', '');
expect(prompt).toContain('dialog');
expect(prompt).toContain('popup');
});
it('includes CJK task text correctly', () => {
const prompt = buildSystemPrompt('打开访达并创建新文件夹', '');
expect(prompt).toContain('打开访达并创建新文件夹');
});
});