forked from Ivasoft/mattermost-mobile
* Detox/E2E: Add custom test sequencer * Fix lint * Added explicit dev dependency on sequencer
32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
const Sequencer = require('@jest/test-sequencer').default;
|
|
|
|
class CustomSequencer extends Sequencer {
|
|
/**
|
|
* Select tests for shard requested via --shard=shardIndex/shardCount
|
|
* Sharding is applied before sorting
|
|
*/
|
|
shard(tests, {shardIndex, shardCount}) {
|
|
const shardSize = Math.ceil(tests.length / shardCount);
|
|
const shardStart = shardSize * (shardIndex - 1);
|
|
const shardEnd = shardSize * shardIndex;
|
|
|
|
return [...tests].sort((a, b) => (a.path > b.path ? 1 : -1)).slice(shardStart, shardEnd);
|
|
}
|
|
|
|
/**
|
|
* Sort test to determine order of execution
|
|
* Sorting is applied after sharding
|
|
*/
|
|
sort(tests) {
|
|
// Test structure information
|
|
// https://github.com/facebook/jest/blob/6b8b1404a1d9254e7d5d90a8934087a9c9899dab/packages/jest-runner/src/types.ts#L17-L21
|
|
const copyTests = Array.from(tests);
|
|
return copyTests.sort((testA, testB) => (testA.path > testB.path ? 1 : -1));
|
|
}
|
|
}
|
|
|
|
module.exports = CustomSequencer;
|