Skip to content

Commit

Permalink
[jest] add *_node presets (#126192)
Browse files Browse the repository at this point in the history
  • Loading branch information
Spencer authored Feb 23, 2022
1 parent a20e4ba commit 1a1a191
Show file tree
Hide file tree
Showing 18 changed files with 97 additions and 22 deletions.
2 changes: 1 addition & 1 deletion packages/kbn-es/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-es'],
};
2 changes: 1 addition & 1 deletion packages/kbn-es/jest.integration.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-es'],
};
2 changes: 1 addition & 1 deletion packages/kbn-optimizer/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-optimizer'],
};
2 changes: 1 addition & 1 deletion packages/kbn-optimizer/jest.integration.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-optimizer'],
};
2 changes: 1 addition & 1 deletion packages/kbn-plugin-generator/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-plugin-generator'],
};
2 changes: 1 addition & 1 deletion packages/kbn-plugin-generator/jest.integration.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-plugin-generator'],
};
2 changes: 1 addition & 1 deletion packages/kbn-plugin-helpers/jest.integration.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-plugin-helpers'],
};
2 changes: 2 additions & 0 deletions packages/kbn-test/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ filegroup(
NPM_MODULE_EXTRA_FILES = [
"jest-preset.js",
"jest_integration/jest-preset.js",
"jest_integration_node/jest-preset.js",
"jest_node/jest-preset.js",
"jest.config.js",
"README.md",
"package.json",
Expand Down
5 changes: 3 additions & 2 deletions packages/kbn-test/jest-preset.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,15 @@ module.exports = {
// The paths to modules that run some code to configure or set up the testing environment before each test
setupFiles: [
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/babel_polyfill.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/polyfills.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/polyfills.jsdom.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/enzyme.js',
],

// A list of paths to modules that run some code to configure or set up the testing framework before each test
setupFilesAfterEnv: [
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/setup_test.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.moment_timezone.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.eui.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/react_testing_library.js',
],

Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-test/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-test'],
};
2 changes: 1 addition & 1 deletion packages/kbn-test/jest.integration.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-test'],
};
3 changes: 2 additions & 1 deletion packages/kbn-test/jest_integration/jest-preset.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ module.exports = {
),
setupFilesAfterEnv: [
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/after_env.integration.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.moment_timezone.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.eui.js',
],
reporters: [
'default',
Expand Down
46 changes: 46 additions & 0 deletions packages/kbn-test/jest_integration_node/jest-preset.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

const preset = require('../jest-preset');

/** @typedef {import("@jest/types").Config.InitialOptions} JestConfig */
/** @type {JestConfig} */
module.exports = {
...preset,
testMatch: ['**/integration_tests**/*.test.{js,mjs,ts,tsx}'],
testPathIgnorePatterns: preset.testPathIgnorePatterns.filter(
(pattern) => !pattern.includes('integration_tests')
),
setupFilesAfterEnv: [
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/after_env.integration.js',
'<rootDir>/node_modules/@kbn/test/target_node/jest/setup/mocks.moment_timezone.js',
],
reporters: [
'default',
[
'@kbn/test/target_node/jest/junit_reporter',
{
rootDirectory: '.',
reportName: 'Jest Integration Tests',
},
],
[
'@kbn/test/target_node/jest/ci_stats_jest_reporter',
{
testGroupType: 'Jest Integration Tests',
},
],
],
coverageReporters: !!process.env.CI
? [['json', { file: 'jest-integration.json' }]]
: ['html', 'text'],

testEnvironment: 'node',
snapshotSerializers: [],
setupFiles: ['<rootDir>/node_modules/@kbn/test/target_node/jest/setup/babel_polyfill.js'],
};
16 changes: 16 additions & 0 deletions packages/kbn-test/jest_node/jest-preset.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

const preset = require('../jest-preset');

module.exports = {
...preset,
testEnvironment: 'node',
snapshotSerializers: [],
setupFiles: ['<rootDir>/node_modules/@kbn/test/target_node/jest/setup/babel_polyfill.js'],
};
18 changes: 18 additions & 0 deletions packages/kbn-test/src/jest/setup/mocks.eui.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

/* eslint-env jest */

jest.mock('@elastic/eui/lib/services/react', () => {
// `enqueueStateChange` is an EUI method to batch queued functions that trigger React `setState` calls.
// This is for performance, but when used in certain Jest scernarios it can be nondeterministic.
// Jest tests are never concerned about the state prior to batch completion, so we bypass batching entirely.
return {
enqueueStateChange: (fn) => fn(),
};
});
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,3 @@ jest.mock('moment-timezone', () => {
moment.tz.setDefault('America/New_York');
return moment;
});

jest.mock('@elastic/eui/lib/services/react', () => {
// `enqueueStateChange` is an EUI method to batch queued functions that trigger React `setState` calls.
// This is for performance, but when used in certain Jest scernarios it can be nondeterministic.
// Jest tests are never concerned about the state prior to batch completion, so we bypass batching entirely.
return {
enqueueStateChange: (fn) => fn(),
};
});
2 changes: 1 addition & 1 deletion src/dev/precommit_hook/casing_check_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export const IGNORE_FILE_GLOBS = [
'vars/*',
'.ci/pipeline-library/**/*',
'packages/kbn-test/jest-preset.js',
'packages/kbn-test/jest_integration/jest-preset.js',
'packages/kbn-test/*/jest-preset.js',
'test/package/Vagrantfile',
'**/test/**/fixtures/**/*',

Expand Down

0 comments on commit 1a1a191

Please sign in to comment.