import { Emitter, Refiner, Test as BaseTest, Suite as BaseSuite, Group as BaseGroup, Runner as BaseRunner, TestContext as BaseTestContext } from '@japa/core'; import { BaseReporter } from './reporters/base.js'; import type { DataSetNode, TestHooksCleanupHandler } from './types.js'; declare module '@japa/core' { interface Test, TestData extends DataSetNode = undefined> { /** * Assert the test throws an exception with a certain error message * and optionally is an instance of a given Error class. */ throws(message: string | RegExp, errorConstructor?: any): this; } interface TestContext { /** * Register a cleanup function that runs after the test finishes * successfully or with an error. */ cleanup: (cleanupCallback: TestHooksCleanupHandler) => void; } } export { Emitter, Refiner, BaseReporter }; /** * Test context carries context data for a given test. */ export declare class TestContext extends BaseTestContext { test: Test; /** * Register a cleanup function that runs after the test finishes * successfully or with an error. */ cleanup: (cleanupCallback: TestHooksCleanupHandler) => void; constructor(test: Test); } /** * Test class represents an individual test and exposes API to tweak * its runtime behavior. */ export declare class Test extends BaseTest { /** * @inheritdoc */ static executedCallbacks: never[]; /** * @inheritdoc */ static executingCallbacks: never[]; /** * Assert the test throws an exception with a certain error message * and optionally is an instance of a given Error class. */ throws(message: string | RegExp, errorConstructor?: any): this; } /** * TestGroup is used to bulk configure a collection of tests and * define lifecycle hooks for them */ export declare class Group extends BaseGroup { } /** * A suite is a collection of tests created around a given * testing type. For example: A suite for unit tests, a * suite for functional tests and so on. */ export declare class Suite extends BaseSuite { } /** * Runner class is used to execute the tests */ export declare class Runner extends BaseRunner { }