chore: test --vision (#54)

This commit is contained in:
Simon Knott 2025-03-27 17:13:06 +01:00 committed by GitHub
parent d4bc2c78d2
commit fb24561c67
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 62 additions and 4 deletions

View File

@ -16,7 +16,7 @@
import { test, expect } from './fixtures';
test('test tool list', async ({ server }) => {
test('test tool list', async ({ server, visionServer }) => {
const list = await server.send({
jsonrpc: '2.0',
id: 1,
@ -69,6 +69,56 @@ test('test tool list', async ({ server }) => {
],
}),
}));
const visionList = await visionServer.send({
jsonrpc: '2.0',
id: 1,
method: 'tools/list',
});
expect(visionList).toEqual(expect.objectContaining({
id: 1,
result: expect.objectContaining({
tools: expect.arrayContaining([
expect.objectContaining({
name: 'browser_navigate',
}),
expect.objectContaining({
name: 'browser_go_back',
}),
expect.objectContaining({
name: 'browser_go_forward',
}),
expect.objectContaining({
name: 'browser_screenshot',
}),
expect.objectContaining({
name: 'browser_move_mouse',
}),
expect.objectContaining({
name: 'browser_click',
}),
expect.objectContaining({
name: 'browser_drag',
}),
expect.objectContaining({
name: 'browser_type',
}),
expect.objectContaining({
name: 'browser_press_key',
}),
expect.objectContaining({
name: 'browser_wait',
}),
expect.objectContaining({
name: 'browser_save_as_pdf',
}),
expect.objectContaining({
name: 'browser_close',
}),
]),
}),
}));
});
test('test resources list', async ({ server }) => {

View File

@ -69,7 +69,7 @@ class MCPServer extends EventEmitter {
});
}
async send(message: any, options?: { timeout?: number }): Promise<void> {
async send(message: any, options?: { timeout?: number }): Promise<any> {
await this.sendNoReply(message);
return this._waitForResponse(options || {});
}
@ -112,7 +112,8 @@ class MCPServer extends EventEmitter {
type Fixtures = {
server: MCPServer;
startServer: (options?: { env?: NodeJS.ProcessEnv }) => Promise<MCPServer>;
visionServer: MCPServer;
startServer: (options?: { env?: NodeJS.ProcessEnv, vision?: boolean }) => Promise<MCPServer>;
wsEndpoint: string;
};
@ -121,12 +122,19 @@ export const test = baseTest.extend<Fixtures>({
await use(await startServer());
},
visionServer: async ({ startServer }, use) => {
await use(await startServer({ vision: true }));
},
startServer: async ({ }, use, testInfo) => {
let server: MCPServer | undefined;
const userDataDir = testInfo.outputPath('user-data-dir');
use(async options => {
server = new MCPServer('node', [path.join(__dirname, '../cli.js'), '--headless', '--user-data-dir', userDataDir], options);
const args = ['--headless', '--user-data-dir', userDataDir];
if (options?.vision)
args.push('--vision');
server = new MCPServer('node', [path.join(__dirname, '../cli.js'), ...args], options);
const initialize = await server.send({
jsonrpc: '2.0',
id: 0,