///
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 };