@typed/test
Version:
Testing made simple.
60 lines (59 loc) • 1.8 kB
TypeScript
export declare const TYPED_TEST: unique symbol;
export interface Test {
readonly [TYPED_TEST]: TestConfig;
readonly runTest: (spec: TestSpec) => Promise<TestResult>;
}
export interface TestConfig {
readonly name: string;
readonly timeout?: number;
readonly modifier?: 'only' | 'skip';
}
export interface TestSpec {
readonly timeout: number;
readonly skip: boolean;
}
export declare type TestResult = PassedTestResult | SkippedTestResult | FailedTestResult | GroupResult;
export declare type PassedTestResult = {
readonly type: 'pass';
readonly name: string;
};
export declare type SkippedTestResult = {
readonly type: 'skip';
readonly name: string;
};
export declare type FailedTestResult = {
readonly type: 'fail';
readonly error: Error;
readonly name: string;
};
export declare type GroupResult = {
readonly type: 'group';
readonly name: string;
readonly results: TestResult[];
};
export interface TestMetadata extends NodeMetadata {
readonly exportNames: string[];
readonly filePath: string;
readonly additionalTests: NodeMetadata[];
}
export interface NodeMetadata {
readonly line: number;
readonly lines: number;
readonly position: [number, number];
readonly text: string;
readonly additionalTests: NodeMetadata[];
}
export declare type TestsWithMetadata = TestMetadata & {
readonly tests: Test[];
};
export declare type TestsWithResults = TestsWithMetadata & {
readonly results: TestResult[];
};
export declare type JsonResults = {
[K in Exclude<keyof TestsWithResults, 'tests'>]: TestsWithResults[K];
};
export interface Logger {
readonly log: (msg: string) => Promise<void>;
readonly error: (msg: string) => Promise<void>;
readonly clear: (msg: string) => Promise<void>;
}