[APM] FTR with Cypress (#88142)

* usgin esarchive to load e2e

* using esarchive to load e2e

* using esarchive to load e2e

* using esarchive to load e2e

* using esarchive to load e2e

* chaning archiver script to copy file to both e2e and api tests

* chaning archiver script to copy file to both e2e and api tests

* removing task folder

* running e2e through script

* using cy.clock to set now

* adding basic test

* adding cypress run script

* adding cypress run script

* fixing some stuff

* excluding new e2e dir

* adding new project for new e2e dir

* adding new project for new e2e dir

* unformatting file

* adding unit tests

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Cauê Marcondes 2021-01-20 12:54:12 +01:00 committed by GitHub
parent fc9da67d39
commit 7e1549d889
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
45 changed files with 22892 additions and 86 deletions

View file

@ -24,6 +24,10 @@ export const PROJECTS = [
name: 'apm/cypress',
disableTypeCheck: true,
}),
new Project(resolve(REPO_ROOT, 'x-pack/plugins/apm/ftr_e2e/tsconfig.json'), {
name: 'apm/ftr_e2e',
disableTypeCheck: true,
}),
new Project(resolve(REPO_ROOT, 'x-pack/plugins/apm/scripts/tsconfig.json'), {
name: 'apm/scripts',
disableTypeCheck: true,

View file

@ -0,0 +1,50 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { resolve } from 'path';
import { FtrConfigProviderContext } from '@kbn/test/types/ftr';
import { CA_CERT_PATH } from '@kbn/dev-utils';
async function config({ readConfigFile }: FtrConfigProviderContext) {
const kibanaCommonTestsConfig = await readConfigFile(
require.resolve('../../../../test/common/config.js')
);
const xpackFunctionalTestsConfig = await readConfigFile(
require.resolve('../../../test/functional/config.js')
);
return {
...kibanaCommonTestsConfig.getAll(),
esArchiver: {
directory: resolve(__dirname, 'cypress/fixtures/es_archiver'),
},
esTestCluster: {
...xpackFunctionalTestsConfig.get('esTestCluster'),
serverArgs: [
...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'),
// define custom es server here
// API Keys is enabled at the top level
'xpack.security.enabled=true',
],
},
kbnTestServer: {
...xpackFunctionalTestsConfig.get('kbnTestServer'),
serverArgs: [
...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'),
'--csp.strict=false',
// define custom kibana server args here
`--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`,
],
},
};
}
// eslint-disable-next-line import/no-default-export
export default config;

View file

@ -0,0 +1,16 @@
{
"fileServerFolder": "./cypress",
"fixturesFolder": "./cypress/fixtures",
"integrationFolder": "./cypress/integration",
"pluginsFile": "./cypress/plugins/index.js",
"screenshotsFolder": "./cypress/screenshots",
"supportFile": "./cypress/support/index.js",
"videosFolder": "./cypress/videos",
"defaultCommandTimeout": 30000,
"execTimeout": 120000,
"pageLoadTimeout": 120000,
"viewportHeight": 900,
"viewportWidth": 1440,
"video": false,
"screenshotOnRunFailure": false
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,13 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
/* eslint-disable import/no-default-export*/
export default {
'apm_8.0.0': {
start: '2020-12-08T13:57:56.135Z',
end: '2020-12-08T14:27:56.135Z',
},
};

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
describe('Home page', () => {
it('Redirects to service page with rangeFrom and rangeTo added to the URL', () => {
const endDate = new Date(Cypress.env('END_DATE'));
cy.clock(endDate);
cy.visit('/app/apm');
cy.url().should(
'include',
'app/apm/services?rangeFrom=now-15m&rangeTo=now'
);
cy.get('.euiTabs .euiTab-isSelected').contains('Services');
});
});

View file

@ -0,0 +1,27 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
module.exports = () => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
};

View file

@ -0,0 +1,31 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add("login", (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })

View file

@ -0,0 +1,26 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands';
// Alternatively you can use CommonJS syntax:
// require('./commands')

View file

@ -0,0 +1,19 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { FtrConfigProviderContext } from '@kbn/test/types/ftr';
import { cypressOpenTests } from './cypress_start';
async function openE2ETests({ readConfigFile }: FtrConfigProviderContext) {
const cypressConfig = await readConfigFile(require.resolve('./config.ts'));
return {
...cypressConfig.getAll(),
testRunner: cypressOpenTests,
};
}
// eslint-disable-next-line import/no-default-export
export default openE2ETests;

View file

@ -0,0 +1,19 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { FtrConfigProviderContext } from '@kbn/test/types/ftr';
import { cypressRunTests } from './cypress_start';
async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) {
const cypressConfig = await readConfigFile(require.resolve('./config.ts'));
return {
...cypressConfig.getAll(),
testRunner: cypressRunTests,
};
}
// eslint-disable-next-line import/no-default-export
export default runE2ETests;

View file

@ -0,0 +1,39 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import Url from 'url';
import cypress from 'cypress';
import { FtrProviderContext } from './ftr_provider_context';
import archives_metadata from './cypress/fixtures/es_archiver/archives_metadata';
export async function cypressRunTests({ getService }: FtrProviderContext) {
await cypressStart(getService, cypress.run);
}
export async function cypressOpenTests({ getService }: FtrProviderContext) {
await cypressStart(getService, cypress.open);
}
async function cypressStart(
getService: FtrProviderContext['getService'],
cypressExecution: typeof cypress.run | typeof cypress.open
) {
const config = getService('config');
const esArchiver = getService('esArchiver');
const archiveName = 'apm_8.0.0';
// Load apm data on ES
await esArchiver.load(archiveName);
const { start, end } = archives_metadata[archiveName];
await cypressExecution({
config: { baseUrl: Url.format(config.get('servers.kibana')) },
env: {
START_DATE: start,
END_DATE: end,
},
});
}

View file

@ -0,0 +1,11 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { GenericFtrProviderContext } from '@kbn/test/types/ftr';
import { services } from './services';
export type FtrProviderContext = GenericFtrProviderContext<typeof services, {}>;

View file

@ -0,0 +1,7 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
export * from '../../../test/common/services';

View file

@ -0,0 +1,15 @@
{
"extends": "../../../../tsconfig.base.json",
"exclude": [
"tmp"
],
"include": [
"./**/*"
],
"compilerOptions": {
"types": [
"cypress",
"node"
]
}
}

View file

@ -121,8 +121,6 @@ async function run() {
};
const root = path.join(__dirname, '../../../../..');
const commonDir = path.join(root, 'x-pack/test/apm_api_integration/common');
const archivesDir = path.join(commonDir, 'fixtures/es_archiver');
const options = parseIndexUrl(esUrl);
@ -154,14 +152,14 @@ async function run() {
) ?? [];
// create the archive
const tmpDir = path.join(__dirname, 'tmp/');
execSync(
`node scripts/es_archiver save ${archiveName} ${indicesWithDocs
.filter((index) => !index.startsWith('.kibana'))
.concat('.kibana')
.join(
','
)} --dir=${archivesDir} --kibana-url=${kibanaUrl} --es-url=${esUrl} --query='${JSON.stringify(
)} --dir=${tmpDir} --kibana-url=${kibanaUrl} --es-url=${esUrl} --query='${JSON.stringify(
query
)}'`,
{
@ -173,7 +171,7 @@ async function run() {
const currentConfig = {};
// get the current metadata and extend/override metadata for the new archive
const configFilePath = path.join(commonDir, 'archives_metadata.ts');
const configFilePath = path.join(tmpDir, 'archives_metadata.ts');
try {
Object.assign(currentConfig, (await import(configFilePath)).default);
@ -191,16 +189,35 @@ async function run() {
fs.writeFileSync(
configFilePath,
`export default ${JSON.stringify(newConfig, null, 2)}`,
`
/* eslint-disable import/no-default-export*/
export default ${JSON.stringify(newConfig, null, 2)}`,
{ encoding: 'utf-8' }
);
// run ESLint on the generated metadata files
execSync('node scripts/eslint **/*/archives_metadata.ts --fix', {
cwd: root,
stdio: 'inherit',
});
const esArchiverDir = 'fixtures/es_archiver/';
const apiIntegrationDir = path.join(
root,
'x-pack/test/apm_api_integration/common',
esArchiverDir
);
const e2eDir = path.join(__dirname, '../../ftr_e2e/cypress', esArchiverDir);
// Copy generated files to e2e test folder
execSync(`cp -r ${tmpDir} ${e2eDir}`);
// Copy generated files to API integration test folder
execSync(`cp -r ${tmpDir} ${apiIntegrationDir}`);
// Delete tmp folder
execSync(`rm -rf ${tmpDir}`);
}
run()

View file

@ -0,0 +1,14 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
const childProcess = require('child_process');
const path = require('path');
const e2eDir = path.join(__dirname, '../../ftr_e2e');
childProcess.execSync(
`node ../../../../scripts/functional_tests --config ./cypress_open.ts`,
{ cwd: e2eDir, stdio: 'inherit' }
);

View file

@ -0,0 +1,14 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
const childProcess = require('child_process');
const path = require('path');
const e2eDir = path.join(__dirname, '../../ftr_e2e');
childProcess.execSync(
`node ../../../../scripts/functional_tests --config ./cypress_run.ts`,
{ cwd: e2eDir, stdio: 'inherit' }
);

View file

@ -6,7 +6,7 @@
import expect from '@kbn/expect';
import { format } from 'url';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import expect from '@kbn/expect';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -5,7 +5,7 @@
*/
import expect from '@kbn/expect';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function serviceMapsApiTests({ getService }: FtrProviderContext) {

View file

@ -13,7 +13,7 @@ import { isFiniteNumber } from '../../../../../../plugins/apm/common/utils/is_fi
import { APIReturnType } from '../../../../../../plugins/apm/public/services/rest/createCallApmApi';
import { ENVIRONMENT_ALL } from '../../../../../../plugins/apm/common/environment_filter_values';
import { FtrProviderContext } from '../../../../../common/ftr_provider_context';
import archives from '../../../../common/archives_metadata';
import archives from '../../../../common/fixtures/es_archiver/archives_metadata';
import { apmDependenciesMapping, createServiceDependencyDocs } from './es_utils';
const round = (num: Maybe<number>): string => (isFiniteNumber(num) ? num.toPrecision(4) : '');

View file

@ -8,7 +8,7 @@ import expect from '@kbn/expect';
import qs from 'querystring';
import { pick, uniqBy } from 'lodash';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -10,7 +10,7 @@ import { pick, sortBy } from 'lodash';
import { isFiniteNumber } from '../../../../../plugins/apm/common/utils/is_finite_number';
import { APIReturnType } from '../../../../../plugins/apm/public/services/rest/createCallApmApi';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -6,7 +6,7 @@
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -7,7 +7,7 @@
import expect from '@kbn/expect';
import url from 'url';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -7,7 +7,7 @@
import expect from '@kbn/expect';
import url from 'url';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -6,7 +6,7 @@
import expect from '@kbn/expect';
import qs from 'querystring';
import { first, last } from 'lodash';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -8,7 +8,7 @@ import expect from '@kbn/expect';
import { isEmpty, pick, sortBy } from 'lodash';
import { APIReturnType } from '../../../../../plugins/apm/public/services/rest/createCallApmApi';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -5,7 +5,7 @@
*/
import expect from '@kbn/expect';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -5,7 +5,7 @@
*/
import expect from '@kbn/expect';
import { sortBy } from 'lodash';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import expect from '@kbn/expect';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -6,7 +6,7 @@
import expect from '@kbn/expect';
import qs from 'querystring';
import { isEmpty } from 'lodash';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -6,7 +6,7 @@
import expect from '@kbn/expect';
import { first, last } from 'lodash';
import { format } from 'url';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import expect from '@kbn/expect';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { PromiseReturnType } from '../../../../../plugins/observability/typings/common';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';

View file

@ -5,7 +5,7 @@
*/
import expect from '@kbn/expect';
import url from 'url';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { PromiseReturnType } from '../../../../../plugins/observability/typings/common';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';

View file

@ -5,7 +5,7 @@
*/
import expect from '@kbn/expect';
import { sortBy } from 'lodash';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
function sortTransactionGroups(items: any[]) {

View file

@ -8,7 +8,7 @@ import expect from '@kbn/expect';
import { pick, uniqBy, sortBy } from 'lodash';
import url from 'url';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';
import archives from '../../../common/archives_metadata';
import archives from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -7,7 +7,7 @@
import expect from '@kbn/expect';
import { format } from 'url';
import { APIReturnType } from '../../../../../plugins/apm/public/services/rest/createCallApmApi';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
export default function ApiTest({ getService }: FtrProviderContext) {

View file

@ -7,7 +7,7 @@
import querystring from 'querystring';
import expect from '@kbn/expect';
import { isEmpty, uniq } from 'lodash';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
import { PromiseReturnType } from '../../../../../plugins/observability/typings/common';
import { FtrProviderContext } from '../../../common/ftr_provider_context';

View file

@ -9,7 +9,7 @@ import { sortBy } from 'lodash';
import { APIReturnType } from '../../../../../plugins/apm/public/services/rest/createCallApmApi';
import { PromiseReturnType } from '../../../../../plugins/observability/typings/common';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -7,7 +7,7 @@
import expect from '@kbn/expect';
import { PromiseReturnType } from '../../../../../plugins/observability/typings/common';
import { FtrProviderContext } from '../../../common/ftr_provider_context';
import archives_metadata from '../../../common/archives_metadata';
import archives_metadata from '../../../common/fixtures/es_archiver/archives_metadata';
export default function ApiTest({ getService }: FtrProviderContext) {
const supertest = getService('supertest');

View file

@ -1,8 +1,14 @@
{
"extends": "../tsconfig.base.json",
"include": ["mocks.ts", "typings/**/*", "plugins/**/*", "tasks/**/*"],
"include": [
"mocks.ts",
"typings/**/*",
"plugins/**/*",
"tasks/**/*"
],
"exclude": [
"plugins/apm/e2e/cypress/**/*",
"plugins/apm/ftr_e2e/**/*",
"plugins/apm/scripts/**/*",
"plugins/console_extensions/**/*",
"plugins/data_enhanced/**/*",
@ -32,58 +38,161 @@
"incremental": false
},
"references": [
{ "path": "../src/core/tsconfig.json" },
{ "path": "../src/plugins/telemetry_management_section/tsconfig.json" },
{ "path": "../src/plugins/management/tsconfig.json" },
{ "path": "../src/plugins/bfetch/tsconfig.json" },
{ "path": "../src/plugins/charts/tsconfig.json" },
{ "path": "../src/plugins/console/tsconfig.json" },
{ "path": "../src/plugins/dashboard/tsconfig.json" },
{ "path": "../src/plugins/discover/tsconfig.json" },
{ "path": "../src/plugins/data/tsconfig.json" },
{ "path": "../src/plugins/dev_tools/tsconfig.json" },
{ "path": "../src/plugins/embeddable/tsconfig.json" },
{ "path": "../src/plugins/es_ui_shared/tsconfig.json" },
{ "path": "../src/plugins/expressions/tsconfig.json" },
{ "path": "../src/plugins/home/tsconfig.json" },
{ "path": "../src/plugins/inspector/tsconfig.json" },
{ "path": "../src/plugins/kibana_legacy/tsconfig.json" },
{ "path": "../src/plugins/kibana_react/tsconfig.json" },
{ "path": "../src/plugins/kibana_usage_collection/tsconfig.json" },
{ "path": "../src/plugins/kibana_utils/tsconfig.json" },
{ "path": "../src/plugins/navigation/tsconfig.json" },
{ "path": "../src/plugins/newsfeed/tsconfig.json" },
{ "path": "../src/plugins/saved_objects/tsconfig.json" },
{ "path": "../src/plugins/saved_objects_management/tsconfig.json" },
{ "path": "../src/plugins/saved_objects_tagging_oss/tsconfig.json" },
{ "path": "../src/plugins/presentation_util/tsconfig.json" },
{ "path": "../src/plugins/security_oss/tsconfig.json" },
{ "path": "../src/plugins/share/tsconfig.json" },
{ "path": "../src/plugins/telemetry/tsconfig.json" },
{ "path": "../src/plugins/telemetry_collection_manager/tsconfig.json" },
{ "path": "../src/plugins/url_forwarding/tsconfig.json" },
{ "path": "../src/plugins/ui_actions/tsconfig.json" },
{ "path": "../src/plugins/url_forwarding/tsconfig.json" },
{ "path": "../src/plugins/usage_collection/tsconfig.json" },
{ "path": "./plugins/console_extensions/tsconfig.json" },
{ "path": "./plugins/data_enhanced/tsconfig.json" },
{ "path": "./plugins/discover_enhanced/tsconfig.json" },
{ "path": "./plugins/global_search/tsconfig.json" },
{ "path": "./plugins/global_search_providers/tsconfig.json" },
{ "path": "./plugins/features/tsconfig.json" },
{ "path": "./plugins/graph/tsconfig.json" },
{ "path": "./plugins/embeddable_enhanced/tsconfig.json" },
{ "path": "./plugins/event_log/tsconfig.json"},
{ "path": "./plugins/licensing/tsconfig.json" },
{ "path": "./plugins/searchprofiler/tsconfig.json" },
{ "path": "./plugins/task_manager/tsconfig.json" },
{ "path": "./plugins/telemetry_collection_xpack/tsconfig.json" },
{ "path": "./plugins/ui_actions_enhanced/tsconfig.json" },
{ "path": "./plugins/vis_type_timeseries_enhanced/tsconfig.json" },
{ "path": "./plugins/translations/tsconfig.json" },
{ "path": "./plugins/spaces/tsconfig.json" },
{ "path": "./plugins/security/tsconfig.json" },
{ "path": "./plugins/encrypted_saved_objects/tsconfig.json" }
{
"path": "../src/core/tsconfig.json"
},
{
"path": "../src/plugins/telemetry_management_section/tsconfig.json"
},
{
"path": "../src/plugins/management/tsconfig.json"
},
{
"path": "../src/plugins/bfetch/tsconfig.json"
},
{
"path": "../src/plugins/charts/tsconfig.json"
},
{
"path": "../src/plugins/console/tsconfig.json"
},
{
"path": "../src/plugins/dashboard/tsconfig.json"
},
{
"path": "../src/plugins/discover/tsconfig.json"
},
{
"path": "../src/plugins/data/tsconfig.json"
},
{
"path": "../src/plugins/dev_tools/tsconfig.json"
},
{
"path": "../src/plugins/embeddable/tsconfig.json"
},
{
"path": "../src/plugins/es_ui_shared/tsconfig.json"
},
{
"path": "../src/plugins/expressions/tsconfig.json"
},
{
"path": "../src/plugins/home/tsconfig.json"
},
{
"path": "../src/plugins/inspector/tsconfig.json"
},
{
"path": "../src/plugins/kibana_legacy/tsconfig.json"
},
{
"path": "../src/plugins/kibana_react/tsconfig.json"
},
{
"path": "../src/plugins/kibana_usage_collection/tsconfig.json"
},
{
"path": "../src/plugins/kibana_utils/tsconfig.json"
},
{
"path": "../src/plugins/navigation/tsconfig.json"
},
{
"path": "../src/plugins/newsfeed/tsconfig.json"
},
{
"path": "../src/plugins/saved_objects/tsconfig.json"
},
{
"path": "../src/plugins/saved_objects_management/tsconfig.json"
},
{
"path": "../src/plugins/saved_objects_tagging_oss/tsconfig.json"
},
{
"path": "../src/plugins/presentation_util/tsconfig.json"
},
{
"path": "../src/plugins/security_oss/tsconfig.json"
},
{
"path": "../src/plugins/share/tsconfig.json"
},
{
"path": "../src/plugins/telemetry/tsconfig.json"
},
{
"path": "../src/plugins/telemetry_collection_manager/tsconfig.json"
},
{
"path": "../src/plugins/url_forwarding/tsconfig.json"
},
{
"path": "../src/plugins/ui_actions/tsconfig.json"
},
{
"path": "../src/plugins/url_forwarding/tsconfig.json"
},
{
"path": "../src/plugins/usage_collection/tsconfig.json"
},
{
"path": "./plugins/console_extensions/tsconfig.json"
},
{
"path": "./plugins/data_enhanced/tsconfig.json"
},
{
"path": "./plugins/discover_enhanced/tsconfig.json"
},
{
"path": "./plugins/global_search/tsconfig.json"
},
{
"path": "./plugins/global_search_providers/tsconfig.json"
},
{
"path": "./plugins/features/tsconfig.json"
},
{
"path": "./plugins/graph/tsconfig.json"
},
{
"path": "./plugins/embeddable_enhanced/tsconfig.json"
},
{
"path": "./plugins/event_log/tsconfig.json"
},
{
"path": "./plugins/licensing/tsconfig.json"
},
{
"path": "./plugins/searchprofiler/tsconfig.json"
},
{
"path": "./plugins/task_manager/tsconfig.json"
},
{
"path": "./plugins/telemetry_collection_xpack/tsconfig.json"
},
{
"path": "./plugins/ui_actions_enhanced/tsconfig.json"
},
{
"path": "./plugins/vis_type_timeseries_enhanced/tsconfig.json"
},
{
"path": "./plugins/translations/tsconfig.json"
},
{
"path": "./plugins/spaces/tsconfig.json"
},
{
"path": "./plugins/security/tsconfig.json"
},
{
"path": "./plugins/encrypted_saved_objects/tsconfig.json"
}
]
}
}