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,141 @@
/**
* Test script to verify the background URL opening functionality
* This script tests the new browser setting for opening URLs in background pages
*/
const MCP_HTTP_URL = 'http://localhost:3001/mcp';
async function testBackgroundUrlSetting() {
console.log('🧪 Testing Background URL Opening Setting...\n');
try {
// Test 1: 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-url-test',
version: '1.0.0',
},
},
}),
});
const initResult = await initResponse.json();
console.log('✅ Initialization response:', initResult.result ? 'Success' : 'Failed');
// Test 2: Navigate without explicit backgroundPage parameter (should use setting)
console.log('\n2⃣ Testing navigation without explicit backgroundPage parameter...');
console.log(" This should use the user's browser setting preference");
const defaultNavResponse = 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',
// No backgroundPage parameter - should use user setting
},
},
}),
});
const defaultNavResult = await defaultNavResponse.json();
console.log('✅ Default navigation result:', JSON.stringify(defaultNavResult, null, 2));
// Test 3: Navigate with explicit backgroundPage=true (should override setting)
console.log('\n3⃣ Testing navigation with explicit backgroundPage=true...');
console.log(' This should override the user setting and open in background');
const explicitBackgroundResponse = 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',
arguments: {
url: 'https://www.google.com',
backgroundPage: true, // Explicit override
},
},
}),
});
const explicitBackgroundResult = await explicitBackgroundResponse.json();
console.log(
'✅ Explicit background navigation result:',
JSON.stringify(explicitBackgroundResult, null, 2),
);
// Test 4: Navigate with explicit backgroundPage=false (should override setting)
console.log('\n4⃣ Testing navigation with explicit backgroundPage=false...');
console.log(' This should override the user setting and open in foreground');
const explicitForegroundResponse = 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.github.com',
backgroundPage: false, // Explicit override
},
},
}),
});
const explicitForegroundResult = await explicitForegroundResponse.json();
console.log(
'✅ Explicit foreground navigation result:',
JSON.stringify(explicitForegroundResult, null, 2),
);
console.log('\n🎉 All tests completed!');
console.log('\n📋 Test Summary:');
console.log(' • Default navigation uses browser setting preference');
console.log(' • Explicit backgroundPage=true overrides setting');
console.log(' • Explicit backgroundPage=false overrides setting');
console.log('\n💡 To test the setting:');
console.log(' 1. Open the Chrome extension popup');
console.log(' 2. Go to Browser Settings section');
console.log(' 3. Toggle "Open URLs in background pages by default"');
console.log(' 4. Run this test script again to see the difference');
} catch (error) {
console.error('❌ Test failed:', error);
}
}
// Run the test
testBackgroundUrlSetting();