52 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 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 { AggregatedResult } from '@jest/test-result';
							 | 
						||
| 
								 | 
							
								import { Context } from 'jest-runtime';
							 | 
						||
| 
								 | 
							
								import { Test } from 'jest-runner';
							 | 
						||
| 
								 | 
							
								declare type Cache = {
							 | 
						||
| 
								 | 
							
								    [key: string]: [0 | 1, number];
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The TestSequencer will ultimately decide which tests should run first.
							 | 
						||
| 
								 | 
							
								 * It is responsible for storing and reading from a local cache
							 | 
						||
| 
								 | 
							
								 * map that stores context information for a given test, such as how long it
							 | 
						||
| 
								 | 
							
								 * took to run during the last run and if it has failed or not.
							 | 
						||
| 
								 | 
							
								 * Such information is used on:
							 | 
						||
| 
								 | 
							
								 * TestSequencer.sort(tests: Array<Test>)
							 | 
						||
| 
								 | 
							
								 * to sort the order of the provided tests.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * After the results are collected,
							 | 
						||
| 
								 | 
							
								 * TestSequencer.cacheResults(tests: Array<Test>, results: AggregatedResult)
							 | 
						||
| 
								 | 
							
								 * is called to store/update this information on the cache map.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export default class TestSequencer {
							 | 
						||
| 
								 | 
							
								    private _cache;
							 | 
						||
| 
								 | 
							
								    _getCachePath(context: Context): string;
							 | 
						||
| 
								 | 
							
								    _getCache(test: Test): Cache;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Sorting tests is very important because it has a great impact on the
							 | 
						||
| 
								 | 
							
								     * user-perceived responsiveness and speed of the test run.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * If such information is on cache, tests are sorted based on:
							 | 
						||
| 
								 | 
							
								     * -> Has it failed during the last run ?
							 | 
						||
| 
								 | 
							
								     * Since it's important to provide the most expected feedback as quickly
							 | 
						||
| 
								 | 
							
								     * as possible.
							 | 
						||
| 
								 | 
							
								     * -> How long it took to run ?
							 | 
						||
| 
								 | 
							
								     * Because running long tests first is an effort to minimize worker idle
							 | 
						||
| 
								 | 
							
								     * time at the end of a long test run.
							 | 
						||
| 
								 | 
							
								     * And if that information is not available they are sorted based on file size
							 | 
						||
| 
								 | 
							
								     * since big test files usually take longer to complete.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Note that a possible improvement would be to analyse other information
							 | 
						||
| 
								 | 
							
								     * from the file other than its size.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    sort(tests: Array<Test>): Array<Test>;
							 | 
						||
| 
								 | 
							
								    cacheResults(tests: Array<Test>, results: AggregatedResult): void;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export {};
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=index.d.ts.map
							 |