test
Version:
Node.js 18's node:test, as an npm package
120 lines (101 loc) • 4.14 kB
TypeScript
interface TestOptions {
/**
* The number of tests that can be run at the same time. If unspecified, subtests inherit this value from their parent.
* Default: 1.
*/
concurrency?: boolean | number;
/**
* If truthy, the test is skipped. If a string is provided, that string is displayed in the test results as the reason for skipping the test.
* Default: false.
*/
skip?: boolean | string;
/**
* If truthy, the test marked as TODO. If a string is provided, that string is displayed in the test results as the reason why the test is TODO.
* Default: false.
*/
todo?: boolean | string;
/**
* A number of milliseconds the test will fail after. If unspecified, subtests inherit this value from their parent.
* Default: Infinity
*/
timeout?: number;
/**
* Allows aborting an in-progress test
*/
signal?: AbortSignal;
}
type TestFn = (t: TestContext) => any | Promise<any>;
export default test;
export function test(name: string, options: TestOptions, fn: TestFn): void;
export function test(name: string, fn: TestFn): void;
export function test(options: TestOptions, fn: TestFn): void;
export function test(fn: TestFn): void;
type SuiteFn = (t: SuiteContext) => void;
export function describe(name: string, options: TestOptions, fn: SuiteFn): void;
export function describe(name: string, fn: SuiteFn): void;
export function describe(options: TestOptions, fn: SuiteFn): void;
export function describe(fn: SuiteFn): void;
type ItFn = (t: ItContext) => any | Promise<any>;
export function it(name: string, options: TestOptions, fn: ItFn): void;
export function it(name: string, fn: ItFn): void;
export function it(options: TestOptions, fn: ItFn): void;
export function it(fn: ItFn): void;
/**
* An instance of TestContext is passed to each test function in order to interact with the test runner.
* However, the TestContext constructor is not exposed as part of the API.
*/
declare class TestContext {
/**
* This function is used to create subtests under the current test. This function behaves in the same fashion as the top level test() function.
*/
public test(name: string, options: TestOptions, fn: TestFn): Promise<void>;
public test(name: string, fn: TestFn): Promise<void>;
public test(fn: TestFn): Promise<void>;
/**
* This function is used to write TAP diagnostics to the output.
* Any diagnostic information is included at the end of the test's results. This function does not return a value.
*
* @param message Message to be displayed as a TAP diagnostic.
*/
public diagnostic(message: string): void;
/**
* This function causes the test's output to indicate the test as skipped.
* If message is provided, it is included in the TAP output.
* Calling skip() does not terminate execution of the test function. This function does not return a value.
*
* @param message Optional skip message to be displayed in TAP output.
*/
public skip(message?: string): void;
/**
* This function adds a TODO directive to the test's output.
* If message is provided, it is included in the TAP output.
* Calling todo() does not terminate execution of the test function. This function does not return a value.
*
* @param message Optional TODO message to be displayed in TAP output.
*/
public todo(message?: string): void;
/**
* Can be used to abort test subtasks when the test has been aborted.
*/
public signal: AbortSignal;
}
/**
* An instance of SuiteContext is passed to each suite function in order to interact with the test runner.
* However, the SuiteContext constructor is not exposed as part of the API.
*/
declare class SuiteContext {
/**
* Can be used to abort test subtasks when the test has been aborted.
*/
public signal: AbortSignal;
}
/**
* An instance of ItContext is passed to each suite function in order to interact with the test runner.
* However, the ItContext constructor is not exposed as part of the API.
*/
declare class ItContext {
/**
* Can be used to abort test subtasks when the test has been aborted.
*/
public signal: AbortSignal;
}