[jest] add *_node presets (#126192) (#126261)

(cherry picked from commit 1a1a191eb7)

Co-authored-by: Spencer <spencer@elastic.co>
This commit is contained in:
Kibana Machine 2022-02-23 12:09:19 -05:00 committed by GitHub
parent 6f80b75e97
commit 3cf5d6df21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 97 additions and 22 deletions

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-es'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-es'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-optimizer'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-optimizer'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-plugin-generator'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-plugin-generator'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-plugin-helpers'],
};

View file

@ -30,6 +30,8 @@ NPM_MODULE_EXTRA_FILES = [
"jest/package.json",
"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",

View file

@ -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',
],

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test',
preset: '@kbn/test/jest_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-test'],
};

View file

@ -7,7 +7,7 @@
*/
module.exports = {
preset: '@kbn/test/jest_integration',
preset: '@kbn/test/jest_integration_node',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-test'],
};

View file

@ -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',

View file

@ -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'],
};

View file

@ -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'],
};

View file

@ -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(),
};
});

View file

@ -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(),
};
});

View file

@ -38,7 +38,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/**/*',