From 3a9b036b6fa5be5bcc72dd0dcb105f87fedaa735 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 17 Jul 2023 15:00:09 +0200 Subject: [PATCH 1/9] wip --- .../security_solution/cypress/cypress.config.ts | 1 + .../cypress/e2e/explore/users/user_details.cy.ts | 2 +- .../test_suites/security/cypress/cypress.config.ts | 13 ++++++++++++- .../security/cypress/e2e/serverless.cy.ts | 2 +- .../test_suites/security/cypress/package.json | 4 ++-- .../test_suites/security/cypress/runner.ts | 10 ++++++++++ .../test_suites/security/cypress/support/index.d.ts | 2 ++ 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/cypress.config.ts b/x-pack/plugins/security_solution/cypress/cypress.config.ts index 2a945fc1ab012..1ecef029c609f 100644 --- a/x-pack/plugins/security_solution/cypress/cypress.config.ts +++ b/x-pack/plugins/security_solution/cypress/cypress.config.ts @@ -22,5 +22,6 @@ export default defineCypressConfig({ e2e: { experimentalRunAllSpecs: true, experimentalMemoryManagement: true, + specPattern: ['./e2e/**/*.cy.ts', '../../../../../../security_solution/cypress/e2e/**/*.cy.ts'], }, }); diff --git a/x-pack/plugins/security_solution/cypress/e2e/explore/users/user_details.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/explore/users/user_details.cy.ts index 90a44a514ce7c..ce7da8e460e14 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/explore/users/user_details.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/explore/users/user_details.cy.ts @@ -20,7 +20,7 @@ import { } from '../../../tasks/alerts'; import { USER_COLUMN } from '../../../screens/alerts'; -describe('user details flyout', () => { +describe('user details flyout', { tags: '@serverless' }, () => { beforeEach(() => { cleanKibana(); login(); diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts index b7a396652163b..57fed51291dcf 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts @@ -9,6 +9,9 @@ import { defineCypressConfig } from '@kbn/cypress-config'; export default defineCypressConfig({ defaultCommandTimeout: 60000, + env: { + grepFilterSpecs: true, + }, execTimeout: 60000, pageLoadTimeout: 60000, responseTimeout: 60000, @@ -18,10 +21,18 @@ export default defineCypressConfig({ viewportWidth: 1680, numTestsKeptInMemory: 10, e2e: { + setupNodeEvents(on, config) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('@cypress/grep/src/plugin')(config); + return config; + }, baseUrl: 'http://localhost:5620/app/security/get_started', experimentalRunAllSpecs: true, experimentalMemoryManagement: true, supportFile: './support/e2e.js', - specPattern: './e2e/**/*.cy.ts', + specPattern: [ + './e2e/**/*.cy.ts', + '../../../../../plugins/security_solution/cypress/e2e/**/*.cy.ts', + ], }, }); diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/e2e/serverless.cy.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/e2e/serverless.cy.ts index b296f1df7b3e6..8ad871a351331 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/e2e/serverless.cy.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/e2e/serverless.cy.ts @@ -8,7 +8,7 @@ import { LEFT_NAVIGATION } from '../screens/landing_page'; import { navigatesToLandingPage } from '../tasks/navigation'; -describe('Serverless', () => { +describe('Serverless', { tags: '@serverless' }, () => { it('Should navigate to the landing page', () => { navigatesToLandingPage(); cy.get(LEFT_NAVIGATION).should('exist'); diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/package.json b/x-pack/test_serverless/functional/test_suites/security/cypress/package.json index e747cbc7bc9e8..064aef568cd36 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/package.json +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/package.json @@ -5,8 +5,8 @@ "private": true, "license": "Elastic License 2.0", "scripts": { - "cypress:open": "../../../../../../node_modules/.bin/cypress open --config-file ./cypress.config.ts", - "cypress:run": "../../../../../../node_modules/.bin/cypress run --browser chrome --config-file ./cypress.config.ts", + "cypress:open": "../../../../../../node_modules/.bin/cypress open --config-file ./cypress.config.ts --env grepTags=@serverless", + "cypress:run": "../../../../../../node_modules/.bin/cypress run --browser chrome --config-file ./cypress.config.ts --env grepTags=@serverless", "cypress:serverless:open": "node ../../../../../../scripts/functional_tests --config ./config_visual.ts", "cypress:serverless:run": "node ../../../../../../scripts/functional_tests --config ./config_headless.ts" } diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts index 16119e4869ef1..9f370157ab83c 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts @@ -7,6 +7,7 @@ import { resolve } from 'path'; import { withProcRunner } from '@kbn/dev-proc-runner'; +import Url from 'url'; import { FtrProviderContext } from '../../../ftr_provider_context'; @@ -17,6 +18,10 @@ export async function SecuritySolutionCypressTestRunner( command: string ) { const log = getService('log'); + const config = getService('config'); + const esArchiver = getService('esArchiver'); + + await esArchiver.load('x-pack/test/security_solution_cypress/es_archives/auditbeat'); await withProcRunner(log, async (procs) => { await procs.run('cypress', { @@ -25,6 +30,11 @@ export async function SecuritySolutionCypressTestRunner( cwd: resolve(__dirname), env: { ...process.env, + FORCE_COLOR: '1', + CYPRESS_BASE_URL: Url.format(config.get('servers.kibana')), + CYPRESS_ELASTICSEARCH_URL: Url.format(config.get('servers.elasticsearch')), + CYPRESS_ELASTICSEARCH_USERNAME: config.get('servers.elasticsearch.username'), + CYPRESS_ELASTICSEARCH_PASSWORD: config.get('servers.elasticsearch.password'), }, wait: true, }); diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts index 6928ba89a56f0..e7be38ae4caf1 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts @@ -6,6 +6,8 @@ */ declare namespace Cypress { + import registerCypressGrep from '@cypress/grep/src/support'; + registerCypressGrep(); interface Chainable { promisify(): Promise; attachFile(fileName: string, fileType?: string): Chainable; From b7984a17748c9d3d9cf1c89e3d0dc925690ec94a Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 17 Jul 2023 16:41:17 +0200 Subject: [PATCH 2/9] wip --- .../security_solution/cypress/tasks/common.ts | 6 ++- .../security/cypress/support/commands.js | 54 +++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/tasks/common.ts b/x-pack/plugins/security_solution/cypress/tasks/common.ts index 1767b70fe33fe..413aafc2ea0ff 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/common.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/common.ts @@ -272,8 +272,10 @@ export const deleteDataView = (dataSource: string) => { export const scrollToBottom = () => cy.scrollTo('bottom'); export const waitForPageToBeLoaded = () => { - cy.get(LOADING_INDICATOR_HIDDEN).should('exist'); - cy.get(LOADING_INDICATOR).should('not.exist'); + if (Cypress.env('grepTags') !== '@serverless') { + cy.get(LOADING_INDICATOR_HIDDEN).should('exist'); + cy.get(LOADING_INDICATOR).should('not.exist'); + } }; export const waitForWelcomePanelToBeLoaded = () => { diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/support/commands.js b/x-pack/test_serverless/functional/test_suites/security/cypress/support/commands.js index 73895fbbec589..ecee00b106be1 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/support/commands.js +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/support/commands.js @@ -30,3 +30,57 @@ // // -- This is will overwrite an existing command -- // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) + +import 'cypress-file-upload'; +import 'cypress-recurse/commands'; + +Cypress.Commands.add( + 'attachFile', + { + prevSubject: 'element', + }, + (input, fileName, fileType = 'text/plain') => { + cy.fixture(fileName).then((content) => { + const blob = Cypress.Blob.base64StringToBlob(btoa(content), fileType); + const testFile = new File([blob], fileName, { type: fileType }); + const dataTransfer = new DataTransfer(); + + dataTransfer.items.add(testFile); + input[0].files = dataTransfer.files; + return input; + }); + } +); + +const waitUntil = (subject, fn, options = {}) => { + const { interval = 200, timeout = 5000 } = options; + let attempts = Math.floor(timeout / interval); + + const completeOrRetry = (result) => { + if (result) { + return result; + } + if (attempts < 1) { + throw new Error(`Timed out while retrying, last result was: {${result}}`); + } + cy.wait(interval, { log: false }).then(() => { + attempts--; + // eslint-disable-next-line no-use-before-define + return evaluate(); + }); + }; + + const evaluate = () => { + const result = fn(subject); + + if (result && result.then) { + return result.then(completeOrRetry); + } else { + return completeOrRetry(result); + } + }; + + return evaluate(); +}; + +Cypress.Commands.add('waitUntil', { prevSubject: 'optional' }, waitUntil); From 356e782e85fc41514d28bd35c116e2ac42c6c931 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 17 Jul 2023 17:18:19 +0200 Subject: [PATCH 3/9] adjusting timeouts --- .../test_suites/security/cypress/cypress.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts index 57fed51291dcf..1a69ba64a07e1 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts @@ -8,12 +8,12 @@ import { defineCypressConfig } from '@kbn/cypress-config'; export default defineCypressConfig({ - defaultCommandTimeout: 60000, + defaultCommandTimeout: 150000, env: { grepFilterSpecs: true, }, - execTimeout: 60000, - pageLoadTimeout: 60000, + execTimeout: 150000, + pageLoadTimeout: 150000, responseTimeout: 60000, trashAssetsBeforeRuns: false, video: false, From a99211e9337296abecd214b1e1d248adda2909e8 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 17 Jul 2023 18:00:23 +0200 Subject: [PATCH 4/9] adding screenshots to understand what is happening --- .../functional/test_suites/security/cypress/cypress.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts index 1a69ba64a07e1..45af4f9f6606c 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/cypress.config.ts @@ -15,6 +15,7 @@ export default defineCypressConfig({ execTimeout: 150000, pageLoadTimeout: 150000, responseTimeout: 60000, + screenshotsFolder: '../../../../../../target/kibana-security-solution/cypress/screenshots', trashAssetsBeforeRuns: false, video: false, viewportHeight: 946, From 61e13b68e0b58f061402d512d424cac5b15b59ba Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 17 Jul 2023 19:43:26 +0200 Subject: [PATCH 5/9] adjustments --- .../test_suites/security/cypress/security_config.base.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.base.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.base.ts index 515ea0c52efee..1c9af3f011b17 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.base.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/security_config.base.ts @@ -28,6 +28,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ...svlSharedConfig.get('kbnTestServer.serverArgs'), '--csp.strict=false', '--csp.warnLegacyBrowsers=false', + '--xpack.encryptedSavedObjects.encryptionKey="abcdefghijklmnopqrstuvwxyz123456"', '--serverless=security', ], }, From dcd46b05fa14bc2a18a9b0db7e5162787ec67d59 Mon Sep 17 00:00:00 2001 From: Patryk Kopycinski Date: Tue, 18 Jul 2023 11:06:45 +0200 Subject: [PATCH 6/9] fix types --- .../functional/test_suites/security/cypress/support/e2e.js | 3 +++ .../functional/test_suites/security/cypress/support/index.d.ts | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/support/e2e.js b/x-pack/test_serverless/functional/test_suites/security/cypress/support/e2e.js index 3984b4be49727..477c2606153b7 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/support/e2e.js +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/support/e2e.js @@ -23,6 +23,9 @@ // Import commands.js using ES2015 syntax: import './commands'; import 'cypress-real-events/support'; +import registerCypressGrep from '@cypress/grep'; + +registerCypressGrep(); Cypress.on('uncaught:exception', () => { return false; diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts index e7be38ae4caf1..6928ba89a56f0 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/support/index.d.ts @@ -6,8 +6,6 @@ */ declare namespace Cypress { - import registerCypressGrep from '@cypress/grep/src/support'; - registerCypressGrep(); interface Chainable { promisify(): Promise; attachFile(fileName: string, fileType?: string): Chainable; From d766a5870a40f84ac5c27ad6565e7f193dee03e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20=C3=81brah=C3=A1m?= Date: Mon, 31 Jul 2023 14:12:43 +0200 Subject: [PATCH 7/9] add @serverless tag to one DW test - wip --- x-pack/plugins/security_solution/package.json | 3 +- .../e2e/mocked_data/policy_details.cy.ts | 2 +- .../public/management/cypress/support/e2e.ts | 4 ++ .../management/cypress_serverless.config.ts | 59 +++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts diff --git a/x-pack/plugins/security_solution/package.json b/x-pack/plugins/security_solution/package.json index 01419bb09e470..eec018e3f4c17 100644 --- a/x-pack/plugins/security_solution/package.json +++ b/x-pack/plugins/security_solution/package.json @@ -25,9 +25,10 @@ "cypress:dw:endpoint:open": "node ./scripts/start_cypress_parallel open --config-file ./public/management/cypress_endpoint.config.ts ts --ftr-config-file ../../../../../../x-pack/test/defend_workflows_cypress/endpoint_config", "cypress:investigations:run": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/investigations/**/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", "cypress:explore:run": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/explore/**/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", + "cypress:dw:serverless:open": "../../../node_modules/.bin/cypress open --config-file ./public/management/cypress_serverless.config.ts", "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../target/kibana-security-solution/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../target/kibana-security-solution/cypress/results && mkdir -p ../../../target/junit && cp ../../../target/kibana-security-solution/cypress/results/*.xml ../../../target/junit/", "test:generate": "node scripts/endpoint/resolver_generator", "mappings:generate": "node scripts/mappings/mappings_generator", "mappings:load": "node scripts/mappings/mappings_loader" } -} +} \ No newline at end of file diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/policy_details.cy.ts index 543ce48ffb79d..ef37fcbbdb2c1 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/policy_details.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/policy_details.cy.ts @@ -17,7 +17,7 @@ import type { CyIndexEndpointHosts } from '../../tasks/index_endpoint_hosts'; import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts'; import { login } from '../../tasks/login'; -describe('Policy Details', () => { +describe('Policy Details', { tags: '@serverless' }, () => { const packagePolicyBackupHelper = new PackagePolicyBackupHelper(); let indexedHostsData: CyIndexEndpointHosts; diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts b/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts index 12c236f481791..43da697718e62 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts @@ -29,6 +29,10 @@ export {}; import 'cypress-react-selector'; +// @ts-ignore +import registerCypressGrep from '@cypress/grep'; +registerCypressGrep(); + Cypress.Commands.addQuery<'getByTestSubj'>( 'getByTestSubj', function getByTestSubj(selector, options) { diff --git a/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts b/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts new file mode 100644 index 0000000000000..75af190208d54 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { defineCypressConfig } from '@kbn/cypress-config'; +// eslint-disable-next-line @kbn/imports/no_boundary_crossing +import { dataLoaders } from './cypress/support/data_loaders'; + +// eslint-disable-next-line import/no-default-export +export default defineCypressConfig({ + defaultCommandTimeout: 60000, + execTimeout: 120000, + pageLoadTimeout: 12000, + + retries: { + runMode: 1, + openMode: 0, + }, + + screenshotsFolder: + '../../../target/kibana-security-solution/public/management/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: false, + viewportHeight: 900, + viewportWidth: 1440, + experimentalStudio: true, + + env: { + grepTags: '@serverless', + grepFilterSpecs: true, + KIBANA_URL: 'http://localhost:5620', + ELASTICSEARCH_URL: 'http://localhost:9200', + FLEET_SERVER_URL: 'https://localhost:8220', + // Username/password used for both elastic and kibana + ELASTICSEARCH_USERNAME: 'elastic', + ELASTICSEARCH_PASSWORD: 'changeme', + }, + + e2e: { + // baseUrl: To override, set Env. variable `CYPRESS_BASE_URL` + baseUrl: 'http://localhost:5620', + supportFile: 'public/management/cypress/support/e2e.ts', + specPattern: 'public/management/cypress/e2e/mocked_data/', + experimentalRunAllSpecs: true, + experimentalMemoryManagement: true, + setupNodeEvents: (on, config) => { + // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-extraneous-dependencies + require('@cypress/grep/src/plugin')(config); + + // todo: dataLoaders fail on serverless env, needs to be adapted to be able to use e.g. `indexEndpointHosts()` + // return dataLoaders(on, config); + + return config; + }, + }, +}); From 5c24d40eb25a99e0af1cba5e1b51ac7c5a5f8e25 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:24:03 +0000 Subject: [PATCH 8/9] [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' --- .../public/management/cypress_serverless.config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts b/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts index 75af190208d54..58737a2b86322 100644 --- a/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts +++ b/x-pack/plugins/security_solution/public/management/cypress_serverless.config.ts @@ -6,8 +6,6 @@ */ import { defineCypressConfig } from '@kbn/cypress-config'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { dataLoaders } from './cypress/support/data_loaders'; // eslint-disable-next-line import/no-default-export export default defineCypressConfig({ From 86b5b0c16bcc0782d71bcca018302d6027bd9af3 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:31:10 +0000 Subject: [PATCH 9/9] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/plugins/security_solution/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json index 01987641931a7..ff94c96b1e9b2 100644 --- a/x-pack/plugins/security_solution/tsconfig.json +++ b/x-pack/plugins/security_solution/tsconfig.json @@ -161,6 +161,7 @@ "@kbn/field-formats-plugin", "@kbn/dev-proc-runner", "@kbn/cloud-chat-plugin", - "@kbn/alerts-ui-shared" + "@kbn/alerts-ui-shared", + "@kbn/cypress-config" ] }