Major refactor: Multi-user Chrome MCP extension with remote server architecture

This commit is contained in:
nasir@endelospay.com
2025-08-21 20:09:57 +05:00
parent d97cad1736
commit 5d869f6a7c
125 changed files with 16249 additions and 11906 deletions

View File

@@ -0,0 +1,162 @@
// Test script to verify background page navigation functionality
// This tests the new backgroundPage parameter for chrome_navigate and chrome_navigate_natural tools
console.log('🧪 Testing Background Page Navigation Functionality\n');
// Test configuration
const MCP_HTTP_URL = 'http://localhost:3001/mcp';
async function testBackgroundPageNavigation() {
try {
console.log('🚀 Starting background page navigation tests...\n');
// Initialize MCP connection
console.log('1⃣ Initializing MCP connection...');
const initResponse = await fetch(MCP_HTTP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 0,
method: 'initialize',
params: {
protocolVersion: '2024-11-05',
capabilities: {},
clientInfo: {
name: 'background-page-test',
version: '1.0.0',
},
},
}),
});
const initResult = await initResponse.json();
console.log('✅ Initialization response:', initResult.result ? 'Success' : 'Failed');
// Test 1: Regular navigation with backgroundPage=true
console.log('\n2⃣ Testing chrome_navigate with backgroundPage=true...');
const backgroundNavResponse = await fetch(MCP_HTTP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'chrome_navigate',
arguments: {
url: 'https://www.example.com',
backgroundPage: true,
},
},
}),
});
const backgroundNavResult = await backgroundNavResponse.json();
console.log('✅ Background navigation result:', JSON.stringify(backgroundNavResult, null, 2));
// Test 2: Natural language navigation with backgroundPage=true
console.log('\n3⃣ Testing chrome_navigate_natural with backgroundPage=true...');
const naturalBackgroundResponse = await fetch(MCP_HTTP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 2,
method: 'tools/call',
params: {
name: 'chrome_navigate_natural',
arguments: {
query: 'google',
backgroundPage: true,
},
},
}),
});
const naturalBackgroundResult = await naturalBackgroundResponse.json();
console.log('✅ Natural language background navigation result:', JSON.stringify(naturalBackgroundResult, null, 2));
// Test 3: Compare with regular navigation (backgroundPage=false)
console.log('\n4⃣ Testing chrome_navigate with backgroundPage=false for comparison...');
const regularNavResponse = await fetch(MCP_HTTP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 3,
method: 'tools/call',
params: {
name: 'chrome_navigate',
arguments: {
url: 'https://www.google.com',
backgroundPage: false,
},
},
}),
});
const regularNavResult = await regularNavResponse.json();
console.log('✅ Regular navigation result:', JSON.stringify(regularNavResult, null, 2));
// Test 4: Test with both newWindow and backgroundPage (backgroundPage should take precedence)
console.log('\n5⃣ Testing chrome_navigate with both newWindow=true and backgroundPage=true...');
const conflictTestResponse = await fetch(MCP_HTTP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 4,
method: 'tools/call',
params: {
name: 'chrome_navigate',
arguments: {
url: 'https://www.github.com',
newWindow: true,
backgroundPage: true,
},
},
}),
});
const conflictTestResult = await conflictTestResponse.json();
console.log('✅ Conflict test result:', JSON.stringify(conflictTestResult, null, 2));
console.log('\n✨ All background page navigation tests completed!');
// Summary
console.log('\n📊 Test Summary:');
console.log('✅ Background page navigation with chrome_navigate tested');
console.log('✅ Background page navigation with chrome_navigate_natural tested');
console.log('✅ Regular navigation comparison tested');
console.log('✅ Parameter conflict handling tested');
console.log('\n🎯 Expected Behavior:');
console.log('- backgroundPage=true should create a minimized window');
console.log('- backgroundPage=false should use normal tab/window behavior');
console.log('- backgroundPage should take precedence over newWindow when both are true');
console.log('- Natural language navigation should support backgroundPage parameter');
} catch (error) {
console.error('❌ Test failed:', error.message);
console.error('Stack trace:', error.stack);
}
}
// Run the tests
testBackgroundPageNavigation().catch(console.error);