UNPKG

2.09 kBTypeScriptView Raw
1/**
2 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7import type { AggregatedResult, Test } from '@jest/test-result';
8import type { Context } from 'jest-runtime';
9declare type Cache = {
10 [key: string]: [0 | 1, number];
11};
12/**
13 * The TestSequencer will ultimately decide which tests should run first.
14 * It is responsible for storing and reading from a local cache
15 * map that stores context information for a given test, such as how long it
16 * took to run during the last run and if it has failed or not.
17 * Such information is used on:
18 * TestSequencer.sort(tests: Array<Test>)
19 * to sort the order of the provided tests.
20 *
21 * After the results are collected,
22 * TestSequencer.cacheResults(tests: Array<Test>, results: AggregatedResult)
23 * is called to store/update this information on the cache map.
24 */
25export default class TestSequencer {
26 private _cache;
27 _getCachePath(context: Context): string;
28 _getCache(test: Test): Cache;
29 /**
30 * Sorting tests is very important because it has a great impact on the
31 * user-perceived responsiveness and speed of the test run.
32 *
33 * If such information is on cache, tests are sorted based on:
34 * -> Has it failed during the last run ?
35 * Since it's important to provide the most expected feedback as quickly
36 * as possible.
37 * -> How long it took to run ?
38 * Because running long tests first is an effort to minimize worker idle
39 * time at the end of a long test run.
40 * And if that information is not available they are sorted based on file size
41 * since big test files usually take longer to complete.
42 *
43 * Note that a possible improvement would be to analyse other information
44 * from the file other than its size.
45 *
46 */
47 sort(tests: Array<Test>): Array<Test>;
48 allFailedTests(tests: Array<Test>): Array<Test>;
49 cacheResults(tests: Array<Test>, results: AggregatedResult): void;
50}
51export {};