fava
Version:
A wannabe tiny largely-drop-in replacement for ava that works in the browser too.
49 lines (48 loc) • 2.36 kB
TypeScript
type FN<Arguments extends any[] = any[], Return = any> = (...args: Arguments) => Return;
type Promisable<T> = Promise<T> | T;
type DescribeFN = typeof import('./describe').default;
type TestFN = typeof import('./test').default;
type Tester<Context extends {}> = import('./tester').default<Context>;
type AssertErrorExpectation = {
instanceOf?: () => any;
is?: unknown;
code?: string | number;
message?: RegExp | string;
name?: string;
};
type Callback = () => void;
type Color = 'red' | 'green' | 'yellow';
type DescribeImplementation = (test: TestFN) => void;
type Exception = Error & {
code: string | number;
};
type ErrorLine = {
url: string;
nr: number;
content: string;
};
type Options = {
failFast?: boolean;
match?: string[];
timeout?: number | string;
verbose?: boolean;
watch?: boolean;
};
type SuiteImplementation = (describe: DescribeFN) => void;
type Teardown = () => Promisable<void>;
type TestAPI<Context extends {} = {}> = Pick<Tester<Context>, 'title' | 'passed' | 'ctx' | 'log' | 'plan' | 'teardown' | 'timeout' | 'pass' | 'fail' | 'assert' | 'truthy' | 'falsy' | 'true' | 'false' | 'is' | 'not' | 'deepEqual' | 'notDeepEqual' | 'like' | 'notLike' | 'throws' | 'throwsAsync' | 'notThrows' | 'notThrowsAsync' | 'regex' | 'notRegex' | 'wait'> & {
context: TestContext<Context>;
};
type TestContext<Context extends {}> = Partial<Context> | {};
type TestFlag = 'failing' | 'only' | 'serial' | 'skip' | 'todo';
type TestFlags = Record<TestFlag, boolean>;
type TestHook = 'before' | 'after' | 'beforeEach' | 'afterEach';
type TestHooks<Context extends {}> = Record<TestHook, TestHookImplementation<Context>>;
type TestHookImplementation<Context extends {}> = TestImplementation<Context>;
type TestImplementation<Context extends {}> = (t: TestAPI<Context>) => Promisable<void>;
type TestLog = any;
type TestPassed = -1 | 0 | 1;
type TestStat = 'failed' | 'passed' | 'planned' | 'total';
type TestStats = Record<TestStat, number>;
type TestStatus = '✔' | '✖' | '!';
export type { FN, Promisable, AssertErrorExpectation, Callback, Color, DescribeImplementation, Exception, ErrorLine, Options, SuiteImplementation, Teardown, TestAPI, TestContext, TestFlag, TestFlags, TestHook, TestHooks, TestHookImplementation, TestImplementation, TestLog, TestPassed, TestStat, TestStats, TestStatus };