ultimate-mcp-server
Version:
The definitive all-in-one Model Context Protocol server for AI-assisted coding across 30+ platforms
120 lines • 3.18 kB
TypeScript
/**
* Browser Automation Manager
*
* Provides unified interface for both Playwright and Puppeteer
* with automatic fallback and optimal selection
*/
export type BrowserEngine = 'playwright' | 'puppeteer';
export type BrowserType = 'chromium' | 'firefox' | 'webkit';
interface BrowserOptions {
engine?: BrowserEngine;
browserType?: BrowserType;
headless?: boolean;
viewport?: {
width: number;
height: number;
};
userAgent?: string;
timeout?: number;
}
interface UnifiedPage {
goto(url: string): Promise<void>;
screenshot(options?: ScreenshotOptions): Promise<Buffer>;
evaluate<T>(fn: (...args: any[]) => T, ...args: any[]): Promise<T>;
click(selector: string): Promise<void>;
type(selector: string, text: string): Promise<void>;
waitForSelector(selector: string, options?: {
timeout?: number;
}): Promise<void>;
close(): Promise<void>;
content(): Promise<string>;
title(): Promise<string>;
url(): string;
setViewport?(viewport: {
width: number;
height: number;
}): Promise<void>;
}
interface ScreenshotOptions {
fullPage?: boolean;
clip?: {
x: number;
y: number;
width: number;
height: number;
};
quality?: number;
type?: 'png' | 'jpeg';
}
export declare class BrowserManager {
private playwrightBrowser?;
private puppeteerBrowser?;
private currentEngine?;
private isInitialized;
/**
* Initialize browser with specified engine
*/
initialize(options?: BrowserOptions): Promise<void>;
/**
* Create a new page with unified interface
*/
newPage(): Promise<UnifiedPage>;
/**
* Take screenshot with automatic tiling for large pages
*/
captureScreenshot(url: string, options?: {
fullPage?: boolean;
tileSize?: number;
viewport?: {
width: number;
height: number;
};
}): Promise<Buffer[]>;
/**
* Execute automation script
*/
executeAutomation(script: {
url: string;
actions: Array<{
type: 'click' | 'type' | 'wait' | 'screenshot' | 'evaluate';
selector?: string;
text?: string;
duration?: number;
code?: string;
}>;
}): Promise<any[]>;
/**
* Extract structured data from page
*/
extractData(url: string, selectors: Record<string, string>): Promise<Record<string, any>>;
/**
* Close all browsers
*/
close(): Promise<void>;
/**
* Initialize Playwright
*/
private initializePlaywright;
/**
* Initialize Puppeteer
*/
private initializePuppeteer;
/**
* Select optimal engine based on availability and features
*/
private selectOptimalEngine;
/**
* Wrap Playwright page with unified interface
*/
private wrapPlaywrightPage;
/**
* Wrap Puppeteer page with unified interface
*/
private wrapPuppeteerPage;
/**
* Capture screenshot tiles for large pages
*/
private captureScreenshotTiles;
}
export {};
//# sourceMappingURL=browser-manager.d.ts.map