diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 96cd04fc59c62..c0d6b07ab99d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -303,19 +303,36 @@ macOS users on a machine with a discrete graphics card may see significant speed `yarn debug` will start the server with Node's inspect flag. Kibana's development mode will start three processes on ports `9229`, `9230`, and `9231`. Chrome's developer tools need to be configured to connect to all three connections. Add `localhost:` for each Kibana process in Chrome's developer tools connection tab. ### Unit testing frameworks -Kibana is migrating unit testing from Mocha to Jest. Legacy unit tests still exist in Mocha but all new unit tests should be written in Jest. - -#### Mocha (legacy) -Mocha tests are contained in `__tests__` directories. - -#### Jest -Jest tests are stored in the same directory as source code files with the `.test.js` suffix. - -### Running Jest Unit Tests - -```bash -node scripts/jest -``` +Kibana is migrating unit testing from Mocha to Jest. Legacy unit tests still +exist in Mocha but all new unit tests should be written in Jest. Mocha tests +are contained in `__tests__` directories. Whereas Jest tests are stored in +the same directory as source code files with the `.test.js` suffix. + +### Running specific Kibana tests + +The following table outlines possible test file locations and how to invoke them: + +| Test runner | Test location | Runner command (working directory is kibana root) | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| Jest | `src/**/*.test.js`
`src/**/*.test.ts` | `node scripts/jest -t regexp [test path]` | +| Jest (integration) | `**/integration_tests/**/*.test.js` | `node scripts/jest_integration -t regexp [test path]` | +| Mocha | `src/**/__tests__/**/*.js`
`packages/kbn-datemath/test/**/*.js`
`packages/kbn-dev-utils/src/**/__tests__/**/*.js`
`tasks/**/__tests__/**/*.js` | `node scripts/mocha --grep=regexp [test path]` | +| Functional | `test/*integration/**/config.js`
`test/*functional/**/config.js` | `node scripts/functional_tests_server --config test/[directory]/config.js`
`node scripts/functional_test_runner --config test/[directory]/config.js --grep=regexp` | + +For X-Pack tests located in `x-pack/` see [X-Pack Testing](x-pack/README.md#testing) + +Test runner arguments: + - Where applicable, the optional arguments `-t=regexp` or `--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. + + Examples: + - Run the entire elasticsearch_service test suite with yarn: + `node scripts/jest src/core/server/elasticsearch/elasticsearch_service.test.ts` + - Run the jest test case whose description matches 'stops both admin and data clients': + `node scripts/jest -t 'stops both admin and data clients' src/core/server/elasticsearch/elasticsearch_service.test.ts` + - Run the api integration test case whose description matches the given string: + `node scripts/functional_tests_server --config test/api_integration/config.js` + `node scripts/functional_tests_runner --config test/api_integration/config.js --grep='should return 404 if id does not match any sample data sets'` ### Debugging Unit Tests diff --git a/x-pack/README.md b/x-pack/README.md index c8faf8a6a0005..eb4e44e42d5a0 100644 --- a/x-pack/README.md +++ b/x-pack/README.md @@ -13,8 +13,22 @@ Elasticsearch will run with a basic license. To run with a trial license, includ Example: `yarn es snapshot --license trial --password changeme` # Testing +## Running specific tests +| Test runner | Test location | Runner command (working directory is kibana/x-pack) | +| ------------ | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| Jest | `x-pack/**/*.test.js`
`x-pack/**/*.test.ts` | `cd x-pack && node scripts/jest -t regexp [test path]` | +| Functional | `x-pack/test/*integration/**/config.js`
`x-pack/test/*functional/config.js` | `node scripts/functional_tests_server --config x-pack/test/[directory]/config.js`
`node scripts/functional_test_runner --config x-pack/test/[directory]/config.js --grep=regexp` | -## Running unit tests_bundle +Examples: + - Run the jest test case whose description matches 'filtering should skip values of null': + `cd x-pack && yarn test:jest -t 'filtering should skip values of null' plugins/ml/public/explorer/explorer_charts/explorer_charts_container_service.test.js` + - Run the x-pack api integration test case whose description matches the given string: + `node scripts/functional_tests_server --config x-pack/test/api_integration/config.js` + `node scripts/functional_test_runner --config x-pack/test/api_integration/config.js --grep='apis Monitoring Beats list with restarted beat instance should load multiple clusters'` + +In addition to to providing a regular expression argument, specific tests can also be run by appeding `.only` to an `it` or `describe` function block. E.g. `describe(` to `describe.only(`. + +## Running all tests You can run unit tests by running: @@ -28,15 +42,6 @@ If you want to run tests only for a specific plugin (to save some time), you can yarn test --plugins [,]* # where is "reporting", etc. ``` -#### Running single test file -Edit test file, changing top level `describe` to `describe.only`. Run tests with normal commands. - -#### Running Jest Unit Tests -```bash -# from x-pack folder -node scripts/jest -``` - #### Debugging browser tests ``` yarn test:browser:dev