27 lines
1.6 KiB
JavaScript
27 lines
1.6 KiB
JavaScript
// Test the public local REA MCP entry point without inspecting WorkBuddy.
|
|
import assert from 'node:assert/strict'
|
|
import path from 'node:path'
|
|
import { createRequire } from 'node:module'
|
|
import { pathToFileURL } from 'node:url'
|
|
|
|
const runtime = path.resolve('.tmp/rea-css-runtime')
|
|
const require = createRequire(path.join(runtime, 'package.json'))
|
|
const { Client } = await import(pathToFileURL(require.resolve('@modelcontextprotocol/client')).href)
|
|
const { StdioClientTransport } = await import(pathToFileURL(require.resolve('@modelcontextprotocol/client/stdio')).href)
|
|
const transport = new StdioClientTransport({ command: process.execPath, args: [path.join(runtime, 'scripts/rea.mjs'), 'mcp'], cwd: process.cwd(), stderr: 'pipe' })
|
|
const client = new Client({ name: 'ycode-local-rea-css-regression', version: '1' })
|
|
try {
|
|
await client.connect(transport)
|
|
assert.equal(client.getServerVersion()?.version, '6.5.0-visual.3')
|
|
const listing = await client.listTools()
|
|
const tool = listing.tools.find(tool => tool.name === 'inspect_electron_page')
|
|
assert.ok(tool, 'Electron inspection tool is advertised')
|
|
assert.ok(JSON.stringify(tool.inputSchema).includes('include_style_sources'), 'MCP input retains CSS option')
|
|
assert.ok(JSON.stringify(tool.inputSchema).includes('include_visuals'), 'MCP input retains viewport option')
|
|
assert.ok(JSON.stringify(tool.inputSchema).includes('visual_probe'), 'MCP input retains native visual probe option')
|
|
console.log('REA CSS public MCP passed: local version, tool listing, CSS input option')
|
|
} finally {
|
|
await client.close()
|
|
await transport.close()
|
|
}
|