sunpeak inspect --server "python server.py"# With uv:sunpeak inspect --server "uv run python server.py"
sunpeak inspect --server "go run ./cmd/server"
sunpeak inspect --server "node server.js"
This opens the inspector at http://localhost:3000, where you can call your tools and see them rendered in simulated ChatGPT and Claude runtimes. Browse your tools, switch hosts and themes, and verify everything connects.
Once the inspector works, scaffold automated tests:
sunpeak test init --server http://localhost:8000/mcp
Or with a stdio command:
sunpeak test init --server "python server.py"
This creates test files for all four testing levels. For non-JS projects, everything goes into a self-contained tests/sunpeak/ directory with its own package.json.Install dependencies:
Non-JS project
JS/TS project
cd tests/sunpeaknpm installnpx playwright install chromium
Open the scaffolded smoke test (smoke.test.ts) and add a test for one of your tools. Replace your-tool with an actual tool name from your server:
import { test, expect } from 'sunpeak/test';test('server is reachable and inspector loads', async ({ mcp }) => { await expect(mcp.page.locator('#root')).not.toBeEmpty();});test('my tool returns a result', async ({ mcp }) => { const result = await mcp.callTool('your-tool', { key: 'value' }); expect(result).not.toBeError();});// If your tool renders a UI, you can interact with it:test('my tool renders a UI', async ({ mcp }) => { const result = await mcp.callTool('your-tool', { key: 'value' }); const app = result.app(); await expect(app.getByText('Expected text')).toBeVisible();});
The mcp fixture handles all the plumbing: starting the inspector, connecting to your server, navigating to the tool, and traversing the double-iframe sandbox. Each test runs automatically against both ChatGPT and Claude hosts.
Run sunpeak inspect --server <url> to browse your tools interactively and find the right tool names and arguments to use in tests.
The scaffolded files include templates for all four testing levels:
Level
File
Command
Cost
E2E
smoke.test.ts
sunpeak test
Free
Visual
visual.test.ts
sunpeak test --visual
Free
Live
live/example.test.ts
sunpeak test --live
Host credits
Evals
evals/example.eval.ts
sunpeak test --eval
API keys
Start with E2E tests (free, fast, local). Add visual regression when you want to catch CSS regressions. Add live tests and evals when you need production host validation and multi-model reliability testing.