kibana/docs/developer/contributing/development-tests.asciidoc
Devon Thomson 76caf5669c
Sustainable Kibana Architecture: Move modules owned by @elastic/kibana-presentation (#204843)
## 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).

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

| Id | Target folder |
| -- | ------------- |
| `@kbn/canvas-plugin` | `x-pack/platform/plugins/private/canvas` |
| `@kbn/controls-plugin` | `src/platform/plugins/shared/controls` |
| `@kbn/dashboard-enhanced-plugin` |
`x-pack/platform/plugins/shared/dashboard_enhanced` |
| `@kbn/dashboard-plugin` | `src/platform/plugins/shared/dashboard` |
| `@kbn/embeddable-enhanced-plugin` |
`x-pack/platform/plugins/shared/embeddable_enhanced` |
| `@kbn/embeddable-plugin` | `src/platform/plugins/shared/embeddable` |
| `@kbn/expression-error-plugin` |
`src/platform/plugins/shared/expression_error` |
| `@kbn/expression-image-plugin` |
`src/platform/plugins/shared/expression_image` |
| `@kbn/expression-metric-plugin` |
`src/platform/plugins/shared/expression_metric` |
| `@kbn/expression-repeat-image-plugin` |
`src/platform/plugins/shared/expression_repeat_image` |
| `@kbn/expression-reveal-image-plugin` |
`src/platform/plugins/shared/expression_reveal_image` |
| `@kbn/expression-shape-plugin` |
`src/platform/plugins/shared/expression_shape` |
| `@kbn/file-upload-plugin` |
`x-pack/platform/plugins/private/file_upload` |
| `@kbn/input-control-vis-plugin` |
`src/platform/plugins/private/input_control_vis` |
| `@kbn/inspector-plugin` | `src/platform/plugins/shared/inspector` |
| `@kbn/links-plugin` | `src/platform/plugins/private/links` |
| `@kbn/maps-ems-plugin` | `src/platform/plugins/private/maps_ems` |
| `@kbn/maps-plugin` | `x-pack/platform/plugins/shared/maps` |
| `@kbn/presentation-panel-plugin` |
`src/platform/plugins/private/presentation_panel` |
| `@kbn/presentation-util-plugin` |
`src/platform/plugins/shared/presentation_util` |
| `@kbn/vis-type-markdown-plugin` |
`src/platform/plugins/private/vis_type_markdown` |




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

| Id | Target folder |
| -- | ------------- |
| `@kbn/flot-charts` | `src/platform/packages/shared/kbn-flot-charts` |
| `@kbn/mapbox-gl` | `src/platform/packages/private/kbn-mapbox-gl` |
| `@kbn/maps-vector-tile-utils` |
`x-pack/platform/packages/private/maps/vector_tile_utils` |
| `@kbn/panel-loader` | `src/platform/packages/private/kbn-panel-loader`
|
| `@kbn/presentation-containers` |
`src/platform/packages/shared/presentation/presentation_containers` |
| `@kbn/presentation-publishing` |
`src/platform/packages/shared/presentation/presentation_publishing` |


<details >
<summary>Updated references</summary>

```
./.eslintignore
./.eslintrc.js
./.github/codeql/codeql-config.yml
./.github/paths-labeller.yml
./.i18nrc.json
./docs/developer/best-practices/index.asciidoc
./docs/developer/contributing/development-tests.asciidoc
./docs/developer/plugin-list.asciidoc
./legacy_rfcs/text/0018_timeslider.md
./package.json
./packages/kbn-cli-dev-mode/src/watcher.ts
./packages/kbn-docs-utils/src/utils.test.ts
./packages/kbn-repo-packages/package-map.json
./packages/kbn-test/src/jest/setup/polyfills.jsdom.js
./packages/kbn-ts-projects/config-paths.json
./src/dev/build/tasks/build_canvas_shareable_runtime.ts
./src/dev/build/tasks/create_archives_sources_task.ts
./src/dev/code_coverage/ingest_coverage/__tests__/mocks/team_assign_mock.txt
./src/dev/precommit_hook/casing_check_config.js
./src/dev/storybook/aliases.ts
./src/platform/packages/private/kbn-panel-loader/jest.config.js
./src/platform/packages/shared/presentation/presentation_containers/jest.config.js
./src/platform/packages/shared/presentation/presentation_publishing/jest.config.js
./src/platform/plugins/private/input_control_vis/jest.config.js
./src/platform/plugins/private/links/jest.config.js
./src/platform/plugins/private/maps_ems/jest.config.js
./src/platform/plugins/private/presentation_panel/jest.config.js
./src/platform/plugins/private/vis_type_markdown/jest.config.js
./src/platform/plugins/shared/controls/jest.config.js
./src/platform/plugins/shared/dashboard/jest.config.js
./src/platform/plugins/shared/dashboard/public/dashboard_container/component/empty_screen/__snapshots__/dashboard_empty_screen.test.tsx.snap
./src/platform/plugins/shared/embeddable/README.md
./src/platform/plugins/shared/embeddable/jest.config.js
./src/platform/plugins/shared/expression_image/jest.config.js
./src/platform/plugins/shared/expression_metric/jest.config.js
./src/platform/plugins/shared/expression_repeat_image/jest.config.js
./src/platform/plugins/shared/expression_reveal_image/jest.config.js
./src/platform/plugins/shared/expression_shape/jest.config.js
./src/platform/plugins/shared/inspector/jest.config.js
./src/platform/plugins/shared/presentation_util/jest.config.js
./src/platform/plugins/shared/presentation_util/storybook/manager.ts
./src/plugins/visualizations/public/visualize_app/utils/migrate_app_state.ts
./tsconfig.base.json
./x-pack/.i18nrc.json
./x-pack/platform/packages/private/maps/vector_tile_utils/jest.config.js
./x-pack/platform/plugins/private/canvas/jest.config.js
./x-pack/platform/plugins/private/canvas/scripts/jest.js
./x-pack/platform/plugins/private/canvas/shareable_runtime/constants.js
./x-pack/platform/plugins/private/canvas/storybook/canvas_webpack.ts
./x-pack/platform/plugins/private/file_upload/jest.config.js
./x-pack/platform/plugins/shared/dashboard_enhanced/common/drilldowns/dashboard_drilldown/constants.ts
./x-pack/platform/plugins/shared/dashboard_enhanced/jest.config.js
./x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/constants.ts
./x-pack/platform/plugins/shared/embeddable_enhanced/jest.config.js
./x-pack/platform/plugins/shared/maps/README.md
./x-pack/platform/plugins/shared/maps/jest.config.js
./x-pack/plugins/reporting/server/config/ui_settings.ts
./x-pack/test/api_integration/apis/maps/fonts_api.js
./yarn.lock
.github/CODEOWNERS
```

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

```
src/platform/packages/private/kbn-mapbox-gl/tsconfig.json:2
src/platform/packages/private/kbn-panel-loader/jest.config.js:12
src/platform/packages/private/kbn-panel-loader/tsconfig.json:2
src/platform/packages/shared/kbn-flot-charts/tsconfig.json:2
src/platform/packages/shared/presentation/presentation_containers/jest.config.js:12
src/platform/packages/shared/presentation/presentation_containers/tsconfig.json:2
src/platform/packages/shared/presentation/presentation_publishing/jest.config.js:12
src/platform/packages/shared/presentation/presentation_publishing/tsconfig.json:2
src/platform/plugins/private/input_control_vis/jest.config.js:12
src/platform/plugins/private/input_control_vis/tsconfig.json:2
src/platform/plugins/private/links/jest.config.js:12
src/platform/plugins/private/links/public/_mixins.scss:1
src/platform/plugins/private/links/tsconfig.json:2
src/platform/plugins/private/maps_ems/jest.config.js:12
src/platform/plugins/private/maps_ems/tsconfig.json:2
src/platform/plugins/private/presentation_panel/jest.config.js:12
src/platform/plugins/private/presentation_panel/tsconfig.json:2
src/platform/plugins/private/presentation_panel/tsconfig.json:6
src/platform/plugins/private/vis_type_markdown/jest.config.js:12
src/platform/plugins/private/vis_type_markdown/tsconfig.json:2
src/platform/plugins/shared/controls/jest.config.js:12
src/platform/plugins/shared/controls/tsconfig.json:12
src/platform/plugins/shared/controls/tsconfig.json:2
src/platform/plugins/shared/dashboard/jest.config.js:12
src/platform/plugins/shared/dashboard/tsconfig.json:2
src/platform/plugins/shared/embeddable/jest.config.js:12
src/platform/plugins/shared/embeddable/tsconfig.json:2
src/platform/plugins/shared/expression_error/tsconfig.json:2
src/platform/plugins/shared/expression_image/jest.config.js:12
src/platform/plugins/shared/expression_image/tsconfig.json:2
src/platform/plugins/shared/expression_metric/jest.config.js:12
src/platform/plugins/shared/expression_metric/tsconfig.json:2
src/platform/plugins/shared/expression_repeat_image/jest.config.js:12
src/platform/plugins/shared/expression_repeat_image/tsconfig.json:2
src/platform/plugins/shared/expression_reveal_image/jest.config.js:12
src/platform/plugins/shared/expression_reveal_image/tsconfig.json:2
src/platform/plugins/shared/expression_shape/jest.config.js:12
src/platform/plugins/shared/expression_shape/tsconfig.json:2
src/platform/plugins/shared/inspector/jest.config.js:12
src/platform/plugins/shared/inspector/tsconfig.json:2
src/platform/plugins/shared/presentation_util/jest.config.js:12
src/platform/plugins/shared/presentation_util/storybook/main.ts:17
src/platform/plugins/shared/presentation_util/tsconfig.json:13
src/platform/plugins/shared/presentation_util/tsconfig.json:2
x-pack/platform/packages/private/maps/vector_tile_utils/jest.config.js:10
x-pack/platform/packages/private/maps/vector_tile_utils/tsconfig.json:2
x-pack/platform/plugins/private/canvas/CONTRIBUTING.md:3
x-pack/platform/plugins/private/canvas/PLUGINS.mdx:174
x-pack/platform/plugins/private/canvas/PLUGINS.mdx:175
x-pack/platform/plugins/private/canvas/PLUGINS.mdx:63
x-pack/platform/plugins/private/canvas/PLUGINS.mdx:64
x-pack/platform/plugins/private/canvas/jest.config.js:10
x-pack/platform/plugins/private/canvas/shareable_runtime/constants.js:11
x-pack/platform/plugins/private/canvas/storybook/constants.ts:10
x-pack/platform/plugins/private/canvas/storybook/storyshots.skipped_test.tsx:86
x-pack/platform/plugins/private/canvas/tsconfig.json:16
x-pack/platform/plugins/private/canvas/tsconfig.json:2
x-pack/platform/plugins/private/canvas/tsconfig.json:29
x-pack/platform/plugins/private/file_upload/jest.config.js:10
x-pack/platform/plugins/private/file_upload/tsconfig.json:2
x-pack/platform/plugins/shared/dashboard_enhanced/jest.config.js:10
x-pack/platform/plugins/shared/dashboard_enhanced/tsconfig.json:2
x-pack/platform/plugins/shared/embeddable_enhanced/jest.config.js:10
x-pack/platform/plugins/shared/embeddable_enhanced/tsconfig.json:2
x-pack/platform/plugins/shared/maps/jest.config.js:10
x-pack/platform/plugins/shared/maps/public/_main.scss:1
x-pack/platform/plugins/shared/maps/tsconfig.json:12
x-pack/platform/plugins/shared/maps/tsconfig.json:2
```

</details>

---------

Co-authored-by: Nick Peihl <nick.peihl@elastic.co>
Co-authored-by: Michael Dokolin <mikhail.dokolin@elastic.co>
2024-12-23 12:32:11 -06:00

119 lines
No EOL
4.4 KiB
Text

[[development-tests]]
== Testing
[discrete]
=== Running specific {kib} tests
The following table outlines possible test file locations and how to
invoke them:
[width="100%",cols="7%,59%,34%",options="header",]
|===
|Test runner |Test location |Runner command (working directory is {kib}
root)
|Jest |`**/*.test.{js,mjs,ts,tsx}`
|`yarn test:jest [test path]`
|Jest (integration) |`**/integration_tests/**/*.test.{js,mjs,ts,tsx}`
|`yarn test:jest_integration [test path]`
|Functional
|`test/**/config.js` `x-pack/test/**/config.js`
|`node scripts/functional_tests_server --config [directory]/config.js` `node scripts/functional_test_runner --config [directory]/config.js --grep=regexp`
|===
Test runner arguments: - Where applicable, the optional arguments
`--grep=regexp` will only run tests or test suites
whose descriptions matches the regular expression. - `[test path]` is
the relative path to the test file.
=== Unit Testing
Kibana primarily uses Jest for unit testing. Each plugin or package defines a `jest.config.js` that extends link:{kib-repo}tree/{branch}/packages/kbn-test/jest-preset.js[a preset] provided by the link:{kib-repo}tree/{branch}/packages/kbn-test[`@kbn/test`] package. Unless you intend to run all unit tests within the project, it's most efficient to provide the Jest configuration file for the plugin or package you're testing.
[source,bash]
----
yarn jest --config src/platform/plugins/shared/dashboard/jest.config.js
----
A script is available to provide a better user experience when testing while navigating throughout the repository. To run the tests within your current working directory, use `yarn test:jest`. Like the Jest CLI, you can also supply a path to determine which tests to run.
[source,bash]
----
kibana/src/platform/plugins/shared/dashboard/server$ yarn test:jest #or
kibana/src/platform/plugins/shared/dashboard$ yarn test:jest server #or
kibana$ yarn test:jest src/platform/plugins/shared/dashboard/server
----
Any additional options supplied to `test:jest` will be passed onto the Jest CLI with the resulting Jest command always being outputted.
[source,bash]
----
kibana/src/platform/plugins/shared/dashboard/server$ yarn test:jest --coverage
# is equivalent to
yarn jest --coverage --verbose --config /home/tyler/elastic/kibana/src/platform/plugins/shared/dashboard/jest.config.js server
----
You can generate code coverage report for a single plugin.
[source,bash]
----
yarn jest --coverage --config src/platform/plugins/shared/console/jest.config.js
----
Html report is available in target/kibana-coverage/jest/path/to/plugin
[discrete]
=== Running browser automation tests
Check out <<development-functional-tests>> to learn more about how you can run
and develop functional tests for {kib} core and plugins.
You can also look into the {kib-repo}tree/{branch}/scripts/README.md[Scripts README.md]
to learn more about using the node scripts we provide for building
{kib}, running integration tests, and starting up {kib} and
{es} while you develop.
[discrete]
==== More testing information:
* <<development-functional-tests>>
* <<development-unit-tests>>
* <<development-accessibility-tests>>
* <<development-package-tests>>
include::development-functional-tests.asciidoc[leveloffset=+1]
include::development-unit-tests.asciidoc[leveloffset=+1]
include::development-accessibility-tests.asciidoc[leveloffset=+1]
include::development-package-tests.asciidoc[leveloffset=+1]
[discrete]
=== Cross-browser compatibility
**Testing IE on OS X**
**Note:** IE11 is not supported from 7.9 onwards.
* http://www.vmware.com/products/fusion/fusion-evaluation.html[Download
VMWare Fusion].
* https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/#downloads[Download
IE virtual machines] for VMWare.
* Open VMWare and go to Window > Virtual Machine Library. Unzip the
virtual machine and drag the .vmx file into your Virtual Machine
Library.
* Right-click on the virtual machine you just added to your library and
select "`Snapshots…`", and then click the "`Take`" button in the modal
that opens. You can roll back to this snapshot when the VM expires in 90
days.
* In System Preferences > Sharing, change your computer name to be
something simple, e.g. "`computer`".
* Run {kib} with `yarn start --host=computer.local` (substituting
your computer name).
* Now you can run your VM, open the browser, and navigate to
`http://computer.local:5601` to test {kib}.
* Alternatively you can use browserstack