UNPKG

toofast

Version:

The Node.js performance testing tool with unit-test-like API.

128 lines (127 loc) 4.06 kB
import { HookCallback, MeasureOptions, TestOptions } from './index.js'; import { Histogram, HistogramStats } from './Histogram.js'; export type ParentNode = TestSuiteNode | DescribeNode; export type ChildNode = DescribeNode | TestNode | MeasureNode; export declare class Node { testOptions: TestOptions; parent: ParentNode | null; children: Array<ChildNode>; isSkipped: boolean; beforeEachHook: HookCallback | undefined; afterEachHook: HookCallback | undefined; beforeWarmupHook: HookCallback | undefined; afterWarmupHook: HookCallback | undefined; beforeBatchHook: HookCallback | undefined; afterBatchHook: HookCallback | undefined; beforeIterationHook: HookCallback | undefined; afterIterationHook: HookCallback | undefined; callback: () => PromiseLike<void> | void; constructor(callback: () => PromiseLike<void> | void, testOptions?: TestOptions); beforeEach(hook: HookCallback): void; afterEach(hook: HookCallback): void; beforeWarmup(hook: HookCallback): void; afterWarmup(hook: HookCallback): void; beforeBatch(hook: HookCallback): void; afterBatch(hook: HookCallback): void; beforeIteration(hook: HookCallback): void; afterIteration(hook: HookCallback): void; appendChild(child: ChildNode): this; getBlockChildren(): BlockChild[]; } export declare class TestSuiteNode extends Node { constructor(testOptions?: TestOptions); } export declare class DescribeNode extends Node { readonly name: string; constructor(name: string, callback: () => PromiseLike<void> | void, testOptions?: TestOptions); } export declare class TestNode extends Node { readonly name: string; constructor(name: string, callback: () => PromiseLike<void> | void, testOptions?: TestOptions); get absoluteName(): string; } export declare class MeasureNode extends Node { constructor(callback: () => void, measureOptions?: MeasureOptions); } export type BlockChild = { type: 'describe'; name: string; } | { type: 'test'; name: string; } | { type: 'measure'; }; export type RunnerMessage = { type: 'fatalError'; errorMessage: string; } | { type: 'testSuiteStart'; } | { type: 'testSuiteEnd'; } | { type: 'describeStart'; name: string; } | { type: 'describeEnd'; } | { type: 'testStart'; name: string; nodeLocation: number[]; } | { type: 'testEnd'; durationStats: HistogramStats; memoryStats: HistogramStats; } | { type: 'blockStart'; kind: 'testSuite' | 'describe' | 'test'; children: BlockChild[]; } | { type: 'blockEnd'; } | { type: 'error'; errorMessage: string; } | { type: 'measureWarmupStart'; } | { type: 'measureWarmupEnd'; } | { type: 'measureStart'; } | { type: 'measureEnd'; durationStats: HistogramStats; memoryStats: HistogramStats; } | { type: 'measureError'; errorMessage: string; } | { type: 'measureProgress'; percentage: number; }; export interface BootstrapRunnerOptions { setupFiles: string[]; testFile: string; evalFile(file: string): Promise<void> | void; sendMessage(message: RunnerMessage): void; } export declare function bootstrapRunner(options: BootstrapRunnerOptions): Promise<boolean>; export interface MeasureResult { durationHistogram: Histogram; memoryHistogram: Histogram; } export interface RunTestOptions { startNode: Node; nodeLocation: number[]; isSkipped(testNode: TestNode): boolean; setCurrentNode(node: Node): void; runMeasure(node: MeasureNode): Promise<MeasureResult | null>; sendMessage(message: RunnerMessage): void; } export declare function runTest(options: RunTestOptions): Promise<void>; export interface RunMeasureOptions { sendMessage(message: RunnerMessage): void; getMemoryUsed(): number; } export declare function createRunMeasure(options: RunMeasureOptions): (node: MeasureNode) => Promise<MeasureResult | null>; export declare function getCurrentNode(): Node; export declare function setCurrentNode(node: Node): void;