git clone git@github.com:elastic/kibana.git
cd kibana/
yarn kbn bootstrap
yarn start --no-base-path
To access an elasticsearch instance that has live data you have two options:
Find the credentials for the cluster here
git clone git@github.com:elastic/apm-integration-testing.git
cd apm-integration-testing/
./scripts/compose.py start master --all --no-kibana
Docker Compose is required
node x-pack/plugins/apm/scripts/ftr_e2e/cypress_run.js
Starts Kibana (:5701), APM Server (:8201) and Elasticsearch (:9201). Ingests sample data into Elasticsearch via APM Server and runs the Cypress tests
Note: Run the following commands from kibana/x-pack/plugins/apm
.
npx jest --watch
npx jest --updateSnapshot
HTML coverage report can be found in target/coverage/jest after tests have run.
open target/coverage/jest/index.html
Start server
node scripts/functional_tests_server --config x-pack/test/functional/config.js
Run tests
node scripts/functional_test_runner --config x-pack/test/functional/config.js --grep='APM specs'
APM tests are located in x-pack/test/functional/apps/apm
.
For debugging access Elasticsearch on http://localhost:9220` (elastic/changeme)
API tests are separated in two suites:
- a basic license test suite
- a trial license test suite (the equivalent of gold+)
This requires separate test servers and test runners.
Basic
# Start server
node scripts/functional_tests_server --config x-pack/test/apm_api_integration/basic/config.ts
# Run tests
node scripts/functional_test_runner --config x-pack/test/apm_api_integration/basic/config.ts
The API tests for "basic" are located in x-pack/test/apm_api_integration/basic/tests
.
Trial
# Start server
node scripts/functional_tests_server --config x-pack/test/apm_api_integration/trial/config.ts
# Run tests
node scripts/functional_test_runner --config x-pack/test/apm_api_integration/trial/config.ts
The API tests for "trial" are located in x-pack/test/apm_api_integration/trial/tests
.
API Test tips
- For debugging access Elasticsearch on http://localhost:9220` (elastic/changeme)
- To update snapshots append
--updateSnapshots
to the functional_test_runner command
Note: Run the following commands from kibana/
.
yarn tsc --noEmit --emitDeclarationOnly false --project x-pack/plugins/apm/tsconfig.json --skipLibCheck
yarn prettier "./x-pack/plugins/apm/**/*.{tsx,ts,js}" --write
yarn eslint ./x-pack/plugins/apm --fix
APM behaves differently depending on which the role and permissions a logged in user has. For testing purposes APM uses 3 custom users:
apm_read_user: Apps: read. Indices: read (apm-*
)
apm_write_user: Apps: read/write. Indices: read (apm-*
)
kibana_write_user Apps: read/write. Indices: None
To create the users with the correct roles run the following script:
node x-pack/plugins/apm/scripts/setup-kibana-security.js --role-suffix <github-username-or-something-unique>
The users will be created with the password specified in kibana.dev.yml for elasticsearch.password
All APM api endpoints accept _debug=true
as a query param that will result in the underlying ES query being outputted in the Kibana backend process.
Example:
/api/apm/services/my_service?_debug=true
Start the Storybook development environment with
yarn storybook apm
. All files with a .stories.tsx extension will be loaded.
You can access the development environment at http://localhost:9001.
To set up a flagged feature, add the name of the feature key (apm:myFeature
) to commmon/ui_settings_keys.ts and the feature parameters to server/ui_settings.ts.
Test for the feature like:
import { myFeatureEnabled } from '../ui_settings_keys';
if (core.uiSettings.get(myFeatureEnabled)) {
doStuff();
}
Settings can be managed in Kibana under Stack Management > Advanced Settings > Observability.