arda-site-scan
Version:
A standalone CLI tool for comprehensive website analysis including screenshots, SEO, and accessibility testing using Playwright
72 lines • 2.5 kB
TypeScript
import { Browser, Page } from 'playwright';
import { TestResult, PageResult, TestConfig } from '../types/index.js';
export interface ParallelTask<T> {
id: string;
name: string;
execute: () => Promise<T>;
}
export interface PageTestTask {
url: string;
testType: string;
testName: string;
execute: (page: Page) => Promise<TestResult>;
}
export interface BatchResult<T> {
successful: {
id: string;
result: T;
}[];
failed: {
id: string;
error: string;
}[];
duration: number;
}
export declare class ParallelExecutor {
private browser;
private maxConcurrency;
constructor(browser: Browser, maxConcurrency?: number);
/**
* Execute multiple tasks in parallel with concurrency control using worker pool pattern
*/
executeTasks<T>(tasks: ParallelTask<T>[], options?: {
maxConcurrency?: number;
description?: string;
onProgress?: (completed: number, total: number) => void;
}): Promise<BatchResult<T>>;
/**
* Execute page-level tests in parallel across multiple pages using worker pool pattern
*/
executePageTests(urls: string[], pageTestTasks: PageTestTask[], options?: {
maxConcurrency?: number;
onPageProgress?: (completedPages: number, totalPages: number) => void;
onTestProgress?: (completedTests: number, totalTests: number) => void;
}): Promise<Map<string, PageResult>>;
/**
* Execute screenshot tests across multiple viewports in parallel
*/
executeScreenshotTests(page: Page, url: string, viewports: Array<{
name: string;
width: number;
height: number;
}>, sessionId: string, screenshotTester: any): Promise<TestResult[]>;
/**
* Create page test tasks for a specific URL and test configuration
*/
createPageTestTasks(url: string, config: TestConfig, sessionId: string, testers: {
screenshotTester?: any;
seoTester?: any;
accessibilityTester?: any;
contentScraper?: any;
}): PageTestTask[];
/**
* Utility methods
*/
private getPageName;
private generatePageSummary;
/**
* Parallel processing utility for large datasets using worker pool pattern
*/
processBatches<T, R>(items: T[], processor: (item: T) => Promise<R>, maxConcurrency?: number, onItemComplete?: (completedItems: number, totalItems: number) => void): Promise<R[]>;
}
//# sourceMappingURL=parallel-executor.d.ts.map