Chrome Debug MCP Server

  • test
// Test script for Chrome Debug MCP commands const path = require('path'); const assert = require('assert').strict; async function runTests() { try { // 1. Launch Chrome and navigate to test page console.log('Launching Chrome...'); const result = await useMcpTool('chrome-debug', 'launch_chrome', { url: `file://${path.resolve(__dirname, 'test.html')}`, disableAutomationControlled: true }); console.log('Chrome launched:', result); // 2. Test viewport setting console.log('\nTesting viewport...'); await useMcpTool('chrome-debug', 'set_viewport', { width: 1024, height: 768 }); console.log('Viewport set'); // 3. Test clicking console.log('\nTesting click...'); await useMcpTool('chrome-debug', 'click', { selector: '#test-button' }); const clickResult = await useMcpTool('chrome-debug', 'get_text', { selector: '#click-result' }); assert.equal(clickResult.content[0].text, 'Button clicked!'); console.log('Click test passed'); // 4. Test typing console.log('\nTesting type...'); await useMcpTool('chrome-debug', 'type', { selector: '#test-input', text: 'Hello World', delay: 100 }); const typeResult = await useMcpTool('chrome-debug', 'get_text', { selector: '#type-result' }); assert.equal(typeResult.content[0].text, 'Typed: Hello World'); console.log('Type test passed'); // 5. Test select console.log('\nTesting select...'); await useMcpTool('chrome-debug', 'select', { selector: '#test-select', value: '2' }); const selectResult = await useMcpTool('chrome-debug', 'get_text', { selector: '#select-result' }); assert.equal(selectResult.content[0].text, 'Selected: Option 2'); console.log('Select test passed'); // 6. Test hover console.log('\nTesting hover...'); await useMcpTool('chrome-debug', 'hover', { selector: '#hover-test' }); const hoverResult = await useMcpTool('chrome-debug', 'get_text', { selector: '#hover-result' }); assert.equal(hoverResult.content[0].text, 'Hovered!'); console.log('Hover test passed'); // 7. Test wait for selector console.log('\nTesting wait for selector...'); await useMcpTool('chrome-debug', 'click', { selector: '#show-delayed' }); await useMcpTool('chrome-debug', 'wait_for_selector', { selector: '#delayed-element', visible: true, timeout: 3000 }); console.log('Wait for selector test passed'); // 8. Test get attribute console.log('\nTesting get attribute...'); const attrResult = await useMcpTool('chrome-debug', 'get_attribute', { selector: '#attribute-test', attribute: 'data-test' }); assert.equal(attrResult.content[0].text, 'test-value'); console.log('Get attribute test passed'); // 9. Test screenshot console.log('\nTesting screenshot...'); await useMcpTool('chrome-debug', 'screenshot', { path: path.resolve(__dirname, 'test-screenshot.png'), fullPage: true }); console.log('Screenshot saved'); // 10. Test navigation console.log('\nTesting navigation...'); await useMcpTool('chrome-debug', 'navigate', { url: 'about:blank', waitUntil: 'networkidle0' }); console.log('Navigation test passed'); // 11. Test evaluate console.log('\nTesting evaluate...'); const evalResult = await useMcpTool('chrome-debug', 'evaluate', { expression: 'document.title' }); assert.equal(evalResult.content[0].text, 'about:blank'); console.log('Evaluate test passed'); console.log('\nAll tests passed! 🎉'); } catch (error) { console.error('Test failed:', error); process.exit(1); } } // Helper function to simulate MCP tool usage async function useMcpTool(serverName, toolName, args) { // This would be replaced by actual MCP tool invocation in real usage console.log(`Using tool ${toolName} with args:`, args); // Simulated response for testing return { content: [{ type: 'text', text: 'Test response' }] }; } runTests().catch(console.error);