mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
## Summary Part of https://github.com/elastic/kibana-team/issues/1503 This is a first step towards the relocation of all the Kibana tests. The `/test/` folder at the root, which is in itself a package (`@kbn/test-suites-src`), and contains a large number of tests and test plugins, is being relocated under `src/platform/test`. All the tests under this folder should be related to common platform features, and they should not have any dependency towards solution-specific components or features. <details > <summary>Updated relative paths</summary> ``` src/platform/test/analytics/plugins/analytics_ftr_helpers/jest.config.js:12 src/platform/test/analytics/plugins/analytics_ftr_helpers/package.json:10 src/platform/test/analytics/plugins/analytics_ftr_helpers/package.json:11 src/platform/test/analytics/plugins/analytics_ftr_helpers/tsconfig.json:11 src/platform/test/analytics/plugins/analytics_ftr_helpers/tsconfig.json:2 src/platform/test/analytics/plugins/analytics_plugin_a/package.json:10 src/platform/test/analytics/plugins/analytics_plugin_a/package.json:11 src/platform/test/analytics/plugins/analytics_plugin_a/tsconfig.json:10 src/platform/test/analytics/plugins/analytics_plugin_a/tsconfig.json:2 src/platform/test/api_integration/jest.config.js:12 src/platform/test/common/plugins/newsfeed/tsconfig.json:2 src/platform/test/common/plugins/otel_metrics/tsconfig.json:2 src/platform/test/functional/jest.config.js:12 src/platform/test/harden/child_process.js:13 src/platform/test/harden/lodash_template.js:13 src/platform/test/harden/prototype.js:10 src/platform/test/health_gateway/plugins/status/tsconfig.json:2 src/platform/test/interactive_setup_api_integration/plugins/test_endpoints/tsconfig.json:2 src/platform/test/interpreter_functional/plugins/kbn_tp_run_pipeline/package.json:11 src/platform/test/interpreter_functional/plugins/kbn_tp_run_pipeline/package.json:12 src/platform/test/interpreter_functional/plugins/kbn_tp_run_pipeline/tsconfig.json:11 src/platform/test/interpreter_functional/plugins/kbn_tp_run_pipeline/tsconfig.json:2 src/platform/test/node_roles_functional/plugins/core_plugin_initializer_context/package.json:11 src/platform/test/node_roles_functional/plugins/core_plugin_initializer_context/package.json:12 src/platform/test/node_roles_functional/plugins/core_plugin_initializer_context/tsconfig.json:2 src/platform/test/node_roles_functional/plugins/core_plugin_initializer_context/tsconfig.json:9 src/platform/test/package/Vagrantfile:2 src/platform/test/plugin_functional/README.md:40 src/platform/test/plugin_functional/plugins/app_link_test/package.json:11 src/platform/test/plugin_functional/plugins/app_link_test/package.json:12 src/platform/test/plugin_functional/plugins/app_link_test/tsconfig.json:10 src/platform/test/plugin_functional/plugins/app_link_test/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_app_status/package.json:11 src/platform/test/plugin_functional/plugins/core_app_status/package.json:12 src/platform/test/plugin_functional/plugins/core_app_status/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_app_status/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_a/package.json:11 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_a/package.json:12 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_a/tsconfig.json:11 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_a/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_b/package.json:11 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_b/package.json:12 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_b/tsconfig.json:11 src/platform/test/plugin_functional/plugins/core_dynamic_resolving_b/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_history_block/package.json:11 src/platform/test/plugin_functional/plugins/core_history_block/package.json:12 src/platform/test/plugin_functional/plugins/core_history_block/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_history_block/tsconfig.json:6 src/platform/test/plugin_functional/plugins/core_http/package.json:11 src/platform/test/plugin_functional/plugins/core_http/package.json:12 src/platform/test/plugin_functional/plugins/core_http/tsconfig.json:11 src/platform/test/plugin_functional/plugins/core_http/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_a/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_a/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_a/tsconfig.json:11 src/platform/test/plugin_functional/plugins/core_plugin_a/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_appleave/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_appleave/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_appleave/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_plugin_appleave/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_b/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_b/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_b/tsconfig.json:11 src/platform/test/plugin_functional/plugins/core_plugin_b/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_chromeless/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_chromeless/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_chromeless/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_plugin_chromeless/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_deep_links/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_deep_links/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_deep_links/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_plugin_deep_links/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_deprecations/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_deprecations/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_deprecations/tsconfig.json:11 src/platform/test/plugin_functional/plugins/core_plugin_deprecations/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_execution_context/package.json:10 src/platform/test/plugin_functional/plugins/core_plugin_execution_context/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_execution_context/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_helpmenu/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_helpmenu/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_plugin_helpmenu/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_route_timeouts/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_route_timeouts/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_route_timeouts/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_plugin_route_timeouts/tsconfig.json:8 src/platform/test/plugin_functional/plugins/core_plugin_static_assets/package.json:11 src/platform/test/plugin_functional/plugins/core_plugin_static_assets/package.json:12 src/platform/test/plugin_functional/plugins/core_plugin_static_assets/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_plugin_static_assets/tsconfig.json:2 src/platform/test/plugin_functional/plugins/core_provider_plugin/package.json:11 src/platform/test/plugin_functional/plugins/core_provider_plugin/package.json:12 src/platform/test/plugin_functional/plugins/core_provider_plugin/tsconfig.json:10 src/platform/test/plugin_functional/plugins/core_provider_plugin/tsconfig.json:2 src/platform/test/plugin_functional/plugins/data_search/package.json:10 src/platform/test/plugin_functional/plugins/data_search/package.json:9 src/platform/test/plugin_functional/plugins/data_search/tsconfig.json:2 src/platform/test/plugin_functional/plugins/data_search/tsconfig.json:8 src/platform/test/plugin_functional/plugins/elasticsearch_client_plugin/package.json:10 src/platform/test/plugin_functional/plugins/elasticsearch_client_plugin/package.json:9 src/platform/test/plugin_functional/plugins/elasticsearch_client_plugin/tsconfig.json:2 src/platform/test/plugin_functional/plugins/elasticsearch_client_plugin/tsconfig.json:8 src/platform/test/plugin_functional/plugins/eui_provider_dev_warning/package.json:11 src/platform/test/plugin_functional/plugins/eui_provider_dev_warning/package.json:12 src/platform/test/plugin_functional/plugins/eui_provider_dev_warning/tsconfig.json:10 src/platform/test/plugin_functional/plugins/eui_provider_dev_warning/tsconfig.json:2 src/platform/test/plugin_functional/plugins/hardening/package.json:11 src/platform/test/plugin_functional/plugins/hardening/package.json:12 src/platform/test/plugin_functional/plugins/hardening/tsconfig.json:12 src/platform/test/plugin_functional/plugins/hardening/tsconfig.json:2 src/platform/test/plugin_functional/plugins/index_patterns/package.json:11 src/platform/test/plugin_functional/plugins/index_patterns/package.json:12 src/platform/test/plugin_functional/plugins/index_patterns/tsconfig.json:10 src/platform/test/plugin_functional/plugins/index_patterns/tsconfig.json:2 src/platform/test/plugin_functional/plugins/kbn_sample_panel_action/package.json:11 src/platform/test/plugin_functional/plugins/kbn_sample_panel_action/package.json:12 src/platform/test/plugin_functional/plugins/kbn_sample_panel_action/tsconfig.json:10 src/platform/test/plugin_functional/plugins/kbn_sample_panel_action/tsconfig.json:2 src/platform/test/plugin_functional/plugins/kbn_top_nav/package.json:11 src/platform/test/plugin_functional/plugins/kbn_top_nav/package.json:12 src/platform/test/plugin_functional/plugins/kbn_top_nav/tsconfig.json:11 src/platform/test/plugin_functional/plugins/kbn_top_nav/tsconfig.json:2 src/platform/test/plugin_functional/plugins/kbn_tp_custom_visualizations/package.json:11 src/platform/test/plugin_functional/plugins/kbn_tp_custom_visualizations/package.json:12 src/platform/test/plugin_functional/plugins/kbn_tp_custom_visualizations/tsconfig.json:10 src/platform/test/plugin_functional/plugins/kbn_tp_custom_visualizations/tsconfig.json:2 src/platform/test/plugin_functional/plugins/management_test_plugin/package.json:11 src/platform/test/plugin_functional/plugins/management_test_plugin/package.json:12 src/platform/test/plugin_functional/plugins/management_test_plugin/tsconfig.json:10 src/platform/test/plugin_functional/plugins/management_test_plugin/tsconfig.json:2 src/platform/test/plugin_functional/plugins/rendering_plugin/package.json:11 src/platform/test/plugin_functional/plugins/rendering_plugin/package.json:12 src/platform/test/plugin_functional/plugins/rendering_plugin/tsconfig.json:11 src/platform/test/plugin_functional/plugins/rendering_plugin/tsconfig.json:2 src/platform/test/plugin_functional/plugins/saved_object_export_transforms/package.json:11 src/platform/test/plugin_functional/plugins/saved_object_export_transforms/package.json:12 src/platform/test/plugin_functional/plugins/saved_object_export_transforms/tsconfig.json:2 src/platform/test/plugin_functional/plugins/saved_object_export_transforms/tsconfig.json:9 src/platform/test/plugin_functional/plugins/saved_object_import_warnings/package.json:11 src/platform/test/plugin_functional/plugins/saved_object_import_warnings/package.json:12 src/platform/test/plugin_functional/plugins/saved_object_import_warnings/tsconfig.json:11 src/platform/test/plugin_functional/plugins/saved_object_import_warnings/tsconfig.json:2 src/platform/test/plugin_functional/plugins/saved_objects_hidden_from_http_apis_type/package.json:11 src/platform/test/plugin_functional/plugins/saved_objects_hidden_from_http_apis_type/package.json:12 src/platform/test/plugin_functional/plugins/saved_objects_hidden_from_http_apis_type/tsconfig.json:2 src/platform/test/plugin_functional/plugins/saved_objects_hidden_from_http_apis_type/tsconfig.json:9 src/platform/test/plugin_functional/plugins/saved_objects_hidden_type/package.json:11 src/platform/test/plugin_functional/plugins/saved_objects_hidden_type/package.json:12 src/platform/test/plugin_functional/plugins/saved_objects_hidden_type/tsconfig.json:2 src/platform/test/plugin_functional/plugins/saved_objects_hidden_type/tsconfig.json:9 src/platform/test/plugin_functional/plugins/session_notifications/package.json:11 src/platform/test/plugin_functional/plugins/session_notifications/package.json:12 src/platform/test/plugin_functional/plugins/session_notifications/tsconfig.json:11 src/platform/test/plugin_functional/plugins/session_notifications/tsconfig.json:2 src/platform/test/plugin_functional/plugins/telemetry/package.json:11 src/platform/test/plugin_functional/plugins/telemetry/package.json:12 src/platform/test/plugin_functional/plugins/telemetry/tsconfig.json:2 src/platform/test/plugin_functional/plugins/telemetry/tsconfig.json:6 src/platform/test/plugin_functional/plugins/ui_settings_plugin/package.json:11 src/platform/test/plugin_functional/plugins/ui_settings_plugin/package.json:12 src/platform/test/plugin_functional/plugins/ui_settings_plugin/tsconfig.json:2 src/platform/test/plugin_functional/plugins/ui_settings_plugin/tsconfig.json:8 src/platform/test/plugin_functional/plugins/usage_collection/package.json:11 src/platform/test/plugin_functional/plugins/usage_collection/package.json:12 src/platform/test/plugin_functional/plugins/usage_collection/tsconfig.json:11 src/platform/test/plugin_functional/plugins/usage_collection/tsconfig.json:2 src/platform/test/server_integration/plugins/status_plugin_a/package.json:10 src/platform/test/server_integration/plugins/status_plugin_a/package.json:11 src/platform/test/server_integration/plugins/status_plugin_a/tsconfig.json:2 src/platform/test/server_integration/plugins/status_plugin_a/tsconfig.json:9 src/platform/test/server_integration/plugins/status_plugin_b/package.json:10 src/platform/test/server_integration/plugins/status_plugin_b/package.json:11 src/platform/test/server_integration/plugins/status_plugin_b/tsconfig.json:2 src/platform/test/server_integration/plugins/status_plugin_b/tsconfig.json:9 ``` </details> --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
85 lines
3 KiB
Markdown
85 lines
3 KiB
Markdown
---
|
||
mapped_pages:
|
||
- https://www.elastic.co/guide/en/kibana/current/external-plugin-functional-tests.html
|
||
---
|
||
|
||
# Functional Tests for Plugins outside the Kibana repo [external-plugin-functional-tests]
|
||
|
||
Plugins use the `FunctionalTestRunner` by running it out of the {{kib}} repo. Ensure that your {{kib}} Development Environment is setup properly before continuing.
|
||
|
||
|
||
## Writing your own configuration [_writing_your_own_configuration]
|
||
|
||
Every project or plugin should have its own `FunctionalTestRunner` config file. Just like {{kib}}'s, this config file will define all of the test files to load, providers for Services and PageObjects, as well as configuration options for certain services.
|
||
|
||
To get started copy and paste this example to `src/platform/test/functional/config.js`:
|
||
|
||
```js
|
||
import { resolve } from 'path';
|
||
import { REPO_ROOT } from '@kbn/utils';
|
||
|
||
import { MyServiceProvider } from './services/my_service';
|
||
import { MyAppPageProvider } from './services/my_app_page';
|
||
|
||
// the default export of config files must be a config provider
|
||
// that returns an object with the projects config values
|
||
export default async function ({ readConfigFile }) {
|
||
|
||
// read the {kib} config file so that we can utilize some of
|
||
// its services and PageObjects
|
||
const kibanaConfig = await readConfigFile(resolve(REPO_ROOT, 'src/platform/test/functional/config.base.js'));
|
||
|
||
return {
|
||
// list paths to the files that contain your plugins tests
|
||
testFiles: [
|
||
resolve(__dirname, './my_test_file.js'),
|
||
],
|
||
|
||
// define the name and providers for services that should be
|
||
// available to your tests. If you don't specify anything here
|
||
// only the built-in services will be available
|
||
services: {
|
||
...kibanaConfig.get('services'),
|
||
myService: MyServiceProvider,
|
||
},
|
||
|
||
// just like services, PageObjects are defined as a map of
|
||
// names to Providers. Merge in {kib}'s or pick specific ones
|
||
pageObjects: {
|
||
management: kibanaConfig.get('pageObjects.management'),
|
||
myApp: MyAppPageProvider,
|
||
},
|
||
|
||
// the apps section defines the urls that
|
||
// `PageObjects.common.navigateTo(appKey)` will use.
|
||
// Merge urls for your plugin with the urls defined in
|
||
// {kib}'s config in order to use this helper
|
||
apps: {
|
||
...kibanaConfig.get('apps'),
|
||
myApp: {
|
||
pathname: '/app/my_app',
|
||
}
|
||
},
|
||
|
||
// choose where screenshots should be saved
|
||
screenshots: {
|
||
directory: resolve(__dirname, './tmp/screenshots'),
|
||
}
|
||
|
||
// more settings, like timeouts, mochaOpts, etc are
|
||
// defined in the config schema.
|
||
// See {kibana-blob}packages/kbn-test/src/functional_test_runner/lib/config/schema.ts
|
||
};
|
||
}
|
||
```
|
||
|
||
From the root of your repo you should now be able to run the `FunctionalTestRunner` script from your plugin project.
|
||
|
||
```shell
|
||
node ../../kibana/scripts/functional_test_runner
|
||
```
|
||
|
||
|
||
## Using esArchiver [_using_esarchiver]
|
||
|
||
We’re working on documentation for this, but for now the best place to look is the original [pull request](https://github.com/elastic/kibana/issues/10359).
|