refactor of data-service
This commit is contained in:
parent
6fb98c69f2
commit
09c97df1a8
49 changed files with 2394 additions and 112 deletions
166
test-browser-simple.ts
Normal file
166
test-browser-simple.ts
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
/**
|
||||
* 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 };
|
||||
Loading…
Add table
Add a link
Reference in a new issue