kibana/packages/kbn-test/jest-preset.js
Anton Dosov 64b6a1a5e7
Sustainable Kibana Architecture: Move the rest of shared-ux modules (#205924)
## Summary

This PR aims at relocating some of the Kibana modules (plugins and
packages) into a new folder structure, according to the _Sustainable
Kibana Architecture_ initiative.

> [!IMPORTANT]
> * We kindly ask you to:
> * Manually fix the errors in the error section below (if there are
any).
> * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the
source code (Babel and Eslint config files), and update them
appropriately.
> * Manually review
`.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that
any CI pipeline customizations continue to be correctly applied after
the changed path names
> * Review all of the updated files, specially the `.ts` and `.js` files
listed in the sections below, as some of them contain relative paths
that have been updated.
> * Think of potential impact of the move, including tooling and
configuration files that can be pointing to the relocated modules. E.g.:
>     * customised eslint rules
>     * docs pointing to source code

> [!NOTE]
> * This PR has been auto-generated.
> * Any manual contributions will be lost if the 'relocate' script is
re-run.
> * Try to obtain the missing reviews / approvals before applying manual
fixes, and/or keep your changes in a .patch / git stash.
> * Please use
[#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E)
Slack channel for feedback.

Are you trying to rebase this PR to solve merge conflicts? Please follow
the steps describe
[here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E).

#### 1 plugin(s) are going to be relocated:

| Id | Target folder |
| -- | ------------- |
| `@kbn/url-drilldown-plugin` |
`x-pack/platform/plugins/private/drilldowns/url_drilldown` |




#### 21 packages(s) are going to be relocated:

| Id | Target folder |
| -- | ------------- |
| `@kbn/core-chrome-browser` | `src/core/packages/chrome/browser` |
| `@kbn/deeplinks-shared` |
`src/platform/packages/shared/deeplinks/shared` |
| `@kbn/home-sample-data-card` |
`src/platform/packages/shared/home/sample_data_card` |
| `@kbn/home-sample-data-tab` |
`src/platform/packages/shared/home/sample_data_tab` |
| `@kbn/home-sample-data-types` |
`src/platform/packages/shared/home/sample_data_types` |
| `@kbn/guided-onboarding` |
`src/platform/packages/shared/kbn-guided-onboarding` |
| `@kbn/item-buffer` | `src/platform/packages/private/kbn-item-buffer` |
| `@kbn/management-settings-section-registry` |
`src/platform/packages/shared/kbn-management/settings/section_registry`
|
| `@kbn/management-settings-ids` |
`src/platform/packages/shared/kbn-management/settings/setting_ids` |
| `@kbn/react-mute-legacy-root-warning` |
`src/platform/packages/private/kbn-react-mute-legacy-root-warning` |
| `@kbn/saved-objects-settings` |
`src/platform/packages/private/kbn-saved-objects-settings` |
| `@kbn/react-kibana-context-common` |
`src/platform/packages/shared/react/kibana_context/common` |
| `@kbn/react-kibana-context-render` |
`src/platform/packages/shared/react/kibana_context/render` |
| `@kbn/react-kibana-context-root` |
`src/platform/packages/shared/react/kibana_context/root` |
| `@kbn/react-kibana-context-styled` |
`src/platform/packages/shared/react/kibana_context/styled` |
| `@kbn/react-kibana-context-theme` |
`src/platform/packages/shared/react/kibana_context/theme` |
| `@kbn/react-kibana-mount` |
`src/platform/packages/shared/react/kibana_mount` |
| `@kbn/serverless-project-switcher` |
`src/platform/packages/private/serverless/project_switcher` |
| `@kbn/serverless-common-settings` |
`src/platform/packages/private/serverless/settings/common` |
| `@kbn/serverless-observability-settings` |
`src/platform/packages/shared/serverless/settings/observability_project`
|
| `@kbn/serverless-types` |
`src/platform/packages/private/serverless/types` |


<details >
<summary>Updated relative paths</summary>

```
src/core/packages/chrome/browser/jest.config.js:12
src/core/packages/chrome/browser/tsconfig.json:2
src/core/packages/chrome/browser/tsconfig.type_check.json:2
src/core/packages/chrome/browser/tsconfig.type_check.json:21
src/core/packages/chrome/browser/tsconfig.type_check.json:24
src/core/packages/chrome/browser/tsconfig.type_check.json:27
src/core/packages/chrome/browser/tsconfig.type_check.json:30
src/core/packages/chrome/browser/tsconfig.type_check.json:33
src/core/packages/chrome/browser/tsconfig.type_check.json:36
src/core/packages/chrome/browser/tsconfig.type_check.json:39
src/core/packages/chrome/browser/tsconfig.type_check.json:42
src/core/packages/chrome/browser/tsconfig.type_check.json:45
src/core/packages/chrome/browser/tsconfig.type_check.json:48
src/core/packages/chrome/browser/tsconfig.type_check.json:51
src/core/packages/chrome/browser/tsconfig.type_check.json:54
src/platform/packages/private/kbn-item-buffer/jest.config.js:12
src/platform/packages/private/kbn-item-buffer/tsconfig.json:2
src/platform/packages/private/kbn-react-mute-legacy-root-warning/jest.config.js:12
src/platform/packages/private/kbn-react-mute-legacy-root-warning/tsconfig.json:2
src/platform/packages/private/kbn-saved-objects-settings/jest.config.js:12
src/platform/packages/private/kbn-saved-objects-settings/tsconfig.json:2
src/platform/packages/private/kbn-saved-objects-settings/tsconfig.type_check.json:2
src/platform/packages/private/serverless/project_switcher/jest.config.js:12
src/platform/packages/private/serverless/project_switcher/tsconfig.json:2
src/platform/packages/private/serverless/project_switcher/tsconfig.type_check.json:2
src/platform/packages/private/serverless/project_switcher/tsconfig.type_check.json:23
src/platform/packages/private/serverless/settings/common/tsconfig.json:2
src/platform/packages/private/serverless/settings/common/tsconfig.type_check.json:2
src/platform/packages/private/serverless/settings/common/tsconfig.type_check.json:20
src/platform/packages/private/serverless/types/tsconfig.json:2
src/platform/packages/private/serverless/types/tsconfig.type_check.json:2
src/platform/packages/shared/deeplinks/shared/jest.config.js:12
src/platform/packages/shared/deeplinks/shared/tsconfig.json:2
src/platform/packages/shared/deeplinks/shared/tsconfig.type_check.json:2
src/platform/packages/shared/home/sample_data_card/jest.config.js:12
src/platform/packages/shared/home/sample_data_card/tsconfig.json:2
src/platform/packages/shared/home/sample_data_card/tsconfig.type_check.json:2
src/platform/packages/shared/home/sample_data_card/tsconfig.type_check.json:23
src/platform/packages/shared/home/sample_data_card/tsconfig.type_check.json:29
src/platform/packages/shared/home/sample_data_tab/jest.config.js:12
src/platform/packages/shared/home/sample_data_tab/tsconfig.json:2
src/platform/packages/shared/home/sample_data_tab/tsconfig.type_check.json:2
src/platform/packages/shared/home/sample_data_tab/tsconfig.type_check.json:23
src/platform/packages/shared/home/sample_data_types/jest.config.js:12
src/platform/packages/shared/home/sample_data_types/tsconfig.json:2
src/platform/packages/shared/home/sample_data_types/tsconfig.type_check.json:2
src/platform/packages/shared/kbn-guided-onboarding/jest.config.js:12
src/platform/packages/shared/kbn-guided-onboarding/tsconfig.json:2
src/platform/packages/shared/kbn-guided-onboarding/tsconfig.type_check.json:2
src/platform/packages/shared/kbn-management/settings/section_registry/tsconfig.json:2
src/platform/packages/shared/kbn-management/settings/section_registry/tsconfig.type_check.json:2
src/platform/packages/shared/kbn-management/settings/section_registry/tsconfig.type_check.json:22
src/platform/packages/shared/kbn-management/settings/section_registry/tsconfig.type_check.json:25
src/platform/packages/shared/kbn-management/settings/setting_ids/tsconfig.json:2
src/platform/packages/shared/kbn-management/settings/setting_ids/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_context/common/jest.config.js:12
src/platform/packages/shared/react/kibana_context/common/tsconfig.json:2
src/platform/packages/shared/react/kibana_context/common/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_context/render/jest.config.js:12
src/platform/packages/shared/react/kibana_context/render/tsconfig.json:2
src/platform/packages/shared/react/kibana_context/render/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_context/render/tsconfig.type_check.json:25
src/platform/packages/shared/react/kibana_context/root/jest.config.js:12
src/platform/packages/shared/react/kibana_context/root/tsconfig.json:2
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:22
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:28
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:31
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:34
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:37
src/platform/packages/shared/react/kibana_context/root/tsconfig.type_check.json:40
src/platform/packages/shared/react/kibana_context/styled/jest.config.js:12
src/platform/packages/shared/react/kibana_context/styled/tsconfig.json:2
src/platform/packages/shared/react/kibana_context/styled/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_context/styled/tsconfig.type_check.json:22
src/platform/packages/shared/react/kibana_context/theme/jest.config.js:12
src/platform/packages/shared/react/kibana_context/theme/tsconfig.json:2
src/platform/packages/shared/react/kibana_context/theme/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_context/theme/tsconfig.type_check.json:22
src/platform/packages/shared/react/kibana_mount/jest.config.js:12
src/platform/packages/shared/react/kibana_mount/tsconfig.json:2
src/platform/packages/shared/react/kibana_mount/tsconfig.type_check.json:2
src/platform/packages/shared/react/kibana_mount/tsconfig.type_check.json:22
src/platform/packages/shared/react/kibana_mount/tsconfig.type_check.json:25
src/platform/packages/shared/react/kibana_mount/tsconfig.type_check.json:28
src/platform/packages/shared/react/kibana_mount/tsconfig.type_check.json:34
src/platform/packages/shared/serverless/settings/observability_project/tsconfig.json:2
src/platform/packages/shared/serverless/settings/observability_project/tsconfig.type_check.json:2
src/platform/packages/shared/serverless/settings/observability_project/tsconfig.type_check.json:20
x-pack/platform/plugins/private/drilldowns/url_drilldown/tsconfig.json:2
```

</details>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-01-10 11:30:37 +00:00

138 lines
5.8 KiB
JavaScript

/*
* 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/
// For a detailed explanation regarding each configuration property, visit:
// https://jestjs.io/docs/en/configuration.html
/** @type {import("@jest/types").Config.InitialOptions} */
module.exports = {
// The directory where Jest should output its coverage files
coverageDirectory: '<rootDir>/target/kibana-coverage/jest',
// An array of regexp pattern strings used to skip coverage collection
coveragePathIgnorePatterns: ['/node_modules/', '.*\\.d\\.ts', 'jest\\.config\\.js'],
// A list of reporter names that Jest uses when writing coverage reports
coverageReporters: !!process.env.CODE_COVERAGE
? [['json', { file: 'jest.json' }]]
: ['html', 'text'],
// An array of file extensions your modules use
moduleFileExtensions: ['ts', 'tsx', 'js', 'mjs', 'json', 'node'],
moduleNameMapper: {
// do not use these, they're so slow. We have a custom resolver that can handle resolving different types of requests.
},
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
modulePathIgnorePatterns: ['__fixtures__/', 'target/'],
// Use this configuration option to add custom reporters to Jest
reporters: [
'default',
[
'<rootDir>/packages/kbn-test/src/jest/junit_reporter',
{
rootDirectory: '.',
},
],
...(process.env.TEST_GROUP_TYPE_UNIT
? [
[
'<rootDir>/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts',
{
testGroupType: process.env.TEST_GROUP_TYPE_UNIT,
},
],
]
: []),
],
// The paths to modules that run some code to configure or set up the testing environment before each test
setupFiles: [
'<rootDir>/src/setup_node_env/polyfill.ts',
'<rootDir>/packages/kbn-test/src/jest/setup/polyfills.jsdom.js',
'<rootDir>/packages/kbn-test/src/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>/packages/kbn-test/src/jest/setup/setup_test.js',
'<rootDir>/packages/kbn-test/src/jest/setup/mocks.moment_timezone.js',
'<rootDir>/packages/kbn-test/src/jest/setup/mocks.eui.js',
'<rootDir>/packages/kbn-test/src/jest/setup/react_testing_library.js',
'<rootDir>/packages/kbn-test/src/jest/setup/mocks.kbn_i18n_react.js',
process.env.CI ? '<rootDir>/packages/kbn-test/src/jest/setup/disable_console_logs.js' : [],
].flat(),
snapshotFormat: {
escapeString: true,
printBasicPrototype: true,
},
// A list of paths to snapshot serializer modules Jest should use for snapshot testing
snapshotSerializers: [
'<rootDir>/src/platform/packages/shared/react/kibana_mount/test_helpers/react_mount_serializer.ts',
'enzyme-to-json/serializer',
'<rootDir>/packages/kbn-test/src/jest/setup/emotion.js',
],
// The test environment that will be used for testing
testEnvironment: 'jest-environment-jsdom',
// The glob patterns Jest uses to detect test files
testMatch: ['**/*.test.{js,mjs,ts,tsx}'],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
testPathIgnorePatterns: [
'<rootDir>/packages/kbn-ui-framework/dist/',
'<rootDir>/packages/kbn-pm/dist/',
`integration_tests/`,
],
// A map from regular expressions to paths to transformers
transform: {
'^.+\\.(js|tsx?)$': '<rootDir>/packages/kbn-test/src/jest/transforms/babel/index.js',
'^.+\\.(txt|html)?$': '<rootDir>/packages/kbn-test/src/jest/transforms/raw.js',
'^.+\\.peggy?$': '<rootDir>/packages/kbn-test/src/jest/transforms/peggy.js',
},
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
transformIgnorePatterns: [
// ignore all node_modules except monaco-editor, monaco-yaml which requires babel transforms to handle dynamic import()
// since ESM modules are not natively supported in Jest yet (https://github.com/facebook/jest/issues/4842)
'[/\\\\]node_modules(?![\\/\\\\](byte-size|monaco-editor|monaco-yaml|monaco-languageserver-types|monaco-marker-data-provider|monaco-worker-manager|vscode-languageserver-types|d3-interpolate|d3-color|langchain|langsmith|@cfworker|gpt-tokenizer|flat|@langchain|eventsource-parser))[/\\\\].+\\.js$',
'packages/kbn-pm/dist/index.js',
'[/\\\\]node_modules(?![\\/\\\\](langchain|langsmith|@langchain))/dist/[/\\\\].+\\.js$',
'[/\\\\]node_modules(?![\\/\\\\](langchain|langsmith|@langchain))/dist/util/[/\\\\].+\\.js$',
],
// An array of regexp pattern strings that are matched against all source file paths, matched files to include/exclude for code coverage
collectCoverageFrom: [
'**/*.{js,mjs,jsx,ts,tsx}',
'!**/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*',
'!**/*mock*.{ts,tsx}',
'!**/*.test.{ts,tsx}',
'!**/*.d.ts',
'!**/index.{js,ts,tsx}',
],
watchPathIgnorePatterns: ['.*/__tmp__/.*'],
resolver: '<rootDir>/packages/kbn-test/src/jest/resolver.js',
// Workaround to "TypeError: Cannot assign to read only property 'structuredClone' of object '[object global]'"
// This happens when we run jest tests with --watch after node20+
globals: {
structuredClone: {},
},
testResultsProcessor:
'<rootDir>/packages/kbn-test/src/jest/result_processors/logging_result_processor.js',
};