mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 10:23:14 -04:00
* [ftr] automatically determine config run order * split lens config into two groups * support ftr configs always running against CI * Split detection_engine_api_integration rule exception list tests * Add configs from previous commit * [ftr] remove testMetadata and maintain a unique lifecycle instance per run * Revert "[ftr] remove testMetadata and maintain a unique lifecycle instance per run" This reverts commitd2b4fdb824
. * Split alerting_api_integration/security_and_spaces tests * Add groups to yaml * Revert "Revert "[ftr] remove testMetadata and maintain a unique lifecycle instance per run"" This reverts commit56232eea68
. * stop ES more forcefully and fix timeout * only cleanup lifecycle phases when the cleanup is totally complete * only use kill when cleaning up an esTestInstance * fix broken import * fix runOptions.alwaysUseSource implementation * fix config access * fix x-pack/ccs config * fix ml import file paths * update kibana build id * revert array.concat() change * fix baseConfig usage * fix pie chart data * split up maps tests * pull in all of group5 so that es archives are loaded correctly * add to ftr configs.yml * fix pie chart data without breaking legacy version * fix more pie_chart stuff in new vis lib * restore normal PR tasks * bump kibana-buildkite-library * remove ciGroup validation * remove the script which is no longer called from checks.sh * [CI] Auto-commit changed files from 'yarn kbn run build -i @kbn/pm' * adapt flaky test runner scripts to handle ftrConfig paths * fix types in alerting_api_integration * improve flaky config parsing and use non-local var name for passing explicit configs to ftr_configs.sh * Split xpack dashboard tests * Add configs * [flaky] remove key from ftr-config steps * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * restore cypress builds * remove ciGroups from FTR config files * fixup some docs * add temporary script to hunt for FTR config files * use config.base.js naming for clarity * use script to power ftr_configs.yml * remove usage of removed x-pack/scripts/functional_tests * fix test names in dashboard snapshots * bump kibana-buildkite-library * Try retrying only failed configs * be a little quieter about trying to get testStats from configs with testRunners defined * Remove test code * bump kibana-buildkite-library * update es_snapshot and on_merge jobs too * track duration and exit code for each config and print it at the end of the script * store results in order, rather than by key, in case there are duplicates in $config * bash is hard * fix env source and use +e rather than disabling e for whole file * bash sucks * print config summary in jest jobs too * define results in jest_parallel.sh * simplify config summary print, format times a little better * fix reference to unbound time variable, use better variable name * skip the newline between each result * finish with the nitpicking * sync changes with ftr_configs.sh * refuse to execute config files which aren't listed in the .buildkite/ftr_configs.yml * fix config.edge.js base config import paths * fix some readmes * resolve paths from ftr_configs manifest * fix readConfigFile tests * just allow __fixtures__ configs * list a few more cypress config files * install the main branch of kibana-buildkite-library * split up lens group1 * move ml data_visualizer tests to their own config * fix import paths * fix more imports * install specific commit of buildkite-pipeline-library * sort configs in ftr_configs.yml * bump kibana-buildkite-library * remove temporary script * fix env var for limiting config types * Update docs/developer/contributing/development-functional-tests.asciidoc Co-authored-by: Christiane (Tina) Heiligers <christiane.heiligers@elastic.co> * produce a JUnit report for saved objects field count * apply standard concurrency limits from flaky test runner * support customizing FTR concurrency via the env Co-authored-by: Brian Seeders <brian.seeders@elastic.co> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Christiane (Tina) Heiligers <christiane.heiligers@elastic.co>
84 lines
2.9 KiB
Text
84 lines
2.9 KiB
Text
[[external-plugin-functional-tests]]
|
|
== Functional Tests for Plugins outside the {kib} repo
|
|
|
|
Plugins use the `FunctionalTestRunner` by running it out of the {kib} repo. Ensure that your {kib} Development Environment is setup properly before continuing.
|
|
|
|
[discrete]
|
|
=== 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 `test/functional/config.js`:
|
|
|
|
["source","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, '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 {blob}src/functional_test_runner/lib/config/schema.js[src/functional_test_runner/lib/config/schema.js]
|
|
};
|
|
}
|
|
|
|
-----------
|
|
|
|
From the root of your repo you should now be able to run the `FunctionalTestRunner` script from your plugin project.
|
|
|
|
["source","shell"]
|
|
-----------
|
|
node ../../kibana/scripts/functional_test_runner
|
|
-----------
|
|
|
|
[discrete]
|
|
=== Using esArchiver
|
|
|
|
We're working on documentation for this, but for now the best place to look is the original {kib-repo}/issues/10359[pull request].
|
|
|