/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import {Config} from '@jest/types'; import type {SerializableError} from '@jest/test-result'; import {Test} from '@jest/test-result'; import {TestEvents} from '@jest/test-result'; import type {TestResult} from '@jest/test-result'; import {TestWatcher} from 'jest-watcher'; declare abstract class BaseTestRunner { protected readonly _globalConfig: Config.GlobalConfig; protected readonly _context: TestRunnerContext; readonly isSerial?: boolean; abstract readonly supportsEventEmitters: boolean; constructor(_globalConfig: Config.GlobalConfig, _context: TestRunnerContext); } export declare abstract class CallbackTestRunner extends BaseTestRunner implements CallbackTestRunnerInterface { readonly supportsEventEmitters = false; abstract runTests( tests: Array, watcher: TestWatcher, onStart: OnTestStart, onResult: OnTestSuccess, onFailure: OnTestFailure, options: TestRunnerOptions, ): Promise; } export declare interface CallbackTestRunnerInterface { readonly isSerial?: boolean; readonly supportsEventEmitters?: boolean; runTests( tests: Array, watcher: TestWatcher, onStart: OnTestStart, onResult: OnTestSuccess, onFailure: OnTestFailure, options: TestRunnerOptions, ): Promise; } export {Config}; export declare abstract class EmittingTestRunner extends BaseTestRunner implements EmittingTestRunnerInterface { readonly supportsEventEmitters = true; abstract runTests( tests: Array, watcher: TestWatcher, options: TestRunnerOptions, ): Promise; abstract on( eventName: Name, listener: (eventData: TestEvents[Name]) => void | Promise, ): UnsubscribeFn; } export declare interface EmittingTestRunnerInterface { readonly isSerial?: boolean; readonly supportsEventEmitters: true; runTests( tests: Array, watcher: TestWatcher, options: TestRunnerOptions, ): Promise; on( eventName: Name, listener: (eventData: TestEvents[Name]) => void | Promise, ): UnsubscribeFn; } export declare type JestTestRunner = CallbackTestRunner | EmittingTestRunner; export declare type OnTestFailure = ( test: Test, serializableError: SerializableError, ) => Promise; export declare type OnTestStart = (test: Test) => Promise; export declare type OnTestSuccess = ( test: Test, testResult: TestResult, ) => Promise; export {Test}; export {TestEvents}; declare class TestRunner extends EmittingTestRunner { #private; runTests( tests: Array, watcher: TestWatcher, options: TestRunnerOptions, ): Promise; on( eventName: Name, listener: (eventData: TestEvents[Name]) => void | Promise, ): UnsubscribeFn; } export default TestRunner; export declare type TestRunnerContext = { changedFiles?: Set; sourcesRelatedToTestsInChangedFiles?: Set; }; export declare type TestRunnerOptions = { serial: boolean; }; export {TestWatcher}; export declare type UnsubscribeFn = () => void; export {};