Detox/E2E: Add custom test sequencer (#6611)
* Detox/E2E: Add custom test sequencer * Fix lint * Added explicit dev dependency on sequencer
This commit is contained in:
parent
e0828d6a74
commit
fab4c1a216
4 changed files with 34 additions and 0 deletions
|
|
@ -8,6 +8,7 @@ module.exports = {
|
|||
maxWorkers: 1,
|
||||
testEnvironment: './environment',
|
||||
testRunner: 'jest-circus/runner',
|
||||
testSequencer: './custom_sequencer.js',
|
||||
testTimeout: 120000,
|
||||
testRegex: '\\.e2e\\.ts$',
|
||||
transform: {
|
||||
|
|
|
|||
31
detox/e2e/custom_sequencer.js
Normal file
31
detox/e2e/custom_sequencer.js
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
// 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;
|
||||
1
detox/package-lock.json
generated
1
detox/package-lock.json
generated
|
|
@ -10,6 +10,7 @@
|
|||
"@babel/plugin-transform-modules-commonjs": "7.18.6",
|
||||
"@babel/plugin-transform-runtime": "7.18.10",
|
||||
"@babel/preset-env": "7.18.10",
|
||||
"@jest/test-sequencer": "28.1.3",
|
||||
"@types/jest": "28.1.6",
|
||||
"@types/tough-cookie": "4.0.2",
|
||||
"@types/uuid": "8.3.4",
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
"@babel/plugin-transform-modules-commonjs": "7.18.6",
|
||||
"@babel/plugin-transform-runtime": "7.18.10",
|
||||
"@babel/preset-env": "7.18.10",
|
||||
"@jest/test-sequencer": "28.1.3",
|
||||
"@types/jest": "28.1.6",
|
||||
"@types/tough-cookie": "4.0.2",
|
||||
"@types/uuid": "8.3.4",
|
||||
|
|
|
|||
Loading…
Reference in a new issue