UNPKG

folio

Version:

A customizable test framework to build your own test frameworks. Foundation for the [Playwright test runner](https://github.com/microsoft/playwright-test).

110 lines 6.19 kB
/** * Copyright (c) Microsoft Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { expect } from './expect'; import { FixturePool } from './fixtures'; import { TestModifier } from './testModifier'; export declare type SpecType = 'default' | 'skip' | 'only'; export declare type Implementation = { it: (spec: SpecType, folio: FolioImpl, ...args: any[]) => void; describe: (spec: SpecType, folio: FolioImpl, ...args: any[]) => void; beforeEach: (folio: FolioImpl, fn: Function) => void; afterEach: (folio: FolioImpl, fn: Function) => void; beforeAll: (folio: FolioImpl, fn: Function) => void; afterAll: (folio: FolioImpl, fn: Function) => void; }; export declare function setImplementation(i: Implementation): void; interface DescribeHelper<WorkerParameters> { describe(name: string, inner: () => void): void; describe(name: string, modifierFn: (modifier: TestModifier, parameters: WorkerParameters) => any, inner: () => void): void; } declare type DescribeFunction<WorkerParameters> = DescribeHelper<WorkerParameters>['describe']; interface ItHelper<WorkerParameters, WorkerFixtures, TestFixtures> { it(name: string, inner: (fixtures: WorkerParameters & WorkerFixtures & TestFixtures) => Promise<void> | void): void; it(name: string, modifierFn: (modifier: TestModifier, parameters: WorkerParameters) => any, inner: (fixtures: WorkerParameters & WorkerFixtures & TestFixtures) => Promise<void> | void): void; } declare type ItFunction<WorkerParameters, WorkerFixtures, TestFixtures> = ItHelper<WorkerParameters, WorkerFixtures, TestFixtures>['it']; declare type It<WorkerParameters, WorkerFixtures, TestFixtures> = ItFunction<WorkerParameters, WorkerFixtures, TestFixtures> & { only: ItFunction<WorkerParameters, WorkerFixtures, TestFixtures>; skip: ItFunction<WorkerParameters, WorkerFixtures, TestFixtures>; }; declare type Fit<WorkerParameters, WorkerFixtures, TestFixtures> = ItFunction<WorkerParameters, WorkerFixtures, TestFixtures>; declare type Xit<WorkerParameters, WorkerFixtures, TestFixtures> = ItFunction<WorkerParameters, WorkerFixtures, TestFixtures>; declare type Describe<WorkerParameters> = DescribeFunction<WorkerParameters> & { only: DescribeFunction<WorkerParameters>; skip: DescribeFunction<WorkerParameters>; }; declare type BeforeEach<WorkerParameters, WorkerFixtures, TestFixtures> = (inner: (fixtures: WorkerParameters & WorkerFixtures & TestFixtures) => Promise<void>) => void; declare type AfterEach<WorkerParameters, WorkerFixtures, TestFixtures> = (inner: (fixtures: WorkerParameters & WorkerFixtures & TestFixtures) => Promise<void>) => void; declare type BeforeAll<WorkerFixtures> = (inner: (fixtures: WorkerFixtures) => Promise<void>) => void; declare type AfterAll<WorkerFixtures> = (inner: (fixtures: WorkerFixtures) => Promise<void>) => void; export declare class FolioImpl<TestFixtures = {}, WorkerFixtures = {}, WorkerParameters = {}> { it: It<WorkerParameters, WorkerFixtures, TestFixtures>; fit: Fit<WorkerParameters, WorkerFixtures, TestFixtures>; xit: Xit<WorkerParameters, WorkerFixtures, TestFixtures>; test: It<WorkerParameters, WorkerFixtures, TestFixtures>; describe: Describe<WorkerParameters>; beforeEach: BeforeEach<WorkerParameters, WorkerFixtures, TestFixtures>; afterEach: AfterEach<WorkerParameters, WorkerFixtures, TestFixtures>; beforeAll: BeforeAll<WorkerFixtures>; afterAll: AfterAll<WorkerFixtures>; expect: typeof expect; _pool: FixturePool; constructor(pool: FixturePool); union<T, W, P>(other: Folio<T, W, P>): Folio<TestFixtures & T, WorkerFixtures & W, WorkerParameters & P>; extend<T = {}, W = {}, P = {}>(): Fixtures<TestFixtures, WorkerFixtures, WorkerParameters, T, W, P>; generateParametrizedTests<T extends keyof WorkerParameters>(name: T, values: WorkerParameters[T][]): void; } declare type TestFixtureOptions = { auto?: boolean; scope?: 'test'; }; declare type WorkerFixtureOptions = { auto?: boolean; scope: 'worker'; }; declare type WorkerParameterInitializer<R> = { initParameter(description: string, defaultValue: R): void; }; declare type WorkerFixtureInitializer<PW, R> = { init(fixture: (params: PW, runTest: (value: R) => Promise<void>) => Promise<void>, options: WorkerFixtureOptions): void; }; declare type WorkerFixtureOverrider<PW, R> = { override(fixture: (params: PW, runTest: (value: R) => Promise<void>) => Promise<void>): void; }; declare type TestFixtureInitializer<PWT, R> = { init(fixture: (params: PWT, runTest: (value: R) => Promise<void>) => Promise<void>, options?: TestFixtureOptions): void; }; declare type TestFixtureOverrider<PWT, R> = { override(fixture: (params: PWT, runTest: (value: R) => Promise<void>) => Promise<void>): void; }; declare type Fixtures<TestFixtures, WorkerFixtures, WorkerParameters, T, W, P> = { [X in keyof P]: WorkerParameterInitializer<P[X]>; } & { [X in keyof W]: WorkerFixtureInitializer<WorkerParameters & P & WorkerFixtures & W, W[X]>; } & { [X in keyof T]: TestFixtureInitializer<WorkerParameters & P & WorkerFixtures & W & TestFixtures & T, T[X]>; } & { [X in keyof WorkerFixtures]: WorkerFixtureOverrider<WorkerParameters & P & WorkerFixtures & W, WorkerFixtures[X]>; } & { [X in keyof TestFixtures]: TestFixtureOverrider<WorkerParameters & P & WorkerFixtures & W & TestFixtures & T, TestFixtures[X]>; } & { build(): Folio<TestFixtures & T, WorkerFixtures & W, WorkerParameters & P>; }; export interface Folio<T, W, P> extends FolioImpl<T, W, P> { } export declare const rootFixtures: Folio<{}, {}, {}>; export {}; //# sourceMappingURL=spec.d.ts.map