@casoon/auditmysite
Version:
Professional website analysis suite with robust accessibility testing, Core Web Vitals performance monitoring, SEO analysis, and content optimization insights. Features isolated browser contexts, retry mechanisms, and comprehensive API endpoints for profe
102 lines • 2.49 kB
TypeScript
/**
* Browser Pool Manager for optimized resource usage and performance
*/
import { Browser, BrowserContext } from 'playwright';
export interface BrowserPoolOptions {
maxConcurrent: number;
maxIdleTime: number;
browserType: 'chromium' | 'firefox' | 'webkit';
launchOptions?: any;
enableResourceOptimization: boolean;
}
export interface PooledBrowser {
browser: Browser;
context: BrowserContext;
lastUsed: number;
inUse: boolean;
id: string;
}
export declare class BrowserPoolManager {
private pool;
private queue;
private options;
private cleanupInterval;
private metrics;
constructor(options?: Partial<BrowserPoolOptions>);
/**
* Get a browser instance from the pool
*/
acquire(): Promise<{
browser: Browser;
context: BrowserContext;
release: () => Promise<void>;
}>;
/**
* Find an available browser in the pool
*/
private findAvailableBrowser;
/**
* Wait for an available browser
*/
private waitForAvailableBrowser;
/**
* Create a new browser instance
*/
private createBrowser;
/**
* Start cleanup interval to remove idle browsers
*/
private startCleanup;
/**
* Clean up idle browsers
*/
private cleanup;
/**
* Destroy a specific browser
*/
private destroyBrowser;
/**
* Get pool metrics
*/
getMetrics(): {
poolSize: number;
queueLength: number;
efficiency: number;
created: number;
reused: number;
destroyed: number;
errors: number;
activeConnections: number;
totalRequests: number;
};
/**
* Warm up the pool by creating initial browsers
*/
warmUp(count?: number): Promise<void>;
/**
* Gracefully shutdown all browsers
*/
shutdown(): Promise<void>;
/**
* Get pool status
*/
getStatus(): {
totalBrowsers: number;
activeBrowsers: number;
idleBrowsers: number;
queueLength: number;
metrics: {
poolSize: number;
queueLength: number;
efficiency: number;
created: number;
reused: number;
destroyed: number;
errors: number;
activeConnections: number;
totalRequests: number;
};
};
}
export default BrowserPoolManager;
//# sourceMappingURL=browser-pool-manager.d.ts.map