166 lines
4.5 KiB
TypeScript
166 lines
4.5 KiB
TypeScript
/**
|
|
* Simple Browser and Network Monitoring Test
|
|
*/
|
|
import { Browser } from '@stock-bot/browser';
|
|
|
|
async function testBasicBrowser() {
|
|
console.log('🚀 Testing basic browser functionality...');
|
|
|
|
try {
|
|
// Initialize browser
|
|
await Browser.initialize({
|
|
headless: true,
|
|
timeout: 15000,
|
|
blockResources: false,
|
|
enableNetworkLogging: true,
|
|
});
|
|
|
|
console.log('✅ Browser initialized');
|
|
|
|
// Test 1: Simple page without proxy
|
|
console.log('📄 Testing simple page without proxy...');
|
|
const { page, contextId } = await Browser.createPageWithProxy(
|
|
'https://httpbin.org/json'
|
|
);
|
|
|
|
let capturedData = null;
|
|
let eventCount = 0;
|
|
|
|
page.onNetworkEvent(event => {
|
|
eventCount++;
|
|
console.log(`📡 Event ${eventCount}: ${event.type} - ${event.method} ${event.url}`);
|
|
|
|
if (event.type === 'response' && event.url.includes('httpbin.org/json')) {
|
|
console.log(` 📊 Status: ${event.status}`);
|
|
if (event.responseData) {
|
|
capturedData = event.responseData;
|
|
console.log(` 📝 Response: ${event.responseData}`);
|
|
}
|
|
}
|
|
});
|
|
|
|
await page.waitForLoadState('domcontentloaded');
|
|
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
|
|
console.log(`✅ Test completed. Events captured: ${eventCount}`);
|
|
if (capturedData) {
|
|
console.log('✅ Successfully captured response data');
|
|
}
|
|
|
|
await Browser.closeContext(contextId);
|
|
return true;
|
|
|
|
} catch (error) {
|
|
console.error('❌ Basic test failed:', error);
|
|
return false;
|
|
} finally {
|
|
await Browser.close();
|
|
}
|
|
}
|
|
|
|
async function testProxyConnection() {
|
|
console.log('\n🔄 Testing proxy connection...');
|
|
|
|
try {
|
|
await Browser.initialize({
|
|
headless: true,
|
|
timeout: 10000,
|
|
blockResources: false,
|
|
});
|
|
|
|
// Test different proxy formats
|
|
const proxyConfigs = [
|
|
null, // No proxy
|
|
'http://doimvbnb-US-rotate:w5fpiwrb9895@p.webshare.io:80',
|
|
];
|
|
|
|
for (const proxy of proxyConfigs) {
|
|
console.log(`\n🌐 Testing with proxy: ${proxy || 'No proxy'}`);
|
|
|
|
try {
|
|
const { page, contextId } = await Browser.createPageWithProxy(
|
|
'https://httpbin.org/ip',
|
|
proxy
|
|
);
|
|
|
|
page.onNetworkEvent(event => {
|
|
if (event.type === 'response' && event.url.includes('httpbin.org/ip')) {
|
|
console.log(` 📍 IP Response: ${event.responseData}`);
|
|
}
|
|
});
|
|
|
|
await page.waitForLoadState('domcontentloaded');
|
|
await new Promise(resolve => setTimeout(resolve, 1500));
|
|
await Browser.closeContext(contextId);
|
|
console.log(' ✅ Success');
|
|
|
|
} catch (error) {
|
|
console.log(` ❌ Failed: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Proxy test setup failed:', error);
|
|
} finally {
|
|
await Browser.close();
|
|
}
|
|
}
|
|
|
|
async function testIBWithWorkaround() {
|
|
console.log('\n🏦 Testing IB endpoint with workaround...');
|
|
|
|
try {
|
|
await Browser.initialize({
|
|
headless: true,
|
|
timeout: 20000,
|
|
blockResources: true, // Block resources for performance
|
|
});
|
|
|
|
// Try without proxy first
|
|
console.log('🌐 Attempting IB without proxy...');
|
|
try {
|
|
const { page, contextId } = await Browser.createPageWithProxy(
|
|
'https://www.interactivebrokers.com'
|
|
);
|
|
|
|
let responseCount = 0;
|
|
page.onNetworkEvent(event => {
|
|
if (event.type === 'response') {
|
|
responseCount++;
|
|
console.log(` 📥 Response ${responseCount}: ${event.status} ${event.url}`);
|
|
}
|
|
});
|
|
|
|
await page.waitForLoadState('domcontentloaded');
|
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
console.log(`✅ IB main page loaded. Responses: ${responseCount}`);
|
|
await Browser.closeContext(contextId);
|
|
|
|
} catch (error) {
|
|
console.log(`❌ IB without proxy failed: ${error.message}`);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ IB test failed:', error);
|
|
} finally {
|
|
await Browser.close();
|
|
}
|
|
}
|
|
|
|
// Run tests
|
|
async function runAllTests() {
|
|
console.log('🧪 Starting Browser Network Monitoring Tests\n');
|
|
|
|
const basicResult = await testBasicBrowser();
|
|
await testProxyConnection();
|
|
await testIBWithWorkaround();
|
|
|
|
console.log(`\n🏁 Basic functionality: ${basicResult ? '✅ PASS' : '❌ FAIL'}`);
|
|
console.log('✅ All tests completed!');
|
|
}
|
|
|
|
if (import.meta.main) {
|
|
runAllTests().catch(console.error);
|
|
}
|
|
|
|
export { testBasicBrowser, testProxyConnection, testIBWithWorkaround };
|