kibana/x-pack/dev-tools/jest/create_jest_config.js

57 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-04-20 21:13:37 +02:00
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
export function createJestConfig({
kibanaDirectory,
xPackKibanaDirectory,
}) {
return {
rootDir: xPackKibanaDirectory,
roots: [
'<rootDir>/plugins',
'<rootDir>/server',
2018-04-20 21:13:37 +02:00
],
moduleFileExtensions: [
'js',
'json',
'ts',
'tsx',
2018-04-20 21:13:37 +02:00
],
moduleNameMapper: {
'^ui/(.*)': `${kibanaDirectory}/src/legacy/ui/public/$1`,
Improve dll plugin relation with webpackshims (#30129) * chore(NA): remove specific watch for x-pack webpackShims folder. * chore(NA): remove xpack security plugin angular-ui-select webpackShim. * chore(NA): bump ui-select version on x-pack to match the one used on oss kibana * chore(NA): remove manual searching for webpackShim imports into the dll plugin. chore(NA): explicit avoid max dll compilations in all environments for the dll plugin. chore(NA): explicit throw an error and list all the not allowed modules bundled into the dll bundle. * refact(NA): move ui related actions inside webpackShims to proper ui related files * chore(NA): move angular ui dependencies from webpackShims to kibana core module. * test(NA): enable xpack jest tests to be able to resolve plugins/xpack_main/*. refact(NA): rewrite code for the old xpack jquery flot webpackShim. * refact(NA): use the already declared ui module get to list the dependencies for the kibana legacy core plugin. * chore(NA): move angular ui requires to a better centralized place. * refact(NA): rename areMaxCompilationsPerformed to assertMaxCompilations. * refact(NA): remove unnecessary promise resolve on async function. * refact(NA): remove unnecessary promise resolve on async function. * refact(NA): apply changes according pr review. * refact(NA): change from requires to imports in xpack_main plugin jquery flots. * refact(NA): jquery flots missing statements. * fix(na): linting problems. * chore(na): re add jquery flot requires instead of imports. * refact(NA): moving jquery flots from require to import. test(NA): fix mock for jquery_flot. * feat(na): allow dynamic dll plugin public modules on dll bundle. * feat(NA): step verification to not allow modules from xpack source. * chore(NA): fix linting problems.
2019-02-22 02:45:42 +01:00
'^plugins/xpack_main/(.*);': `${xPackKibanaDirectory}/plugins/xpack_main/public/$1`,
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
2018-04-20 21:13:37 +02:00
`${kibanaDirectory}/src/dev/jest/mocks/file_mock.js`,
'\\.(css|less|scss)$': `${kibanaDirectory}/src/dev/jest/mocks/style_mock.js`,
'^test_utils/enzyme_helpers': `${xPackKibanaDirectory}/test_utils/enzyme_helpers.tsx`
2018-04-20 21:13:37 +02:00
},
setupFiles: [
`${kibanaDirectory}/src/dev/jest/setup/babel_polyfill.js`,
`<rootDir>/dev-tools/jest/setup/polyfills.js`,
`<rootDir>/dev-tools/jest/setup/enzyme.js`,
2018-04-20 21:13:37 +02:00
],
testMatch: [
'**/*.test.{js,ts,tsx}'
2018-04-20 21:13:37 +02:00
],
transform: {
'^.+\\.js$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`,
'^.+\\.tsx?$': `${kibanaDirectory}/src/dev/jest/ts_transform.js`,
2018-04-20 21:13:37 +02:00
},
transformIgnorePatterns: [
'[/\\\\]node_modules[/\\\\].+\\.js$'
2018-04-20 21:13:37 +02:00
],
snapshotSerializers: [
`${kibanaDirectory}/node_modules/enzyme-to-json/serializer`
],
'reporters': [
'default',
2018-04-20 21:13:37 +02:00
[`${kibanaDirectory}/src/dev/jest/junit_reporter.js`, {
reportName: 'X-Pack Jest Tests',
}]
Upgrade to Jest 23.5.0 (#22791) I'd really like to upgrade to Typescript 3 for its `unknown` type, but we need to upgrade to `jest@23` to support a recent version of `ts-jest@23`. The [jest changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md) breaks down the breaking changes in 23.x, but I found it to be slightly incomplete so I've broken down the changes that actually caused breaks for us here, and addressed each in individual commits to make review a little easier: - the `testURL` config default was changed from `about:blank` to `http://localhost` - this cause some XHR requests powered by JSdom to start failing. It seems these requests just do nothing in master but start to fail when JSdom is initialized with an actual URL... I think we would ideally stop sending meaningless XHR requests in the tests, but it was a lot easier to just set the config to `about:blank` for now, and we can worry about cleanup later if necessary - `expect(...).toThrow()` only passes if an actual error was thrown. - In two places in the index pattern code we were throwing strings, which broke the assertions. Fortunately/Unfortunately the errors are not being consumed by anything, so I was able to wrap them in `new Error()` without causing any issues. - snapshots of mock functions now include a `results` array, detailing the return values of the function - React fragments are now serialized as `<React.Fragment>` instead of `<UNDEFINED>` - undefined props in React components are now stripped from snapshots - minor changes to the ordering of mocks, imports resolution, and before hooks caused the uiSettings API tests to start breaking, but I'm replacing them with totally new tests in #22694 so I just deleted them here - mocks created with `jest.spyOn()` that are restored now have their `mock.calls` reset, so some of the kbn-pm tests stated failing. This was fixed by restoring them with `jest.restoreAllMocks()` rather than trying to do it before the assertions
2018-09-08 03:36:13 +02:00
],
2018-04-20 21:13:37 +02:00
};
}