[Security Solution] Creates Investigations cypress execution (#158236)

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Patryk Kopycinski <contact@patrykkopycinski.com>
This commit is contained in:
Gloria Hornero 2023-05-26 16:37:51 +02:00 committed by GitHub
parent f84e2d6545
commit cf7ed17163
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 466 additions and 371 deletions

View file

@ -39,6 +39,7 @@ disabled:
- x-pack/test/security_solution_cypress/ccs_config.ts
- x-pack/test/security_solution_cypress/cli_config.ts
- x-pack/test/security_solution_cypress/cli_config_parallel.ts
- x-pack/test/security_solution_cypress/cli_config_investigations_parallel.ts
- x-pack/test/security_solution_cypress/config.firefox.ts
- x-pack/test/security_solution_cypress/config.ts
- x-pack/test/security_solution_cypress/response_ops_cli_config.ts

View file

@ -63,6 +63,20 @@ steps:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/steps/functional/security_solution_investigations.sh
label: 'Investigations - Security Solution Tests'
agents:
queue: n2-4-spot
depends_on: build
timeout_in_minutes: 120
parallelism: 4
retry:
automatic:
- exit_status: '-1'
limit: 3
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/steps/functional/synthetics_plugin.sh
label: 'Synthetics @elastic/synthetics Tests'
agents:

View file

@ -0,0 +1,14 @@
steps:
- command: .buildkite/scripts/steps/functional/security_solution_investigations.sh
label: 'Investigations - Security Solution Tests'
agents:
queue: n2-4-spot
depends_on: build
timeout_in_minutes: 120
parallelism: 4
retry:
automatic:
- exit_status: '-1'
limit: 3
- exit_status: '*'
limit: 1

View file

@ -73,6 +73,9 @@ const uploadPipeline = (pipelineContent: string | object) => {
GITHUB_PR_LABELS.includes('ci:all-cypress-suites')
) {
pipeline.push(getPipeline('.buildkite/pipelines/pull_request/security_solution.yml'));
pipeline.push(
getPipeline('.buildkite/pipelines/pull_request/security_solution_investigations.yml')
);
pipeline.push(getPipeline('.buildkite/pipelines/pull_request/defend_workflows.yml'));
}

View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
source .buildkite/scripts/steps/functional/common.sh
export JOB=kibana-security-solution-chrome
export CLI_NUMBER=${CLI_NUMBER:-$((BUILDKITE_PARALLEL_JOB+1))}
export CLI_COUNT=${CLI_COUNT:-$BUILDKITE_PARALLEL_JOB_COUNT}
echo "--- Security Solution tests (Chrome)"
node scripts/functional_tests \
--debug --bail \
--kibana-install-dir "$KIBANA_BUILD_LOCATION" \
--config x-pack/test/security_solution_cypress/cli_config_investigations_parallel.ts

5
.github/CODEOWNERS vendored
View file

@ -1006,10 +1006,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib
/x-pack/plugins/security_solution/common/search_strategy/timeline @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/common/types/timeline @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/cypress/e2e/timeline_templates @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/cypress/e2e/timeline @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/cypress/e2e/detection_alerts @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/cypress/e2e/urls @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/cypress/e2e/investigations @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/public/common/components/alerts_viewer @elastic/security-threat-hunting-investigations
/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_action @elastic/security-threat-hunting-investigations

View file

@ -5,18 +5,18 @@
* 2.0.
*/
import { OVERLAY_CONTAINER } from '../../screens/alerts';
import { OVERLAY_CONTAINER } from '../../../screens/alerts';
import {
closeAnalyzer,
closeSessionViewerFromAlertTable,
openAnalyzerForFirstAlertInTimeline,
openSessionViewerFromAlertTable,
} from '../../tasks/alerts';
import { cleanKibana } from '../../tasks/common';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver';
import { login, visit } from '../../tasks/login';
import { ALERTS_URL } from '../../urls/navigation';
} from '../../../tasks/alerts';
import { cleanKibana } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL } from '../../../urls/navigation';
describe('Alerts Table Action column', { testIsolation: false }, () => {
before(() => {

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import { getNewRule } from '../../objects/rule';
import { CELL_COPY_BUTTON, FILTER_BADGE, SHOW_TOP_N_HEADER } from '../../screens/alerts';
import { getNewRule } from '../../../objects/rule';
import { CELL_COPY_BUTTON, FILTER_BADGE, SHOW_TOP_N_HEADER } from '../../../screens/alerts';
import {
ALERT_TABLE_ACTIONS_HEADER,
ALERT_TABLE_FILE_NAME_HEADER,
@ -14,7 +14,7 @@ import {
ALERT_TABLE_SEVERITY_HEADER,
ALERT_TABLE_SEVERITY_VALUES,
PROVIDER_BADGE,
} from '../../screens/timeline';
} from '../../../screens/timeline';
import {
scrollAlertTableColumnIntoView,
@ -24,21 +24,21 @@ import {
clickExpandActions,
filterOutAlertProperty,
closeTopNAlertProperty,
} from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { login, visit } from '../../tasks/login';
} from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { login, visit } from '../../../tasks/login';
import {
clearKqlQueryBar,
fillAddFilterForm,
fillKqlQueryBar,
openAddFilterPopover,
removeKqlFilter,
} from '../../tasks/search_bar';
import { closeTimeline, openActiveTimeline, removeDataProvider } from '../../tasks/timeline';
} from '../../../tasks/search_bar';
import { closeTimeline, openActiveTimeline, removeDataProvider } from '../../../tasks/timeline';
import { ALERTS_URL } from '../../urls/navigation';
import { ALERTS_URL } from '../../../urls/navigation';
describe('Alerts cell actions', { testIsolation: false }, () => {
before(() => {
cleanKibana();

View file

@ -14,21 +14,26 @@ import {
OVERVIEW_RULE,
TABLE_CONTAINER,
TABLE_ROWS,
} from '../../screens/alerts_details';
import { closeAlertFlyout, expandFirstAlert } from '../../tasks/alerts';
import { changeAlertStatusTo, filterBy, openJsonView, openTable } from '../../tasks/alerts_details';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver';
import { login, visit, visitWithoutDateRange } from '../../tasks/login';
import { getNewRule, getUnmappedRule } from '../../objects/rule';
import { ALERTS_URL } from '../../urls/navigation';
import { tablePageSelector } from '../../screens/table_pagination';
import { ALERTS_TABLE_COUNT } from '../../screens/timeline';
import { ALERT_SUMMARY_SEVERITY_DONUT_CHART } from '../../screens/alerts';
import { getLocalstorageEntryAsObject } from '../../helpers/common';
import { goToRuleDetails } from '../../tasks/alerts_detection_rules';
} from '../../../screens/alerts_details';
import { closeAlertFlyout, expandFirstAlert } from '../../../tasks/alerts';
import {
changeAlertStatusTo,
filterBy,
openJsonView,
openTable,
} from '../../../tasks/alerts_details';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver';
import { login, visit, visitWithoutDateRange } from '../../../tasks/login';
import { getNewRule, getUnmappedRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { tablePageSelector } from '../../../screens/table_pagination';
import { ALERTS_TABLE_COUNT } from '../../../screens/timeline';
import { ALERT_SUMMARY_SEVERITY_DONUT_CHART } from '../../../screens/alerts';
import { getLocalstorageEntryAsObject } from '../../../helpers/common';
import { goToRuleDetails } from '../../../tasks/alerts_detection_rules';
describe('Alert details flyout', () => {
describe('Basic functions', () => {

View file

@ -5,18 +5,21 @@
* 2.0.
*/
import { getBuildingBlockRule } from '../../objects/rule';
import { OVERVIEW_ALERTS_HISTOGRAM_EMPTY } from '../../screens/overview';
import { HIGHLIGHTED_ROWS_IN_TABLE } from '../../screens/rule_details';
import { OVERVIEW } from '../../screens/security_header';
import { goToRuleDetails } from '../../tasks/alerts_detection_rules';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { waitForAlertsToPopulate, waitForTheRuleToBeExecuted } from '../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { navigateFromHeaderTo } from '../../tasks/security_header';
import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../urls/navigation';
import { getBuildingBlockRule } from '../../../objects/rule';
import { OVERVIEW_ALERTS_HISTOGRAM_EMPTY } from '../../../screens/overview';
import { HIGHLIGHTED_ROWS_IN_TABLE } from '../../../screens/rule_details';
import { OVERVIEW } from '../../../screens/security_header';
import { goToRuleDetails } from '../../../tasks/alerts_detection_rules';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import {
waitForAlertsToPopulate,
waitForTheRuleToBeExecuted,
} from '../../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import { navigateFromHeaderTo } from '../../../tasks/security_header';
import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation';
const EXPECTED_NUMBER_OF_ALERTS = 5;

View file

@ -5,15 +5,15 @@
* 2.0.
*/
import { ROLES } from '../../../common/test';
import { getNewRule } from '../../objects/rule';
import { ROLES } from '../../../../common/test';
import { getNewRule } from '../../../objects/rule';
import {
ALERTS_COUNT,
TAKE_ACTION_POPOVER_BTN,
SELECTED_ALERTS,
ALERT_COUNT_TABLE_COLUMN,
ALERT_EMBEDDABLE_EMPTY_PROMPT,
} from '../../screens/alerts';
} from '../../../screens/alerts';
import {
selectNumberOfAlerts,
@ -30,14 +30,14 @@ import {
waitForPageFilters,
sumAlertCountFromAlertCountTable,
parseAlertsCountToInt,
} from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana, deleteAlertsAndRules } from '../../tasks/common';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver';
import { login, visit } from '../../tasks/login';
} from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL } from '../../urls/navigation';
import { ALERTS_URL } from '../../../urls/navigation';
describe('Changing alert status', () => {
before(() => {

View file

@ -6,7 +6,7 @@
*/
import { encode } from '@kbn/rison';
import { getNewRule } from '../../objects/rule';
import { getNewRule } from '../../../objects/rule';
import {
CONTROL_FRAMES,
CONTROL_FRAME_TITLE,
@ -17,13 +17,13 @@ import {
OPTION_LIST_VALUES,
OPTION_SELECTABLE,
FILTER_GROUP_CONTROL_ACTION_EDIT,
} from '../../screens/common/filter_group';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { login, visit } from '../../tasks/login';
import { ALERTS_URL } from '../../urls/navigation';
import { DEFAULT_DETECTION_PAGE_FILTERS } from '../../../common/constants';
import { formatPageFilterSearchParam } from '../../../common/utils/format_page_filter_search_param';
} from '../../../screens/common/filter_group';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL } from '../../../urls/navigation';
import { DEFAULT_DETECTION_PAGE_FILTERS } from '../../../../common/constants';
import { formatPageFilterSearchParam } from '../../../../common/utils/format_page_filter_search_param';
import {
closePageFilterPopover,
markAcknowledgedFirstAlert,
@ -33,10 +33,10 @@ import {
visitAlertsPageWithCustomFilters,
waitForAlerts,
waitForPageFilters,
} from '../../tasks/alerts';
import { ALERTS_COUNT } from '../../screens/alerts';
import { navigateFromHeaderTo } from '../../tasks/security_header';
import { ALERTS, CASES } from '../../screens/security_header';
} from '../../../tasks/alerts';
import { ALERTS_COUNT } from '../../../screens/alerts';
import { navigateFromHeaderTo } from '../../../tasks/security_header';
import { ALERTS, CASES } from '../../../screens/security_header';
import {
addNewFilterGroupControlValues,
cancelFieldEditing,
@ -45,7 +45,7 @@ import {
editFilterGroupControl,
editFilterGroupControls,
saveFilterGroupControls,
} from '../../tasks/common/filter_group';
} from '../../../tasks/common/filter_group';
const customFilters = [
{

View file

@ -26,7 +26,7 @@ import {
DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON,
DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_SESSION_VIEW_CONTENT,
DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_CONTENT,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
import {
expandDocumentDetailsExpandableFlyoutLeftSection,
expandFirstAlertExpandableFlyout,
@ -40,13 +40,13 @@ import {
openThreatIntelligence,
openPrevalence,
openCorrelations,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -5,19 +5,19 @@
* 2.0.
*/
import { ANALYZER_NODE } from '../../../screens/alerts';
import { DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_CONTENT } from '../../../screens/document_expandable_flyout';
import { ANALYZER_NODE } from '../../../../screens/alerts';
import { DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_CONTENT } from '../../../../screens/document_expandable_flyout';
import {
expandFirstAlertExpandableFlyout,
openGraphAnalyzer,
expandDocumentDetailsExpandableFlyoutLeftSection,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -8,19 +8,19 @@
import {
DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_USER_DETAILS,
DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_HOST_DETAILS,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
import {
expandFirstAlertExpandableFlyout,
openInsightsTab,
openEntities,
expandDocumentDetailsExpandableFlyoutLeftSection,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -5,17 +5,17 @@
* 2.0.
*/
import { DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_SESSION_VIEW_NO_DATA } from '../../../screens/document_expandable_flyout';
import { DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_SESSION_VIEW_NO_DATA } from '../../../../screens/document_expandable_flyout';
import {
expandFirstAlertExpandableFlyout,
expandDocumentDetailsExpandableFlyoutLeftSection,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -5,11 +5,11 @@
* 2.0.
*/
import { cleanKibana } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { expandFirstAlertExpandableFlyout } from '../../../tasks/document_expandable_flyout';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL } from '../../../urls/navigation';
import { cleanKibana } from '../../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
import { expandFirstAlertExpandableFlyout } from '../../../../tasks/document_expandable_flyout';
import { login, visit } from '../../../../tasks/login';
import { ALERTS_URL } from '../../../../urls/navigation';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -15,7 +15,7 @@ import {
DOCUMENT_DETAILS_FLYOUT_TABLE_TAB,
DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_CONTENT,
DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_EVENT_TYPE_ROW,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
import {
collapseDocumentDetailsExpandableFlyoutLeftSection,
expandDocumentDetailsExpandableFlyoutLeftSection,
@ -24,13 +24,13 @@ import {
openOverviewTab,
openTableTab,
scrollWithinDocumentDetailsExpandableFlyoutRightSection,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -34,7 +34,7 @@ import {
NEW_CASE_DESCRIPTION_INPUT,
NEW_CASE_NAME_INPUT,
VIEW_CASE_TOASTER_LINK,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
import {
expandFirstAlertExpandableFlyout,
navigateToAlertsPage,
@ -44,13 +44,13 @@ import {
openTableTab,
openTakeActionButton,
openTakeActionButtonAndSelectItem,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
const createNewCaseFromCases = () => {
navigateToCasesPage();

View file

@ -12,14 +12,14 @@ import {
DOCUMENT_DETAILS_OVERVIEW_TAB_HEADER_SEVERITY,
DOCUMENT_DETAILS_OVERVIEW_TAB_HEADER_SEVERITY_VALUE,
DOCUMENT_DETAILS_OVERVIEW_TAB_HEADER_TITLE,
} from '../../../screens/document_expandable_flyout';
import { expandFirstAlertExpandableFlyout } from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../screens/document_expandable_flyout';
import { expandFirstAlertExpandableFlyout } from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -38,7 +38,7 @@ import {
DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_CONTENT,
DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VALUES,
DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_VIEW_ALL_BUTTON,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
import {
expandFirstAlertExpandableFlyout,
openOverviewTab,
@ -46,13 +46,13 @@ import {
toggleOverviewTabInvestigationSection,
toggleOverviewTabInsightsSection,
toggleOverviewTabVisualizationsSection,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -5,15 +5,15 @@
* 2.0.
*/
import { closeTimeline, openActiveTimeline } from '../../../tasks/timeline';
import { PROVIDER_BADGE } from '../../../screens/timeline';
import { removeKqlFilter } from '../../../tasks/search_bar';
import { FILTER_BADGE } from '../../../screens/alerts';
import { closeTimeline, openActiveTimeline } from '../../../../tasks/timeline';
import { PROVIDER_BADGE } from '../../../../screens/timeline';
import { removeKqlFilter } from '../../../../tasks/search_bar';
import { FILTER_BADGE } from '../../../../screens/alerts';
import {
DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_ID_ROW,
DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_ROW_CELL_COPY_TO_CLIPBOARD,
DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_TIMESTAMP_ROW,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
import {
addToTimelineTableTabTable,
clearFilterTableTabTable,
@ -23,13 +23,13 @@ import {
filterOutTableTabTable,
filterTableTabTable,
openTableTab,
} from '../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
} from '../../../../tasks/document_expandable_flyout';
import { cleanKibana } from '../../../../tasks/common';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { getNewRule } from '../../../../objects/rule';
import { ALERTS_URL } from '../../../../urls/navigation';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -5,17 +5,17 @@
* 2.0.
*/
import { getNewRule } from '../../../objects/rule';
import { cleanKibana } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { expandFirstAlertExpandableFlyout } from '../../../tasks/document_expandable_flyout';
import { login, visit } from '../../../tasks/login';
import { createRule } from '../../../tasks/api_calls/rules';
import { ALERTS_URL } from '../../../urls/navigation';
import { getNewRule } from '../../../../objects/rule';
import { cleanKibana } from '../../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule';
import { expandFirstAlertExpandableFlyout } from '../../../../tasks/document_expandable_flyout';
import { login, visit } from '../../../../tasks/login';
import { createRule } from '../../../../tasks/api_calls/rules';
import { ALERTS_URL } from '../../../../urls/navigation';
import {
DOCUMENT_DETAILS_FLYOUT_CLOSE_BUTTON,
DOCUMENT_DETAILS_FLYOUT_HEADER_TITLE,
} from '../../../screens/document_expandable_flyout';
} from '../../../../screens/document_expandable_flyout';
// Skipping these for now as the feature is protected behind a feature flag set to false by default
// To run the tests locally, add 'securityFlyoutEnabled' in the Cypress config.ts here https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/config.ts#L50

View file

@ -5,18 +5,18 @@
* 2.0.
*/
import { closeTimeline } from '../../tasks/timeline';
import { getNewRule } from '../../objects/rule';
import { PROVIDER_BADGE, QUERY_TAB_BUTTON, TIMELINE_TITLE } from '../../screens/timeline';
import { FILTER_BADGE } from '../../screens/alerts';
import { closeTimeline } from '../../../tasks/timeline';
import { getNewRule } from '../../../objects/rule';
import { PROVIDER_BADGE, QUERY_TAB_BUTTON, TIMELINE_TITLE } from '../../../screens/timeline';
import { FILTER_BADGE } from '../../../screens/alerts';
import { expandFirstAlert, investigateFirstAlertInTimeline } from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { login, visit } from '../../tasks/login';
import { expandFirstAlert, investigateFirstAlertInTimeline } from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL } from '../../urls/navigation';
import { ALERTS_URL } from '../../../urls/navigation';
import {
ALERT_FLYOUT,
INSIGHTS_INVESTIGATE_ANCESTRY_ALERTS_IN_TIMELINE_BUTTON,
@ -24,8 +24,8 @@ import {
INSIGHTS_RELATED_ALERTS_BY_ANCESTRY,
INSIGHTS_RELATED_ALERTS_BY_SESSION,
SUMMARY_VIEW_INVESTIGATE_IN_TIMELINE_BUTTON,
} from '../../screens/alerts_details';
import { verifyInsightCount } from '../../tasks/alerts_details';
} from '../../../screens/alerts_details';
import { verifyInsightCount } from '../../../tasks/alerts_details';
describe('Investigate in timeline', { testIsolation: false }, () => {
before(() => {

View file

@ -5,21 +5,21 @@
* 2.0.
*/
import { expandFirstAlert, waitForAlerts } from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { login, visit } from '../../tasks/login';
import { expandFirstAlert, waitForAlerts } from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { getNewRule } from '../../objects/rule';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_URL } from '../../urls/navigation';
import { ALERTS_URL } from '../../../urls/navigation';
import {
OPEN_ALERT_DETAILS_PAGE_CONTEXT_MENU_BTN,
TIMELINE_CONTEXT_MENU_BTN,
ALERTS_REFRESH_BTN,
} from '../../screens/alerts';
import { PAGE_TITLE } from '../../screens/common/page';
import { OPEN_ALERT_DETAILS_PAGE } from '../../screens/alerts_details';
} from '../../../screens/alerts';
import { PAGE_TITLE } from '../../../screens/common/page';
import { OPEN_ALERT_DETAILS_PAGE } from '../../../screens/alerts_details';
// This is skipped as the details page POC will be removed in favor of the expanded alert flyout
// https://github.com/elastic/kibana/issues/154477

View file

@ -5,17 +5,17 @@
* 2.0.
*/
import { ANALYZER_NODE } from '../../screens/alerts';
import { ANALYZER_NODE } from '../../../screens/alerts';
import { openAnalyzerForFirstAlertInTimeline } from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { getNewRule } from '../../objects/rule';
import { cleanKibana } from '../../tasks/common';
import { setStartDate } from '../../tasks/date_picker';
import { TOASTER } from '../../screens/alerts_detection_rules';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { login, visit } from '../../tasks/login';
import { ALERTS_URL } from '../../urls/navigation';
import { openAnalyzerForFirstAlertInTimeline } from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { getNewRule } from '../../../objects/rule';
import { cleanKibana } from '../../../tasks/common';
import { setStartDate } from '../../../tasks/date_picker';
import { TOASTER } from '../../../screens/alerts_detection_rules';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL } from '../../../urls/navigation';
describe('Analyze events view for alerts', () => {
before(() => {

View file

@ -4,13 +4,13 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { getNewRule } from '../../objects/rule';
import { ALERTS_COUNT } from '../../screens/alerts';
import { getNewRule } from '../../../objects/rule';
import { ALERTS_COUNT } from '../../../screens/alerts';
import {
CONTROL_FRAMES,
OPTION_LIST_LABELS,
OPTION_LIST_VALUES,
} from '../../screens/common/filter_group';
} from '../../../screens/common/filter_group';
import {
ALERTS_DONUT_CHART,
@ -23,18 +23,18 @@ import {
USER_TABLE_ROW_SEV,
USER_TABLE_ROW_TOTAL_ALERTS,
USER_TABLE_USER_NAME_BTN,
} from '../../screens/detection_response';
import { DETECTION_RESPONSE } from '../../screens/security_header';
import { QUERY_TAB_BUTTON, TIMELINE_DATA_PROVIDERS_CONTAINER } from '../../screens/timeline';
import { waitForAlerts } from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { investigateDashboardItemInTimeline } from '../../tasks/dashboards/common';
import { waitToNavigateAwayFrom } from '../../tasks/kibana_navigation';
import { login, visit } from '../../tasks/login';
import { clearSearchBar, kqlSearch, navigateFromHeaderTo } from '../../tasks/security_header';
import { closeTimeline } from '../../tasks/timeline';
import { ALERTS_URL, DASHBOARDS_URL, DETECTIONS_RESPONSE_URL } from '../../urls/navigation';
} from '../../../screens/detection_response';
import { DETECTION_RESPONSE } from '../../../screens/security_header';
import { QUERY_TAB_BUTTON, TIMELINE_DATA_PROVIDERS_CONTAINER } from '../../../screens/timeline';
import { waitForAlerts } from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import { investigateDashboardItemInTimeline } from '../../../tasks/dashboards/common';
import { waitToNavigateAwayFrom } from '../../../tasks/kibana_navigation';
import { login, visit } from '../../../tasks/login';
import { clearSearchBar, kqlSearch, navigateFromHeaderTo } from '../../../tasks/security_header';
import { closeTimeline } from '../../../tasks/timeline';
import { ALERTS_URL, DASHBOARDS_URL, DETECTIONS_RESPONSE_URL } from '../../../urls/navigation';
const TEST_USER_NAME = 'test';
const SIEM_KIBANA_HOST_NAME = 'siem-kibana';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { getTimeline } from '../../objects/timeline';
import { getTimeline } from '../../../objects/timeline';
import {
FAVORITE_TIMELINE,
@ -18,18 +18,18 @@ import {
TIMELINE_FLYOUT_WRAPPER,
TIMELINE_QUERY,
TIMELINE_TITLE,
} from '../../screens/timeline';
} from '../../../screens/timeline';
import {
TIMELINES_DESCRIPTION,
TIMELINES_PINNED_EVENT_COUNT,
TIMELINES_NOTES_COUNT,
TIMELINES_FAVORITE,
} from '../../screens/timelines';
import { createTimeline } from '../../tasks/api_calls/timelines';
import { cleanKibana, deleteTimelines } from '../../tasks/common';
} from '../../../screens/timelines';
import { createTimeline } from '../../../tasks/api_calls/timelines';
import { cleanKibana, deleteTimelines } from '../../../tasks/common';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import {
addDescriptionToTimeline,
addFilter,
@ -43,10 +43,10 @@ import {
openTimelineTemplateFromSettings,
populateTimeline,
waitForTimelineChanges,
} from '../../tasks/timeline';
import { openTimeline, waitForTimelinesPanelToBeLoaded } from '../../tasks/timelines';
} from '../../../tasks/timeline';
import { openTimeline, waitForTimelinesPanelToBeLoaded } from '../../../tasks/timelines';
import { TIMELINES_URL } from '../../urls/navigation';
import { TIMELINES_URL } from '../../../urls/navigation';
describe('Timeline Templates', () => {
before(() => {

View file

@ -5,17 +5,17 @@
* 2.0.
*/
import { exportTimeline } from '../../tasks/timelines';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { exportTimeline } from '../../../tasks/timelines';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import {
expectedExportedTimelineTemplate,
getTimeline as getTimelineTemplate,
} from '../../objects/timeline';
} from '../../../objects/timeline';
import { TIMELINE_TEMPLATES_URL } from '../../urls/navigation';
import { createTimelineTemplate } from '../../tasks/api_calls/timelines';
import { cleanKibana } from '../../tasks/common';
import { searchByTitle } from '../../tasks/table_pagination';
import { TIMELINE_TEMPLATES_URL } from '../../../urls/navigation';
import { createTimelineTemplate } from '../../../tasks/api_calls/timelines';
import { cleanKibana } from '../../../tasks/common';
import { searchByTitle } from '../../../tasks/table_pagination';
describe('Export timelines', () => {
before(() => {

View file

@ -5,23 +5,23 @@
* 2.0.
*/
import { getNewRule } from '../../objects/rule';
import { SELECTED_ALERTS } from '../../screens/alerts';
import { SERVER_SIDE_EVENT_COUNT } from '../../screens/timeline';
import { selectAllAlerts, selectFirstPageAlerts } from '../../tasks/alerts';
import { createRule } from '../../tasks/api_calls/rules';
import { cleanKibana } from '../../tasks/common';
import { getNewRule } from '../../../objects/rule';
import { SELECTED_ALERTS } from '../../../screens/alerts';
import { SERVER_SIDE_EVENT_COUNT } from '../../../screens/timeline';
import { selectAllAlerts, selectFirstPageAlerts } from '../../../tasks/alerts';
import { createRule } from '../../../tasks/api_calls/rules';
import { cleanKibana } from '../../../tasks/common';
import {
bulkInvestigateSelectedEventsInTimeline,
selectAllEvents,
selectFirstPageEvents,
} from '../../tasks/common/event_table';
import { waitForAlertsToPopulate } from '../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver';
import { waitsForEventsToBeLoaded } from '../../tasks/hosts/events';
import { openEvents, openSessions } from '../../tasks/hosts/main';
import { login, visit } from '../../tasks/login';
import { ALERTS_URL, HOSTS_URL } from '../../urls/navigation';
} from '../../../tasks/common/event_table';
import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule';
import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver';
import { waitsForEventsToBeLoaded } from '../../../tasks/hosts/events';
import { openEvents, openSessions } from '../../../tasks/hosts/main';
import { login, visit } from '../../../tasks/login';
import { ALERTS_URL, HOSTS_URL } from '../../../urls/navigation';
describe('Bulk Investigate in Timeline', () => {
before(() => {

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import { getTimeline } from '../../objects/timeline';
import { ROLES } from '../../../common/test';
import { getTimeline } from '../../../objects/timeline';
import { ROLES } from '../../../../common/test';
import {
LOCKED_ICON,
@ -23,13 +23,13 @@ import {
EDIT_TIMELINE_BTN,
EDIT_TIMELINE_TOOLTIP,
TIMELINE_CORRELATION_INPUT,
} from '../../screens/timeline';
import { createTimelineTemplate } from '../../tasks/api_calls/timelines';
} from '../../../screens/timeline';
import { createTimelineTemplate } from '../../../tasks/api_calls/timelines';
import { cleanKibana, deleteTimelines } from '../../tasks/common';
import { login, visit, visitWithoutDateRange } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { selectCustomTemplates } from '../../tasks/templates';
import { cleanKibana, deleteTimelines } from '../../../tasks/common';
import { login, visit, visitWithoutDateRange } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import { selectCustomTemplates } from '../../../tasks/templates';
import {
addEqlToTimeline,
addFilter,
@ -43,10 +43,10 @@ import {
pinFirstEvent,
populateTimeline,
waitForTimelineChanges,
} from '../../tasks/timeline';
} from '../../../tasks/timeline';
import { OVERVIEW_URL, TIMELINE_TEMPLATES_URL } from '../../urls/navigation';
import { EQL_QUERY_VALIDATION_ERROR } from '../../screens/create_new_rule';
import { OVERVIEW_URL, TIMELINE_TEMPLATES_URL } from '../../../urls/navigation';
import { EQL_QUERY_VALIDATION_ERROR } from '../../../screens/create_new_rule';
describe('Create a timeline from a template', () => {
before(() => {

View file

@ -11,11 +11,11 @@ import {
TIMELINE_FLYOUT_HEADER,
GET_TIMELINE_GRID_CELL,
TIMELINE_DATA_PROVIDERS_CONTAINER,
} from '../../screens/timeline';
} from '../../../screens/timeline';
import { waitForAllHostsToBeLoaded } from '../../tasks/hosts/all_hosts';
import { waitForAllHostsToBeLoaded } from '../../../tasks/hosts/all_hosts';
import { login, visit } from '../../tasks/login';
import { login, visit } from '../../../tasks/login';
import {
addDataProvider,
updateDataProviderbyDraggingField,
@ -24,10 +24,10 @@ import {
waitForTimelineChanges,
createNewTimeline,
updateDataProviderByFieldHoverAction,
} from '../../tasks/timeline';
import { getTimeline } from '../../objects/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { cleanKibana, scrollToBottom } from '../../tasks/common';
} from '../../../tasks/timeline';
import { getTimeline } from '../../../objects/timeline';
import { HOSTS_URL } from '../../../urls/navigation';
import { cleanKibana, scrollToBottom } from '../../../tasks/common';
describe('timeline data providers', () => {
before(() => {

View file

@ -10,15 +10,15 @@ import {
selectTimeline,
selectAllTimelines,
exportSelectedTimelines,
} from '../../tasks/timelines';
import { login, visitWithoutDateRange } from '../../tasks/login';
} from '../../../tasks/timelines';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import { TIMELINES_URL } from '../../urls/navigation';
import { TOASTER } from '../../screens/alerts_detection_rules';
import { TIMELINE_CHECKBOX } from '../../screens/timelines';
import { createTimeline } from '../../tasks/api_calls/timelines';
import { expectedExportedTimeline, getTimeline } from '../../objects/timeline';
import { cleanKibana } from '../../tasks/common';
import { TIMELINES_URL } from '../../../urls/navigation';
import { TOASTER } from '../../../screens/alerts_detection_rules';
import { TIMELINE_CHECKBOX } from '../../../screens/timelines';
import { createTimeline } from '../../../tasks/api_calls/timelines';
import { expectedExportedTimeline, getTimeline } from '../../../objects/timeline';
import { cleanKibana } from '../../../tasks/common';
describe('Export timelines', () => {
before(() => {

View file

@ -16,9 +16,9 @@ import {
FIELDS_BROWSER_SELECTED_CATEGORIES_BADGES,
FIELDS_BROWSER_CATEGORY_BADGE,
FIELDS_BROWSER_VIEW_BUTTON,
} from '../../screens/fields_browser';
import { TIMELINE_FIELDS_BUTTON } from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
} from '../../../screens/fields_browser';
import { TIMELINE_FIELDS_BUTTON } from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import {
addsHostGeoCityNameToTimeline,
@ -31,12 +31,12 @@ import {
toggleCategory,
activateViewSelected,
activateViewAll,
} from '../../tasks/fields_browser';
import { login, visit } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { openTimelineFieldsBrowser, populateTimeline } from '../../tasks/timeline';
} from '../../../tasks/fields_browser';
import { login, visit } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import { openTimelineFieldsBrowser, populateTimeline } from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
const defaultHeaders = [
{ id: '@timestamp' },

View file

@ -5,23 +5,23 @@
* 2.0.
*/
import { TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON } from '../../screens/security_main';
import { CREATE_NEW_TIMELINE, TIMELINE_FLYOUT_HEADER } from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
import { TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON } from '../../../screens/security_main';
import { CREATE_NEW_TIMELINE, TIMELINE_FLYOUT_HEADER } from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import { waitForAllHostsToBeLoaded } from '../../tasks/hosts/all_hosts';
import { login, visit } from '../../tasks/login';
import { waitForAllHostsToBeLoaded } from '../../../tasks/hosts/all_hosts';
import { login, visit } from '../../../tasks/login';
import {
closeTimelineUsingCloseButton,
closeTimelineUsingToggle,
openTimelineUsingToggle,
} from '../../tasks/security_main';
} from '../../../tasks/security_main';
import {
closeCreateTimelineOptionsPopover,
openCreateTimelineOptionsPopover,
} from '../../tasks/timeline';
} from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
describe('timeline flyout button', () => {
before(() => {

View file

@ -5,18 +5,18 @@
* 2.0.
*/
import { TIMELINE_HEADER, TIMELINE_TABS } from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
import { TIMELINE_HEADER, TIMELINE_TABS } from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../tasks/login';
import { login, visit } from '../../../tasks/login';
import {
openTimelineUsingToggle,
enterFullScreenMode,
exitFullScreenMode,
} from '../../tasks/security_main';
import { populateTimeline } from '../../tasks/timeline';
} from '../../../tasks/security_main';
import { populateTimeline } from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
describe('Toggle full screen', () => {
before(() => {

View file

@ -5,13 +5,13 @@
* 2.0.
*/
import { INSPECT_MODAL } from '../../screens/inspect';
import { INSPECT_MODAL } from '../../../screens/inspect';
import { login, visit } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { executeTimelineKQL, openTimelineInspectButton } from '../../tasks/timeline';
import { login, visit } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import { executeTimelineKQL, openTimelineInspectButton } from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
describe('Inspect', () => {
context('Timeline', () => {

View file

@ -5,13 +5,13 @@
* 2.0.
*/
import { cleanKibana, reload } from '../../tasks/common';
import { login, visit } from '../../tasks/login';
import { HOSTS_URL } from '../../urls/navigation';
import { openEvents } from '../../tasks/hosts/main';
import { DATAGRID_HEADERS } from '../../screens/timeline';
import { waitsForEventsToBeLoaded } from '../../tasks/hosts/events';
import { removeColumn } from '../../tasks/timeline';
import { cleanKibana, reload } from '../../../tasks/common';
import { login, visit } from '../../../tasks/login';
import { HOSTS_URL } from '../../../urls/navigation';
import { openEvents } from '../../../tasks/hosts/main';
import { DATAGRID_HEADERS } from '../../../screens/timeline';
import { waitsForEventsToBeLoaded } from '../../../tasks/hosts/events';
import { removeColumn } from '../../../tasks/timeline';
// TODO: Fix bug in persisting the columns of timeline
describe.skip('persistent timeline', () => {

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { getTimelineNonValidQuery } from '../../objects/timeline';
import { getTimelineNonValidQuery } from '../../../objects/timeline';
import {
DELETE_NOTE,
@ -16,21 +16,21 @@ import {
NOTES_TEXT,
NOTES_TEXT_AREA,
MARKDOWN_INVESTIGATE_BUTTON,
} from '../../screens/timeline';
import { MODAL_CONFIRMATION_BTN } from '../../screens/alerts_detection_rules';
import { createTimeline } from '../../tasks/api_calls/timelines';
} from '../../../screens/timeline';
import { MODAL_CONFIRMATION_BTN } from '../../../screens/alerts_detection_rules';
import { createTimeline } from '../../../tasks/api_calls/timelines';
import { cleanKibana } from '../../tasks/common';
import { cleanKibana } from '../../../tasks/common';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import {
addNotesToTimeline,
goToNotesTab,
openTimelineById,
refreshTimelinesUntilTimeLinePresent,
} from '../../tasks/timeline';
} from '../../../tasks/timeline';
import { TIMELINES_URL } from '../../urls/navigation';
import { TIMELINES_URL } from '../../../urls/navigation';
const text = 'elastic';
const link = 'https://www.elastic.co/';

View file

@ -5,31 +5,35 @@
* 2.0.
*/
import { getTimeline } from '../../objects/timeline';
import { getTimeline } from '../../../objects/timeline';
import { TIMELINE_DESCRIPTION, TIMELINE_TITLE, OPEN_TIMELINE_MODAL } from '../../screens/timeline';
import {
TIMELINE_DESCRIPTION,
TIMELINE_TITLE,
OPEN_TIMELINE_MODAL,
} from '../../../screens/timeline';
import {
TIMELINES_DESCRIPTION,
TIMELINES_PINNED_EVENT_COUNT,
TIMELINES_NOTES_COUNT,
TIMELINES_FAVORITE,
} from '../../screens/timelines';
import { addNoteToTimeline } from '../../tasks/api_calls/notes';
} from '../../../screens/timelines';
import { addNoteToTimeline } from '../../../tasks/api_calls/notes';
import { createTimeline } from '../../tasks/api_calls/timelines';
import { createTimeline } from '../../../tasks/api_calls/timelines';
import { cleanKibana } from '../../tasks/common';
import { cleanKibana } from '../../../tasks/common';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import {
markAsFavorite,
openTimelineById,
openTimelineFromSettings,
pinFirstEvent,
refreshTimelinesUntilTimeLinePresent,
} from '../../tasks/timeline';
} from '../../../tasks/timeline';
import { TIMELINES_URL } from '../../urls/navigation';
import { TIMELINES_URL } from '../../../urls/navigation';
describe('Open timeline', () => {
before(() => {

View file

@ -9,20 +9,20 @@ import {
TIMELINES_OVERVIEW_TABLE,
TIMELINES_OVERVIEW_ONLY_FAVORITES,
TIMELINES_OVERVIEW_SEARCH,
} from '../../screens/timelines';
} from '../../../screens/timelines';
import {
getTimeline,
getFavoritedTimeline,
sharedTimelineTitleFragment,
} from '../../objects/timeline';
} from '../../../objects/timeline';
import { cleanKibana } from '../../tasks/common';
import { cleanKibana } from '../../../tasks/common';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { createTimeline, favoriteTimeline } from '../../tasks/api_calls/timelines';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import { createTimeline, favoriteTimeline } from '../../../tasks/api_calls/timelines';
import { TIMELINES_URL } from '../../urls/navigation';
import { TIMELINES_URL } from '../../../urls/navigation';
describe('timeline overview search', () => {
before(() => {

View file

@ -13,15 +13,15 @@ import {
TIMELINE_EVENTS_COUNT_PER_PAGE_OPTION,
TIMELINE_EVENTS_COUNT_PREV_PAGE,
TIMELINE_FLYOUT,
} from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
import { esArchiverLoad, esArchiverUnload } from '../../tasks/es_archiver';
} from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import { esArchiverLoad, esArchiverUnload } from '../../../tasks/es_archiver';
import { login, visit } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { populateTimeline } from '../../tasks/timeline';
import { login, visit } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import { populateTimeline } from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
const defaultPageSize = 25;
describe('Pagination', () => {

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { getTimeline } from '../../objects/timeline';
import { getTimeline } from '../../../objects/timeline';
import {
UNLOCKED_ICON,
@ -13,22 +13,22 @@ import {
TIMELINE_FILTER,
TIMELINE_QUERY,
NOTE_CARD_CONTENT,
} from '../../screens/timeline';
import { addNoteToTimeline } from '../../tasks/api_calls/notes';
import { createTimeline } from '../../tasks/api_calls/timelines';
} from '../../../screens/timeline';
import { addNoteToTimeline } from '../../../tasks/api_calls/notes';
import { createTimeline } from '../../../tasks/api_calls/timelines';
import { cleanKibana } from '../../tasks/common';
import { cleanKibana } from '../../../tasks/common';
import { login, visitWithoutDateRange } from '../../tasks/login';
import { login, visitWithoutDateRange } from '../../../tasks/login';
import {
addFilter,
openTimelineById,
persistNoteToFirstEvent,
pinFirstEvent,
refreshTimelinesUntilTimeLinePresent,
} from '../../tasks/timeline';
} from '../../../tasks/timeline';
import { TIMELINES_URL } from '../../urls/navigation';
import { TIMELINES_URL } from '../../../urls/navigation';
describe('Timeline query tab', () => {
before(() => {

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { elementsOverlap } from '../../helpers/rules';
import { elementsOverlap } from '../../../helpers/rules';
import {
TIMELINE_ROW_RENDERERS_DISABLE_ALL_BTN,
TIMELINE_ROW_RENDERERS_MODAL_CLOSE_BUTTON,
@ -15,14 +15,14 @@ import {
TIMELINE_ROW_RENDERERS_SURICATA_SIGNATURE,
TIMELINE_ROW_RENDERERS_SURICATA_SIGNATURE_TOOLTIP,
TIMELINE_ROW_RENDERERS_SURICATA_LINK_TOOLTIP,
} from '../../screens/timeline';
import { cleanKibana, deleteTimelines } from '../../tasks/common';
} from '../../../screens/timeline';
import { cleanKibana, deleteTimelines } from '../../../tasks/common';
import { login, visit } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { populateTimeline } from '../../tasks/timeline';
import { login, visit } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import { populateTimeline } from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
describe('Row renderers', () => {
before(() => {

View file

@ -11,19 +11,19 @@ import {
TIMELINE_KQLMODE_FILTER,
TIMELINE_KQLMODE_SEARCH,
TIMELINE_SEARCH_OR_FILTER,
} from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
} from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import { login, visit, visitWithoutDateRange } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { login, visit, visitWithoutDateRange } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import {
changeTimelineQueryLanguage,
executeTimelineKQL,
executeTimelineSearch,
} from '../../tasks/timeline';
import { waitForTimelinesPanelToBeLoaded } from '../../tasks/timelines';
} from '../../../tasks/timeline';
import { waitForTimelinesPanelToBeLoaded } from '../../../tasks/timelines';
import { HOSTS_URL, TIMELINES_URL } from '../../urls/navigation';
import { HOSTS_URL, TIMELINES_URL } from '../../../urls/navigation';
describe('Timeline search and filters', () => {
before(() => {

View file

@ -5,11 +5,11 @@
* 2.0.
*/
import { ID_HEADER_FIELD, TIMESTAMP_HEADER_FIELD } from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
import { ID_HEADER_FIELD, TIMESTAMP_HEADER_FIELD } from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import { login, visit } from '../../tasks/login';
import { openTimelineUsingToggle } from '../../tasks/security_main';
import { login, visit } from '../../../tasks/login';
import { openTimelineUsingToggle } from '../../../tasks/security_main';
import {
clickIdToggleField,
closeTimeline,
@ -17,9 +17,9 @@ import {
expandFirstTimelineEventDetails,
populateTimeline,
clickTimestampToggleField,
} from '../../tasks/timeline';
} from '../../../tasks/timeline';
import { HOSTS_URL } from '../../urls/navigation';
import { HOSTS_URL } from '../../../urls/navigation';
describe('toggle column in timeline', () => {
before(() => {

View file

@ -5,33 +5,33 @@
* 2.0.
*/
import type { Timeline } from '../../objects/timeline';
import type { Timeline } from '../../../objects/timeline';
import {
MODAL_CONFIRMATION_BTN,
MODAL_CONFIRMATION_CANCEL_BTN,
} from '../../screens/alerts_detection_rules';
} from '../../../screens/alerts_detection_rules';
import {
ALERTS_PAGE,
APP_LEAVE_CONFIRM_MODAL,
CASES_PAGE,
MANAGE_PAGE,
OBSERVABILITY_ALERTS_PAGE,
} from '../../screens/kibana_navigation';
import { TIMELINE_SAVE_MODAL } from '../../screens/timeline';
import { cleanKibana } from '../../tasks/common';
} from '../../../screens/kibana_navigation';
import { TIMELINE_SAVE_MODAL } from '../../../screens/timeline';
import { cleanKibana } from '../../../tasks/common';
import {
navigateFromKibanaCollapsibleTo,
openKibanaNavigation,
} from '../../tasks/kibana_navigation';
import { login, visit } from '../../tasks/login';
import { closeTimelineUsingToggle } from '../../tasks/security_main';
} from '../../../tasks/kibana_navigation';
import { login, visit } from '../../../tasks/login';
import { closeTimelineUsingToggle } from '../../../tasks/security_main';
import {
addNameAndDescriptionToTimeline,
createNewTimeline,
populateTimeline,
waitForTimelineChanges,
} from '../../tasks/timeline';
import { HOSTS_URL, MANAGE_URL } from '../../urls/navigation';
} from '../../../tasks/timeline';
import { HOSTS_URL, MANAGE_URL } from '../../../urls/navigation';
describe('Save Timeline Prompts', () => {
before(() => {

View file

@ -28,6 +28,7 @@
"cypress:dw:run-as-ci": "node ../../../scripts/functional_tests --config ../../test/defend_workflows_cypress/cli_config.ts",
"cypress:dw:endpoint:open": "yarn cypress open --config-file ./public/management/cypress_endpoint.config.ts",
"cypress:dw:endpoint:open-as-ci": "node ../../../scripts/functional_tests --config ../../test/defend_workflows_cypress/endpoint_config.ts",
"cypress:investigations:run": "yarn cypress:run:reporter --browser chrome --spec ${SPEC_LIST:-'./cypress/e2e/investigations/**/*.cy.ts'}; status=$?; yarn junit:merge && exit $status",
"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"
}

View file

@ -0,0 +1,30 @@
/*
* 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 { FtrConfigProviderContext } from '@kbn/test';
import { FtrProviderContext } from './ftr_provider_context';
import { SecuritySolutionCypressCliTestRunnerCI } from './runner';
const cliNumber = parseInt(process.env.CLI_NUMBER ?? '1', 10);
const cliCount = parseInt(process.env.CLI_COUNT ?? '1', 10);
// eslint-disable-next-line import/no-default-export
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const securitySolutionCypressConfig = await readConfigFile(require.resolve('./config.ts'));
return {
...securitySolutionCypressConfig.getAll(),
testRunner: (context: FtrProviderContext) =>
SecuritySolutionCypressCliTestRunnerCI(
context,
cliCount,
cliNumber,
'/investigations/**/*.cy.ts'
),
};
}

View file

@ -16,8 +16,14 @@ import { withProcRunner } from '@kbn/dev-proc-runner';
import semver from 'semver';
import { FtrProviderContext } from './ftr_provider_context';
const retrieveIntegrations = (chunksTotal: number, chunkIndex: number) => {
const pattern = resolve(__dirname, '../../plugins/security_solution/cypress/e2e/**/*.cy.ts');
const BASE_PATH = '../../plugins/security_solution';
const retrieveIntegrations = (
chunksTotal: number,
chunkIndex: number,
specPattern = '/{,!(investigations)/**/}*.cy.ts'
) => {
const pattern = resolve(__dirname, BASE_PATH + '/cypress/e2e' + specPattern);
const integrationsPaths = globby.sync(pattern);
const chunkSize = Math.ceil(integrationsPaths.length / chunksTotal);
@ -39,7 +45,7 @@ export async function SecuritySolutionConfigurableCypressTestRunner(
await procs.run('cypress', {
cmd: 'yarn',
args: [command],
cwd: resolve(__dirname, '../../plugins/security_solution'),
cwd: resolve(__dirname, BASE_PATH),
env: {
FORCE_COLOR: '1',
CYPRESS_BASE_URL: Url.format(config.get('servers.kibana')),
@ -66,9 +72,10 @@ export async function SecuritySolutionConfigurableCypressTestRunner(
export async function SecuritySolutionCypressCliTestRunnerCI(
context: FtrProviderContext,
totalCiJobs: number,
ciJobNumber: number
ciJobNumber: number,
specPattern?: string
) {
const integrations = retrieveIntegrations(totalCiJobs, ciJobNumber);
const integrations = retrieveIntegrations(totalCiJobs, ciJobNumber, specPattern);
return SecuritySolutionConfigurableCypressTestRunner(context, 'cypress:run:spec', {
SPEC_LIST: integrations.join(','),
});