/
types.ts
88 lines (77 loc) · 2.38 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import type {Typed as EmitteryTyped} from 'emittery';
import type {JestEnvironment} from '@jest/environment';
import type {
AssertionResult,
SerializableError,
TestResult,
} from '@jest/test-result';
import type {Config} from '@jest/types';
import type {FS as HasteFS, ModuleMap} from 'jest-haste-map';
import type Resolver from 'jest-resolve';
import type RuntimeType from 'jest-runtime';
export type ErrorWithCode = Error & {code?: string};
export type Test = {
context: Context;
duration?: number;
path: Config.Path;
};
export type Context = {
config: Config.ProjectConfig;
hasteFS: HasteFS;
moduleMap: ModuleMap;
resolver: Resolver;
};
export type OnTestStart = (test: Test) => Promise<void>;
export type OnTestFailure = (
test: Test,
serializableError: SerializableError,
) => Promise<void>;
export type OnTestSuccess = (
test: Test,
testResult: TestResult,
) => Promise<void>;
// Typings for `sendMessageToJest` events
export type TestEvents = {
'test-file-start': [Test];
'test-file-success': [Test, TestResult];
'test-file-failure': [Test, SerializableError];
'test-case-result': [Config.Path, AssertionResult];
};
export type TestFileEvent<T extends keyof TestEvents = keyof TestEvents> = (
eventName: T,
args: TestEvents[T],
) => unknown;
export type TestFramework = (
globalConfig: Config.GlobalConfig,
config: Config.ProjectConfig,
environment: JestEnvironment,
runtime: RuntimeType,
testPath: string,
sendMessageToJest?: TestFileEvent,
) => Promise<TestResult>;
export type TestRunnerOptions = {
serial: boolean;
};
// make sure all props here are present in the type below it as well
export type TestRunnerContext = {
changedFiles?: Set<Config.Path>;
sourcesRelatedToTestsInChangedFiles?: Set<Config.Path>;
};
export type TestRunnerSerializedContext = {
changedFiles?: Array<Config.Path>;
sourcesRelatedToTestsInChangedFiles?: Array<Config.Path>;
};
// TODO: Should live in `@jest/core` or `jest-watcher`
type WatcherState = {interrupted: boolean};
export interface TestWatcher extends EmitteryTyped<{change: WatcherState}> {
state: WatcherState;
setState(state: WatcherState): void;
isInterrupted(): boolean;
isWatchMode(): boolean;
}