UNPKG

playwright-fixtures

Version:

Wrap your tests with Playwright-like test fixtures in node & browsers

16 lines (15 loc) 1.15 kB
declare type KeyValue = Record<string, unknown>; declare type FixtureFunction<R, Args extends KeyValue> = (args: Args, use: (r: R) => Promise<void>) => Promise<void> | void; declare type FixtureValue<R, Args extends KeyValue> = R extends Function ? FixtureFunction<R, Args> : (FixtureFunction<R, Args> | R); declare type Fixtures<T extends KeyValue, PT extends KeyValue = {}> = { [K in keyof PT]?: FixtureValue<PT[K], PT & T>; } & { [K in keyof T]: FixtureValue<T[K], PT & T>; }; export declare type BaseTest = (name: string, inner: (...args: unknown[]) => Promise<void> | void) => unknown; declare type TestCall<Args extends KeyValue, B extends BaseTest> = B extends (name: string, inner: (...args: infer BaseArgs) => infer InnerReturn) => infer Return ? (name: string, inner: (args: Args, ...baseArgs: BaseArgs) => InnerReturn) => Return : never; declare type Test<Args extends KeyValue, B extends BaseTest> = Pick<B, keyof B> & TestCall<Args, B> & { extend<T extends KeyValue = {}>(fixtures: Fixtures<T, Args>): Test<Args & T, B>; }; declare const wrap: <B extends BaseTest = BaseTest>(baseTest: B) => Test<{}, B>; export default wrap;