mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
[Security Solution][Endpoint] Combine the Endpoint management cypress test suites into a single configuration/run (#166757)
## Summary
- Combines the `endpoint` and `mocked_data` tests suites so that they
run from the same cypress configuration/run buildkite setup
- Moved test files from the `endpoint/` and `mocked_data/` directories
into new sub-directories that more closely describe the set of tests
they contain
- The `security_solution/package.json` file was updated so that the
following `scripts` will now output a warning indicating that command is
no longer valid:
- `cypress:dw:endpoint`
- `cypress:dw:endpoint:run`
- `cypress:dw:endpoint:open`
The following npm/yarn commands remain available for running tests
locally:
```shell
yarn --cwd=x-pack/plugins/security_solution cypress:dw:open
```
```shell
yarn --cwd=x-pack/plugins/security_solution cypress:dw:run
```
New test file struncture:
<img width="415" alt="image"
src="0cb4bc76
-b434-4219-b73e-508645201a81">
This commit is contained in:
parent
61bad62aaa
commit
807856abd2
43 changed files with 138 additions and 341 deletions
|
@ -1,18 +1,6 @@
|
|||
steps:
|
||||
- command: .buildkite/scripts/steps/functional/defend_workflows.sh
|
||||
label: 'Defend Workflows Cypress Tests'
|
||||
agents:
|
||||
queue: n2-4-spot
|
||||
depends_on: build
|
||||
timeout_in_minutes: 60
|
||||
parallelism: 2
|
||||
retry:
|
||||
automatic:
|
||||
- exit_status: '*'
|
||||
limit: 1
|
||||
|
||||
- command: .buildkite/scripts/steps/functional/defend_workflows_vagrant.sh
|
||||
label: 'Defend Workflows Endpoint Cypress Tests'
|
||||
agents:
|
||||
queue: n2-4-virt
|
||||
depends_on: build
|
||||
|
@ -35,15 +23,4 @@ steps:
|
|||
- exit_status: '*'
|
||||
limit: 1
|
||||
|
||||
- command: .buildkite/scripts/steps/functional/defend_workflows_vagrant_serverless.sh
|
||||
label: 'Defend Workflows Endpoint Cypress Tests on Serverless'
|
||||
agents:
|
||||
queue: n2-4-virt
|
||||
depends_on: build
|
||||
timeout_in_minutes: 120
|
||||
parallelism: 5
|
||||
retry:
|
||||
automatic:
|
||||
- exit_status: '*'
|
||||
limit: 1
|
||||
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source .buildkite/scripts/steps/functional/common.sh
|
||||
source .buildkite/scripts/steps/functional/common_cypress.sh
|
||||
|
||||
export JOB=kibana-defend-workflows-endpoint-cypress
|
||||
export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION}
|
||||
|
||||
echo "--- Defend Workflows Endpoint Cypress tests"
|
||||
|
||||
cd x-pack/plugins/security_solution
|
||||
|
||||
set +e
|
||||
yarn cypress:dw:endpoint:run; status=$?; yarn junit:merge || :; exit $status
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source .buildkite/scripts/steps/functional/common.sh
|
||||
source .buildkite/scripts/steps/functional/common_cypress.sh
|
||||
|
||||
export JOB=kibana-defend-workflows-endpoint-serverless-cypress
|
||||
export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION}
|
||||
|
||||
echo "--- Defend Workflows Endpoint Cypress tests on Serverless"
|
||||
|
||||
cd x-pack/plugins/security_solution
|
||||
|
||||
yarn cypress:dw:endpoint:serverless:run; status=$?; yarn junit:merge || :; exit $status
|
|
@ -13,15 +13,12 @@
|
|||
"cypress:dw": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file ./public/management/cypress/cypress.config.ts --ftr-config-file ../../test/defend_workflows_cypress/cli_config",
|
||||
"cypress:dw:open": "yarn cypress:dw open",
|
||||
"cypress:dw:run": "yarn cypress:dw run",
|
||||
"cypress:dw:endpoint": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file ./public/management/cypress/cypress_endpoint.config.ts --ftr-config-file ../../test/defend_workflows_cypress/endpoint_config",
|
||||
"cypress:dw:endpoint:run": "yarn cypress:dw:endpoint run",
|
||||
"cypress:dw:endpoint:open": "yarn cypress:dw:endpoint open",
|
||||
"cypress:dw:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file ./public/management/cypress/cypress_serverless.config.ts --ftr-config-file ../../../x-pack/test_serverless/functional/test_suites/security/cypress/security_config",
|
||||
"cypress:dw:serverless:open": "yarn cypress:dw:serverless open",
|
||||
"cypress:dw:serverless:run": "yarn cypress:dw:serverless run",
|
||||
"cypress:dw:endpoint:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file ./public/management/cypress/cypress_endpoint_serverless.config.ts --ftr-config-file ../../test/defend_workflows_cypress/endpoint_serverless_config",
|
||||
"cypress:dw:endpoint:serverless:open": "yarn cypress:dw:endpoint:serverless open",
|
||||
"cypress:dw:endpoint:serverless:run": "yarn cypress:dw:endpoint:serverless run",
|
||||
"cypress:dw:endpoint": "echo '\n** WARNING **: Run script `cypress:dw:endpoint` no longer valid! Use `cypress:dw` instead\n'",
|
||||
"cypress:dw:endpoint:run": "echo '\n** WARNING **: Run script `cypress:dw:endpoint:run` no longer valid! Use `cypress:dw:run` instead\n'",
|
||||
"cypress:dw:endpoint:open": "echo '\n** WARNING **: Run script `cypress:dw:endpoint:open` no longer valid! Use `cypress:dw:open` instead\n'",
|
||||
"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 && yarn junit:transform && 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",
|
||||
|
|
|
@ -134,67 +134,12 @@ yarn --cwd x-pack/plugins/security_solution cypress:dw:open
|
|||
yarn --cwd x-pack/plugins/security_solution cypress:dw:serverless:open
|
||||
```
|
||||
|
||||
For developing/debugging tests against real endpoint please use:
|
||||
|
||||
Endpoint tests require [Multipass](https://multipass.run/) to be installed on your machine.
|
||||
|
||||
```shell
|
||||
# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against
|
||||
yarn kbn bootstrap && node scripts/build_kibana_platform_plugins
|
||||
|
||||
# launch the cypress test runner against ESS
|
||||
yarn --cwd x-pack/plugins/security_solution cypress:dw:endpoint:open
|
||||
|
||||
# or against Serverless
|
||||
yarn --cwd x-pack/plugins/security_solution cypress:dw:endpoint:serverless:open
|
||||
```
|
||||
|
||||
#### Cypress (interactive) with real Endpoints using Vagrant
|
||||
|
||||
```shell
|
||||
# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against
|
||||
yarn kbn bootstrap && node scripts/build_kibana_platform_plugins
|
||||
|
||||
# launch the cypress test runner with real endpoint
|
||||
cd x-pack/plugins/security_solution
|
||||
export CI=true
|
||||
yarn cypress:dw:endpoint:open
|
||||
````
|
||||
|
||||
Note that you can select the browser you want to use on the top right side of the interactive runner.
|
||||
|
||||
#### Cypress against REAL Endpoint + Headless (Chrome)
|
||||
|
||||
This requires some additional setup as mentioned in the [pre-requisites](#pre-requisites) section.
|
||||
|
||||
Endpoint tests require [Multipass](https://multipass.run/) to be installed on your machine.
|
||||
|
||||
```shell
|
||||
# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against
|
||||
yarn kbn bootstrap && node scripts/build_kibana_platform_plugins
|
||||
|
||||
# launch the cypress test runner with real endpoint against ESS
|
||||
yarn --cwd x-pack/plugins/security_solution cypress:dw:endpoint:run
|
||||
|
||||
# or against Serverless
|
||||
yarn --cwd x-pack/plugins/security_solution cypress:dw:endpoint:serverless:run
|
||||
```
|
||||
|
||||
## Folder Structure
|
||||
|
||||
### e2e/
|
||||
|
||||
Contains all the tests. Within it are two sub-folders:
|
||||
|
||||
#### cypress/endpoint
|
||||
|
||||
Contains all the tests that are executed against real endpoints.
|
||||
|
||||
#### cypress/mocked_data
|
||||
|
||||
Contains all the tests that are executed against mocked endpoint and run on CI. If you want to add tests that run on CI
|
||||
then this is where you should add those.
|
||||
|
||||
### integration/
|
||||
|
||||
Cypress convention. Contains the specs that are going to be executed.
|
||||
|
@ -212,7 +157,6 @@ Directory also holds Cypress Plugins that are then initialized via `setupNodeEve
|
|||
### screens/
|
||||
|
||||
Contains the elements we want to interact with within our tests.
|
||||
|
||||
Each file inside the screens folder represents a screen in our application.
|
||||
|
||||
### tasks/
|
||||
|
|
|
@ -8,26 +8,10 @@
|
|||
import { defineCypressConfig } from '@kbn/cypress-config';
|
||||
import { getCypressBaseConfig } from './cypress_base.config';
|
||||
|
||||
import { dataLoaders } from './support/data_loaders';
|
||||
|
||||
export default defineCypressConfig({
|
||||
...getCypressBaseConfig(),
|
||||
|
||||
env: {
|
||||
...getCypressBaseConfig().env,
|
||||
|
||||
grepTags: '@ess',
|
||||
},
|
||||
|
||||
e2e: {
|
||||
...getCypressBaseConfig().e2e,
|
||||
|
||||
specPattern: 'public/management/cypress/e2e/mocked_data/',
|
||||
setupNodeEvents: (on, config) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('@cypress/grep/src/plugin')(config);
|
||||
|
||||
return dataLoaders(on, config);
|
||||
export default defineCypressConfig(
|
||||
getCypressBaseConfig({
|
||||
env: {
|
||||
grepTags: '@ess',
|
||||
},
|
||||
},
|
||||
});
|
||||
})
|
||||
);
|
||||
|
|
|
@ -5,50 +5,82 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
export const getCypressBaseConfig = () => ({
|
||||
reporter: '../../../../node_modules/cypress-multi-reporters',
|
||||
reporterOptions: {
|
||||
configFile: './public/management/reporter_config.json',
|
||||
},
|
||||
import { merge } from 'lodash';
|
||||
import { dataLoaders, dataLoadersForRealEndpoints } from './support/data_loaders';
|
||||
import { responseActionTasks } from './support/response_actions';
|
||||
|
||||
defaultCommandTimeout: 60000,
|
||||
execTimeout: 120000,
|
||||
pageLoadTimeout: 12000,
|
||||
export const getCypressBaseConfig = (
|
||||
overrides: Cypress.ConfigOptions = {}
|
||||
): Cypress.ConfigOptions => {
|
||||
return merge(
|
||||
{
|
||||
reporter: '../../../../node_modules/cypress-multi-reporters',
|
||||
reporterOptions: {
|
||||
configFile: './public/management/reporter_config.json',
|
||||
},
|
||||
|
||||
retries: {
|
||||
runMode: 1,
|
||||
openMode: 0,
|
||||
},
|
||||
defaultCommandTimeout: 60000,
|
||||
execTimeout: 120000,
|
||||
pageLoadTimeout: 12000,
|
||||
|
||||
screenshotsFolder:
|
||||
'../../../target/kibana-security-solution/public/management/cypress/screenshots',
|
||||
trashAssetsBeforeRuns: false,
|
||||
video: false,
|
||||
viewportHeight: 900,
|
||||
viewportWidth: 1440,
|
||||
experimentalStudio: true,
|
||||
retries: {
|
||||
runMode: 1,
|
||||
openMode: 0,
|
||||
},
|
||||
|
||||
env: {
|
||||
KIBANA_URL: 'http://localhost:5601',
|
||||
ELASTICSEARCH_URL: 'http://localhost:9200',
|
||||
FLEET_SERVER_URL: 'https://localhost:8220',
|
||||
screenshotsFolder:
|
||||
'../../../target/kibana-security-solution/public/management/cypress/screenshots',
|
||||
trashAssetsBeforeRuns: false,
|
||||
video: false,
|
||||
viewportHeight: 900,
|
||||
viewportWidth: 1440,
|
||||
experimentalStudio: true,
|
||||
|
||||
// Username/password used for both elastic and kibana
|
||||
KIBANA_USERNAME: 'system_indices_superuser',
|
||||
KIBANA_PASSWORD: 'changeme',
|
||||
ELASTICSEARCH_USERNAME: 'system_indices_superuser',
|
||||
ELASTICSEARCH_PASSWORD: 'changeme',
|
||||
env: {
|
||||
'cypress-react-selector': {
|
||||
root: '#security-solution-app',
|
||||
},
|
||||
KIBANA_URL: 'http://localhost:5601',
|
||||
ELASTICSEARCH_URL: 'http://localhost:9200',
|
||||
FLEET_SERVER_URL: 'https://localhost:8220',
|
||||
KIBANA_USERNAME: 'system_indices_superuser',
|
||||
KIBANA_PASSWORD: 'changeme',
|
||||
ELASTICSEARCH_USERNAME: 'system_indices_superuser',
|
||||
ELASTICSEARCH_PASSWORD: 'changeme',
|
||||
|
||||
// grep related configs
|
||||
grepFilterSpecs: true,
|
||||
grepOmitFiltered: true,
|
||||
},
|
||||
// grep related configs
|
||||
grepFilterSpecs: true,
|
||||
grepOmitFiltered: true,
|
||||
},
|
||||
|
||||
e2e: {
|
||||
// baseUrl: To override, set Env. variable `CYPRESS_BASE_URL`
|
||||
baseUrl: 'http://localhost:5601',
|
||||
e2e: {
|
||||
// baseUrl: To override, set Env. variable `CYPRESS_BASE_URL`
|
||||
baseUrl: 'http://localhost:5601',
|
||||
supportFile: 'public/management/cypress/support/e2e.ts',
|
||||
specPattern: 'public/management/cypress/e2e/**/*.cy.{js,jsx,ts,tsx}',
|
||||
experimentalRunAllSpecs: true,
|
||||
setupNodeEvents: (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => {
|
||||
dataLoaders(on, config);
|
||||
|
||||
supportFile: 'public/management/cypress/support/e2e.ts',
|
||||
experimentalRunAllSpecs: true,
|
||||
},
|
||||
});
|
||||
// skip dataLoadersForRealEndpoints() if running in serverless
|
||||
// https://github.com/elastic/security-team/issues/7467
|
||||
// Once we are able to run Fleet server in serverless mode (see: https://github.com/elastic/kibana/pull/166183)
|
||||
// this `if()` statement needs to be removed and `dataLoadersForRealEndpoints()` should
|
||||
// just be called without having any checks around it.
|
||||
if (!config.env.IS_SERVERLESS) {
|
||||
// Data loaders specific to "real" Endpoint testing
|
||||
dataLoadersForRealEndpoints(on, config);
|
||||
}
|
||||
|
||||
responseActionTasks(on, config);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('@cypress/grep/src/plugin')(config);
|
||||
|
||||
return config;
|
||||
},
|
||||
},
|
||||
},
|
||||
overrides
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
/*
|
||||
* 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';
|
||||
import { getCypressBaseConfig } from './cypress_base.config';
|
||||
|
||||
import { dataLoaders, dataLoadersForRealEndpoints } from './support/data_loaders';
|
||||
|
||||
import { responseActionTasks } from './support/response_actions';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default defineCypressConfig({
|
||||
...getCypressBaseConfig(),
|
||||
|
||||
env: {
|
||||
...getCypressBaseConfig().env,
|
||||
|
||||
'cypress-react-selector': {
|
||||
root: '#security-solution-app',
|
||||
},
|
||||
|
||||
grepTags: '@ess',
|
||||
},
|
||||
|
||||
e2e: {
|
||||
...getCypressBaseConfig().e2e,
|
||||
|
||||
experimentalMemoryManagement: true,
|
||||
experimentalInteractiveRunEvents: true,
|
||||
specPattern: 'public/management/cypress/e2e/endpoint/*.cy.{js,jsx,ts,tsx}',
|
||||
setupNodeEvents: (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => {
|
||||
dataLoaders(on, config);
|
||||
// Data loaders specific to "real" Endpoint testing
|
||||
dataLoadersForRealEndpoints(on, config);
|
||||
responseActionTasks(on, config);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('@cypress/grep/src/plugin')(config);
|
||||
|
||||
return config;
|
||||
},
|
||||
},
|
||||
});
|
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
* 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';
|
||||
import { getCypressBaseConfig } from './cypress_base.config';
|
||||
import { dataLoaders } from './support/data_loaders';
|
||||
import { responseActionTasks } from './support/response_actions';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default defineCypressConfig({
|
||||
...getCypressBaseConfig(),
|
||||
|
||||
env: {
|
||||
...getCypressBaseConfig().env,
|
||||
|
||||
IS_SERVERLESS: true,
|
||||
grepTags: '@serverless --@brokenInServerless',
|
||||
|
||||
'cypress-react-selector': {
|
||||
root: '#security-solution-app',
|
||||
},
|
||||
},
|
||||
|
||||
e2e: {
|
||||
...getCypressBaseConfig().e2e,
|
||||
|
||||
experimentalMemoryManagement: true,
|
||||
experimentalInteractiveRunEvents: true,
|
||||
|
||||
specPattern: 'public/management/cypress/e2e/endpoint/*.cy.{js,jsx,ts,tsx}',
|
||||
|
||||
setupNodeEvents: (on, config) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('@cypress/grep/src/plugin')(config);
|
||||
|
||||
dataLoaders(on, config);
|
||||
|
||||
// skip dataLoadersForRealEndpoints()
|
||||
// https://github.com/elastic/security-team/issues/7467
|
||||
// Data loaders specific to "real" Endpoint testing
|
||||
// dataLoadersForRealEndpoints(on, config);
|
||||
|
||||
responseActionTasks(on, config);
|
||||
},
|
||||
},
|
||||
});
|
|
@ -7,30 +7,14 @@
|
|||
|
||||
import { defineCypressConfig } from '@kbn/cypress-config';
|
||||
import { getCypressBaseConfig } from './cypress_base.config';
|
||||
import { dataLoaders } from './support/data_loaders';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default defineCypressConfig({
|
||||
...getCypressBaseConfig(),
|
||||
export default defineCypressConfig(
|
||||
getCypressBaseConfig({
|
||||
env: {
|
||||
IS_SERVERLESS: true,
|
||||
|
||||
env: {
|
||||
...getCypressBaseConfig().env,
|
||||
|
||||
IS_SERVERLESS: true,
|
||||
|
||||
grepTags: '@serverless --@brokenInServerless',
|
||||
},
|
||||
|
||||
e2e: {
|
||||
...getCypressBaseConfig().e2e,
|
||||
|
||||
specPattern: 'public/management/cypress/e2e/mocked_data/',
|
||||
|
||||
setupNodeEvents: (on, config) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('@cypress/grep/src/plugin')(config);
|
||||
|
||||
return dataLoaders(on, config);
|
||||
grepTags: '@serverless --@brokenInServerless',
|
||||
},
|
||||
},
|
||||
});
|
||||
})
|
||||
);
|
||||
|
|
|
@ -13,10 +13,10 @@ import {
|
|||
tryAddingDisabledResponseAction,
|
||||
validateAvailableCommands,
|
||||
visitRuleActions,
|
||||
} from '../../../tasks/response_actions';
|
||||
import { cleanupRule, generateRandomStringName, loadRule } from '../../../tasks/api_fixtures';
|
||||
import { RESPONSE_ACTION_TYPES } from '../../../../../../common/api/detection_engine';
|
||||
import { loginWithRole, ROLE } from '../../../tasks/login';
|
||||
} from '../../tasks/response_actions';
|
||||
import { cleanupRule, generateRandomStringName, loadRule } from '../../tasks/api_fixtures';
|
||||
import { RESPONSE_ACTION_TYPES } from '../../../../../common/api/detection_engine';
|
||||
import { loginWithRole, ROLE } from '../../tasks/login';
|
||||
|
||||
describe('Form', { tags: '@ess' }, () => {
|
||||
describe('User with no access can not create an endpoint response action', () => {
|
|
@ -5,12 +5,12 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { generateRandomStringName } from '../../../tasks/utils';
|
||||
import { indexEndpointHosts } from '../../../tasks/index_endpoint_hosts';
|
||||
import type { ReturnTypeFromChainable } from '../../../types';
|
||||
import { indexEndpointRuleAlerts } from '../../../tasks/index_endpoint_rule_alerts';
|
||||
import { generateRandomStringName } from '../../tasks/utils';
|
||||
import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts';
|
||||
import type { ReturnTypeFromChainable } from '../../types';
|
||||
import { indexEndpointRuleAlerts } from '../../tasks/index_endpoint_rule_alerts';
|
||||
|
||||
import { login, ROLE } from '../../../tasks/login';
|
||||
import { login, ROLE } from '../../tasks/login';
|
||||
|
||||
describe('Response actions history page', { tags: '@ess' }, () => {
|
||||
let endpointData: ReturnTypeFromChainable<typeof indexEndpointHosts> | undefined;
|
|
@ -5,15 +5,15 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { disableExpandableFlyoutAdvancedSettings } from '../../../tasks/common';
|
||||
import { APP_ALERTS_PATH } from '../../../../../../common/constants';
|
||||
import { closeAllToasts } from '../../../tasks/toasts';
|
||||
import { fillUpNewRule } from '../../../tasks/response_actions';
|
||||
import { login, loginWithRole, ROLE } from '../../../tasks/login';
|
||||
import { generateRandomStringName } from '../../../tasks/utils';
|
||||
import type { ReturnTypeFromChainable } from '../../../types';
|
||||
import { indexEndpointHosts } from '../../../tasks/index_endpoint_hosts';
|
||||
import { indexEndpointRuleAlerts } from '../../../tasks/index_endpoint_rule_alerts';
|
||||
import { disableExpandableFlyoutAdvancedSettings } from '../../tasks/common';
|
||||
import { APP_ALERTS_PATH } from '../../../../../common/constants';
|
||||
import { closeAllToasts } from '../../tasks/toasts';
|
||||
import { fillUpNewRule } from '../../tasks/response_actions';
|
||||
import { login, loginWithRole, ROLE } from '../../tasks/login';
|
||||
import { generateRandomStringName } from '../../tasks/utils';
|
||||
import type { ReturnTypeFromChainable } from '../../types';
|
||||
import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts';
|
||||
import { indexEndpointRuleAlerts } from '../../tasks/index_endpoint_rule_alerts';
|
||||
|
||||
describe('No License', { tags: '@ess', env: { ftrConfig: { license: 'basic' } } }, () => {
|
||||
describe('User cannot use endpoint action in form', () => {
|
|
@ -5,15 +5,15 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { disableExpandableFlyoutAdvancedSettings } from '../../../tasks/common';
|
||||
import { generateRandomStringName } from '../../../tasks/utils';
|
||||
import { APP_ALERTS_PATH } from '../../../../../../common/constants';
|
||||
import { closeAllToasts } from '../../../tasks/toasts';
|
||||
import { indexEndpointHosts } from '../../../tasks/index_endpoint_hosts';
|
||||
import type { ReturnTypeFromChainable } from '../../../types';
|
||||
import { indexEndpointRuleAlerts } from '../../../tasks/index_endpoint_rule_alerts';
|
||||
import { disableExpandableFlyoutAdvancedSettings } from '../../tasks/common';
|
||||
import { generateRandomStringName } from '../../tasks/utils';
|
||||
import { APP_ALERTS_PATH } from '../../../../../common/constants';
|
||||
import { closeAllToasts } from '../../tasks/toasts';
|
||||
import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts';
|
||||
import type { ReturnTypeFromChainable } from '../../types';
|
||||
import { indexEndpointRuleAlerts } from '../../tasks/index_endpoint_rule_alerts';
|
||||
|
||||
import { login, ROLE } from '../../../tasks/login';
|
||||
import { login, ROLE } from '../../tasks/login';
|
||||
|
||||
describe('Results', { tags: '@ess' }, () => {
|
||||
let endpointData: ReturnTypeFromChainable<typeof indexEndpointHosts> | undefined;
|
|
@ -5,19 +5,19 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { deleteAllLoadedEndpointData } from '../../tasks/delete_all_endpoint_data';
|
||||
import { getAlertsTableRows, navigateToAlertsList } from '../../screens/alerts';
|
||||
import { waitForEndpointAlerts } from '../../tasks/alerts';
|
||||
import { request } from '../../tasks/common';
|
||||
import { createAgentPolicyTask, getEndpointIntegrationVersion } from '../../tasks/fleet';
|
||||
import { createEndpointHost } from '../../tasks/create_endpoint_host';
|
||||
import type { IndexedFleetEndpointPolicyResponse } from '../../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy';
|
||||
import { enableAllPolicyProtections } from '../../tasks/endpoint_policy';
|
||||
import type { PolicyData, ResponseActionApiResponse } from '../../../../../common/endpoint/types';
|
||||
import type { CreateAndEnrollEndpointHostResponse } from '../../../../../scripts/endpoint/common/endpoint_host_services';
|
||||
import { login } from '../../tasks/login';
|
||||
import { EXECUTE_ROUTE } from '../../../../../common/endpoint/constants';
|
||||
import { waitForActionToComplete } from '../../tasks/response_actions';
|
||||
import { deleteAllLoadedEndpointData } from '../tasks/delete_all_endpoint_data';
|
||||
import { getAlertsTableRows, navigateToAlertsList } from '../screens/alerts';
|
||||
import { waitForEndpointAlerts } from '../tasks/alerts';
|
||||
import { request } from '../tasks/common';
|
||||
import { createAgentPolicyTask, getEndpointIntegrationVersion } from '../tasks/fleet';
|
||||
import { createEndpointHost } from '../tasks/create_endpoint_host';
|
||||
import type { IndexedFleetEndpointPolicyResponse } from '../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy';
|
||||
import { enableAllPolicyProtections } from '../tasks/endpoint_policy';
|
||||
import type { PolicyData, ResponseActionApiResponse } from '../../../../common/endpoint/types';
|
||||
import type { CreateAndEnrollEndpointHostResponse } from '../../../../scripts/endpoint/common/endpoint_host_services';
|
||||
import { login } from '../tasks/login';
|
||||
import { EXECUTE_ROUTE } from '../../../../common/endpoint/constants';
|
||||
import { waitForActionToComplete } from '../tasks/response_actions';
|
||||
|
||||
describe(
|
||||
'Endpoint generated alerts',
|
|
@ -5,9 +5,9 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { closeAllToasts } from '../../tasks/toasts';
|
||||
import { login } from '../../tasks/login';
|
||||
import { loadPage } from '../../tasks/common';
|
||||
import { closeAllToasts } from '../tasks/toasts';
|
||||
import { login } from '../tasks/login';
|
||||
import { loadPage } from '../tasks/common';
|
||||
|
||||
describe('When defining a kibana role for Endpoint security access', { tags: '@ess' }, () => {
|
||||
const getAllSubFeatureRows = (): Cypress.Chainable<JQuery<HTMLElement>> => {
|
|
@ -18,6 +18,7 @@ import {
|
|||
describe(
|
||||
'When on the Endpoint List in Security Essentials PLI',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [{ product_line: 'security', product_tier: 'essentials' }],
|
||||
|
|
|
@ -14,6 +14,7 @@ import { getEndpointManagementPageList } from '../../../screens';
|
|||
describe(
|
||||
'App Features for Security Complete PLI',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: { productTypes: [{ product_line: 'security', product_tier: 'complete' }] },
|
||||
},
|
||||
|
|
|
@ -17,6 +17,7 @@ import {
|
|||
describe(
|
||||
'App Features for Security Complete PLI with Endpoint Complete Addon',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [
|
||||
|
|
|
@ -14,6 +14,7 @@ import { getEndpointManagementPageList } from '../../../screens';
|
|||
describe(
|
||||
'App Features for Security Essential PLI',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [{ product_line: 'security', product_tier: 'essentials' }],
|
||||
|
|
|
@ -17,6 +17,7 @@ import {
|
|||
describe(
|
||||
'App Features for Security Essentials PLI with Endpoint Essentials Addon',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [
|
||||
|
|
|
@ -12,6 +12,7 @@ import type { IndexedFleetEndpointPolicyResponse } from '../../../../../common/e
|
|||
describe(
|
||||
'When displaying the Policy Details in Security Essentials PLI',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [{ product_line: 'security', product_tier: 'essentials' }],
|
||||
|
|
|
@ -33,6 +33,7 @@ import {
|
|||
describe(
|
||||
'User Roles for Security Complete PLI with Endpoint Complete addon',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [
|
||||
|
|
|
@ -26,6 +26,7 @@ import {
|
|||
describe(
|
||||
'Roles for Security Essential PLI with Endpoint Essentials addon',
|
||||
{
|
||||
tags: ['@serverless', '@brokenInServerless'],
|
||||
env: {
|
||||
ftrConfig: {
|
||||
productTypes: [
|
||||
|
|
|
@ -93,7 +93,7 @@ ${JSON.stringify(argv, null, 2)}
|
|||
----------------------------------------------
|
||||
`);
|
||||
|
||||
const isOpen = argv._[0] === 'open';
|
||||
const isOpen = argv._.includes('open');
|
||||
|
||||
const cypressConfigFilePath = require.resolve(`../../${argv.configFile}`) as string;
|
||||
const cypressConfigFile = await import(cypressConfigFilePath);
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
"exclude": [
|
||||
"target/**/*",
|
||||
"**/cypress/**",
|
||||
"public/management/cypress_endpoint.config.ts",
|
||||
"public/management/cypress.config.ts"
|
||||
],
|
||||
"kbn_references": [
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue