/// import { CPUStats } from "./utils/cpuUsage"; import { IAddon } from ".."; import { MemoryStats } from "./utils/memoryUage"; import { Browser, BrowserConnectOptions, BrowserLaunchArgumentOptions, LaunchOptions } from "puppeteer-core"; import { EventEmitter } from "events"; import Queue from "p-queue"; import { TestResult } from "./types"; declare interface Scraper { on(event: "browserReady", listener: (browser: Browser) => void): this; on(event: "browserDisconnected", listener: (browser: Browser) => void): this; on(event: "testsFinish", listener: (tests: TestResult) => void): this; on(event: "testsStart", listener: () => void): this; on(event: "testFinish", listener: (res: TestResult[keyof TestResult]) => void): this; on(event: "testStart", listener: (URL: string) => void): this; on(event: "addonFinish", listener: (addon: IAddon, result: any) => void): this; on(event: "info", listener: (message: string[]) => void): this; on(event: "warn", listener: (message: string[]) => void): this; on(event: "error", listener: (message: string[]) => void): this; on(event: "debug", listener: (message: string[]) => void): this; on(event: string, listener: (...args: any[]) => void): this; } declare class Scraper extends EventEmitter { browser: Browser | null; options: ScraperOptions; interval: number | null; queue: Queue; results: TestResult[]; running: boolean; stopped: number; constructor(options: ScraperOptions); private _emitLog; private bindListeners; start(): Promise; private initBrowser; private scrape; private testPage; private test; stop(): Promise; } interface ScraperOptions { /** * Array of URLs to test */ urls: string[]; /** * Custom options passer to the `puppeteer.launch()` function */ puppeteerOptions?: LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions; addons: IAddon[]; /** * The interval in ms to run the scraper. * @default 60000 */ interval?: number; /** * Force the browser recreation for each test */ forceRecreateBrowser?: boolean; /** * Maximum tests to be ran at the same time * WARNING: If `forceRecreateBrowser` is set to true, this will automatically be set to 1 * @default 1 */ concurrentTests?: number; /** * Maximum tests queue size, the program will exit when the queue exceeds this size * @default 10 */ queueThreshold?: number; } interface ScrapeResult { cpuMetrics: CPUStats; memoryMetrics: MemoryStats; duration: number; bytesIn: number; ttfb: number; } export { Scraper, ScraperOptions, ScrapeResult };