mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[Detection Response][Cypress] Reshuffle bulk action cypress tests (#161900)
## Summary A very small first piece to address https://github.com/elastic/kibana/issues/153645 - Starts adding new folder structure in cypress tests `detections_response/rules_management` - Adds `detections_response/rules_management/bulk_actions` - Reshuffled screens and tasks to now also have a corresponding `screens/rules_bulk_actions.ts` and `tasks/rules_bulk_actions.ts` - We chatted and decided to try to organize tests by subdomains rather than by teams. Anticipated upcoming changes will add something like: - `detections_response/rules_management` - `/bulk_actions.ts` - `/rules_table.ts` - `detections_response/prebuilt_rules` - `detections_response/rule_creation` - `detections_response/rule_details` - `detections_response/rule_edit` - `detections_response/exceptions` - `/shared_exception_lists` - `/alerts_table` - `/alerts_details` - `/rule_details` --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Georgii Gorbachev <georgii.gorbachev@elastic.co>
This commit is contained in:
parent
ea588d280b
commit
e54cf60426
12 changed files with 381 additions and 355 deletions
|
@ -69,11 +69,11 @@ import {
|
|||
import {
|
||||
deleteFirstRule,
|
||||
deleteRuleFromDetailsPage,
|
||||
deleteSelectedRules,
|
||||
editFirstRule,
|
||||
goToRuleDetails,
|
||||
selectNumberOfRules,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
import { deleteSelectedRules } from '../../tasks/rules_bulk_actions';
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
import { createTimeline } from '../../tasks/api_calls/timelines';
|
||||
import { cleanKibana, deleteAlertsAndRules, deleteConnectors } from '../../tasks/common';
|
||||
|
|
|
@ -17,13 +17,13 @@ import {
|
|||
import {
|
||||
filterByElasticRules,
|
||||
selectNumberOfRules,
|
||||
bulkExportRules,
|
||||
selectAllRules,
|
||||
waitForRuleExecution,
|
||||
exportRule,
|
||||
importRules,
|
||||
expectManagementTableRules,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
import { bulkExportRules } from '../../tasks/rules_bulk_actions';
|
||||
import { createExceptionList, deleteExceptionList } from '../../tasks/api_calls/exceptions';
|
||||
import { getExceptionList } from '../../objects/exception';
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
|
|
|
@ -63,8 +63,8 @@ import {
|
|||
selectNumberOfRules,
|
||||
checkDuplicatedRule,
|
||||
expectNumberOfRules,
|
||||
duplicateSelectedRulesWithExceptions,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
import { duplicateSelectedRulesWithExceptions } from '../../tasks/rules_bulk_actions';
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
import { loadPrepackagedTimelineTemplates } from '../../tasks/api_calls/timelines';
|
||||
import { cleanKibana, deleteAlertsAndRules } from '../../tasks/common';
|
||||
|
|
|
@ -21,14 +21,16 @@ import {
|
|||
import {
|
||||
confirmRulesDelete,
|
||||
deleteFirstRule,
|
||||
deleteSelectedRules,
|
||||
disableSelectedRules,
|
||||
enableSelectedRules,
|
||||
selectAllRules,
|
||||
selectNumberOfRules,
|
||||
waitForPrebuiltDetectionRulesToBeLoaded,
|
||||
waitForRuleToUpdate,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
import {
|
||||
deleteSelectedRules,
|
||||
disableSelectedRules,
|
||||
enableSelectedRules,
|
||||
} from '../../tasks/rules_bulk_actions';
|
||||
import {
|
||||
createAndInstallMockedPrebuiltRules,
|
||||
getAvailablePrebuiltRulesCount,
|
||||
|
|
|
@ -9,27 +9,28 @@ import {
|
|||
waitForRulesTableToBeLoaded,
|
||||
goToTheRuleDetailsOf,
|
||||
selectNumberOfRules,
|
||||
duplicateSelectedRulesWithoutExceptions,
|
||||
expectManagementTableRules,
|
||||
} from '../../../../tasks/alerts_detection_rules';
|
||||
import {
|
||||
duplicateSelectedRulesWithoutExceptions,
|
||||
duplicateSelectedRulesWithExceptions,
|
||||
duplicateSelectedRulesWithNonExpiredExceptions,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
} from '../../../../tasks/rules_bulk_actions';
|
||||
import { goToExceptionsTab, viewExpiredExceptionItems } from '../../../../tasks/rule_details';
|
||||
import { login, visitWithoutDateRange } from '../../../../tasks/login';
|
||||
|
||||
import { goToExceptionsTab, viewExpiredExceptionItems } from '../../tasks/rule_details';
|
||||
import { login, visitWithoutDateRange } from '../../tasks/login';
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../../../urls/navigation';
|
||||
import { createRule } from '../../../../tasks/api_calls/rules';
|
||||
import { cleanKibana, resetRulesTableState, deleteAlertsAndRules } from '../../../../tasks/common';
|
||||
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../urls/navigation';
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
import { cleanKibana, resetRulesTableState, deleteAlertsAndRules } from '../../tasks/common';
|
||||
import { getNewRule } from '../../../../objects/rule';
|
||||
|
||||
import { getNewRule } from '../../objects/rule';
|
||||
|
||||
import { createRuleExceptionItem } from '../../tasks/api_calls/exceptions';
|
||||
import { EXCEPTION_CARD_ITEM_NAME } from '../../screens/exceptions';
|
||||
import { createRuleExceptionItem } from '../../../../tasks/api_calls/exceptions';
|
||||
import { EXCEPTION_CARD_ITEM_NAME } from '../../../../screens/exceptions';
|
||||
import {
|
||||
assertExceptionItemsExists,
|
||||
assertNumberOfExceptionItemsExists,
|
||||
} from '../../tasks/exceptions';
|
||||
} from '../../../../tasks/exceptions';
|
||||
|
||||
const RULE_NAME = 'Custom rule for bulk actions';
|
||||
|
|
@ -11,7 +11,7 @@ import {
|
|||
RULE_CHECKBOX,
|
||||
RULES_TAGS_POPOVER_BTN,
|
||||
MODAL_ERROR_BODY,
|
||||
} from '../../screens/alerts_detection_rules';
|
||||
} from '../../../../screens/alerts_detection_rules';
|
||||
|
||||
import {
|
||||
RULES_BULK_EDIT_INDEX_PATTERNS_WARNING,
|
||||
|
@ -20,11 +20,11 @@ import {
|
|||
TAGS_RULE_BULK_MENU_ITEM,
|
||||
INDEX_PATTERNS_RULE_BULK_MENU_ITEM,
|
||||
APPLY_TIMELINE_RULE_BULK_MENU_ITEM,
|
||||
} from '../../screens/rules_bulk_edit';
|
||||
} from '../../../../screens/rules_bulk_actions';
|
||||
|
||||
import { TIMELINE_TEMPLATE_DETAILS } from '../../screens/rule_details';
|
||||
import { TIMELINE_TEMPLATE_DETAILS } from '../../../../screens/rule_details';
|
||||
|
||||
import { EUI_FILTER_SELECT_ITEM } from '../../screens/common/controls';
|
||||
import { EUI_FILTER_SELECT_ITEM } from '../../../../screens/common/controls';
|
||||
|
||||
import {
|
||||
waitForRulesTableToBeLoaded,
|
||||
|
@ -38,7 +38,7 @@ import {
|
|||
clickErrorToastBtn,
|
||||
unselectRuleByName,
|
||||
cancelConfirmationModal,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
} from '../../../../tasks/alerts_detection_rules';
|
||||
|
||||
import {
|
||||
typeIndexPatterns,
|
||||
|
@ -69,15 +69,15 @@ import {
|
|||
assertRuleScheduleValues,
|
||||
assertUpdateScheduleWarningExists,
|
||||
assertDefaultValuesAreAppliedToScheduleFields,
|
||||
} from '../../tasks/rules_bulk_edit';
|
||||
} from '../../../../tasks/rules_bulk_actions';
|
||||
|
||||
import { hasIndexPatterns, getDetails } from '../../tasks/rule_details';
|
||||
import { login, visitWithoutDateRange } from '../../tasks/login';
|
||||
import { hasIndexPatterns, getDetails } from '../../../../tasks/rule_details';
|
||||
import { login, visitWithoutDateRange } from '../../../../tasks/login';
|
||||
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../urls/navigation';
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
import { loadPrepackagedTimelineTemplates } from '../../tasks/api_calls/timelines';
|
||||
import { cleanKibana, resetRulesTableState, deleteAlertsAndRules } from '../../tasks/common';
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../../../urls/navigation';
|
||||
import { createRule } from '../../../../tasks/api_calls/rules';
|
||||
import { loadPrepackagedTimelineTemplates } from '../../../../tasks/api_calls/timelines';
|
||||
import { cleanKibana, resetRulesTableState, deleteAlertsAndRules } from '../../../../tasks/common';
|
||||
|
||||
import {
|
||||
getEqlRule,
|
||||
|
@ -86,13 +86,13 @@ import {
|
|||
getNewThresholdRule,
|
||||
getMachineLearningRule,
|
||||
getNewTermsRule,
|
||||
} from '../../objects/rule';
|
||||
} from '../../../../objects/rule';
|
||||
|
||||
import {
|
||||
getAvailablePrebuiltRulesCount,
|
||||
excessivelyInstallAllPrebuiltRules,
|
||||
} from '../../tasks/api_calls/prebuilt_rules';
|
||||
import { setRowsPerPageTo } from '../../tasks/table_pagination';
|
||||
} from '../../../../tasks/api_calls/prebuilt_rules';
|
||||
import { setRowsPerPageTo } from '../../../../tasks/table_pagination';
|
||||
|
||||
const RULE_NAME = 'Custom rule for bulk actions';
|
||||
const EUI_SELECTABLE_LIST_ITEM_SR_TEXT = '. To check this option, press Enter.';
|
|
@ -6,17 +6,17 @@
|
|||
*/
|
||||
|
||||
import type { RuleActionArray } from '@kbn/securitysolution-io-ts-alerting-types';
|
||||
import { ROLES } from '../../../common/test';
|
||||
import { ROLES } from '../../../../../common/test';
|
||||
|
||||
import {
|
||||
RULES_BULK_EDIT_ACTIONS_INFO,
|
||||
RULES_BULK_EDIT_ACTIONS_WARNING,
|
||||
ADD_RULE_ACTIONS_MENU_ITEM,
|
||||
} from '../../screens/rules_bulk_edit';
|
||||
import { actionFormSelector } from '../../screens/common/rule_actions';
|
||||
} from '../../../../screens/rules_bulk_actions';
|
||||
import { actionFormSelector } from '../../../../screens/common/rule_actions';
|
||||
|
||||
import { cleanKibana, deleteAlertsAndRules, deleteConnectors } from '../../tasks/common';
|
||||
import type { RuleActionCustomFrequency } from '../../tasks/common/rule_actions';
|
||||
import { cleanKibana, deleteAlertsAndRules, deleteConnectors } from '../../../../tasks/common';
|
||||
import type { RuleActionCustomFrequency } from '../../../../tasks/common/rule_actions';
|
||||
import {
|
||||
addSlackRuleAction,
|
||||
assertSlackRuleAction,
|
||||
|
@ -28,25 +28,25 @@ import {
|
|||
pickCustomFrequencyOption,
|
||||
pickPerRuleRunFrequencyOption,
|
||||
pickSummaryOfAlertsOption,
|
||||
} from '../../tasks/common/rule_actions';
|
||||
} from '../../../../tasks/common/rule_actions';
|
||||
import {
|
||||
waitForRulesTableToBeLoaded,
|
||||
selectNumberOfRules,
|
||||
goToEditRuleActionsSettingsOf,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
} from '../../../../tasks/alerts_detection_rules';
|
||||
import {
|
||||
waitForBulkEditActionToFinish,
|
||||
submitBulkEditForm,
|
||||
checkOverwriteRuleActionsCheckbox,
|
||||
openBulkEditRuleActionsForm,
|
||||
openBulkActionsMenu,
|
||||
} from '../../tasks/rules_bulk_edit';
|
||||
import { login, visitWithoutDateRange } from '../../tasks/login';
|
||||
} from '../../../../tasks/rules_bulk_actions';
|
||||
import { login, visitWithoutDateRange } from '../../../../tasks/login';
|
||||
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../urls/navigation';
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../../../urls/navigation';
|
||||
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
import { createSlackConnector } from '../../tasks/api_calls/connectors';
|
||||
import { createRule } from '../../../../tasks/api_calls/rules';
|
||||
import { createSlackConnector } from '../../../../tasks/api_calls/connectors';
|
||||
|
||||
import {
|
||||
getEqlRule,
|
||||
|
@ -55,8 +55,8 @@ import {
|
|||
getNewThresholdRule,
|
||||
getMachineLearningRule,
|
||||
getNewTermsRule,
|
||||
} from '../../objects/rule';
|
||||
import { excessivelyInstallAllPrebuiltRules } from '../../tasks/api_calls/prebuilt_rules';
|
||||
} from '../../../../objects/rule';
|
||||
import { excessivelyInstallAllPrebuiltRules } from '../../../../tasks/api_calls/prebuilt_rules';
|
||||
|
||||
const ruleNameToAssert = 'Custom rule name with actions';
|
||||
const expectedNumberOfCustomRulesToBeEdited = 7;
|
|
@ -8,16 +8,16 @@
|
|||
import {
|
||||
RULES_BULK_EDIT_DATA_VIEWS_WARNING,
|
||||
RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX,
|
||||
} from '../../screens/rules_bulk_edit';
|
||||
} from '../../../../screens/rules_bulk_actions';
|
||||
|
||||
import { DATA_VIEW_DETAILS, INDEX_PATTERNS_DETAILS } from '../../screens/rule_details';
|
||||
import { DATA_VIEW_DETAILS, INDEX_PATTERNS_DETAILS } from '../../../../screens/rule_details';
|
||||
|
||||
import {
|
||||
waitForRulesTableToBeLoaded,
|
||||
goToRuleDetails,
|
||||
selectNumberOfRules,
|
||||
goToTheRuleDetailsOf,
|
||||
} from '../../tasks/alerts_detection_rules';
|
||||
} from '../../../../tasks/alerts_detection_rules';
|
||||
|
||||
import {
|
||||
typeIndexPatterns,
|
||||
|
@ -27,14 +27,18 @@ import {
|
|||
checkOverwriteIndexPatternsCheckbox,
|
||||
openBulkEditAddIndexPatternsForm,
|
||||
openBulkEditDeleteIndexPatternsForm,
|
||||
} from '../../tasks/rules_bulk_edit';
|
||||
} from '../../../../tasks/rules_bulk_actions';
|
||||
|
||||
import { hasIndexPatterns, getDetails, assertDetailsNotExist } from '../../tasks/rule_details';
|
||||
import { login, visitWithoutDateRange } from '../../tasks/login';
|
||||
import {
|
||||
hasIndexPatterns,
|
||||
getDetails,
|
||||
assertDetailsNotExist,
|
||||
} from '../../../../tasks/rule_details';
|
||||
import { login, visitWithoutDateRange } from '../../../../tasks/login';
|
||||
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../urls/navigation';
|
||||
import { createRule } from '../../tasks/api_calls/rules';
|
||||
import { cleanKibana, deleteAlertsAndRules, postDataView } from '../../tasks/common';
|
||||
import { SECURITY_DETECTIONS_RULES_URL } from '../../../../urls/navigation';
|
||||
import { createRule } from '../../../../tasks/api_calls/rules';
|
||||
import { cleanKibana, deleteAlertsAndRules, postDataView } from '../../../../tasks/common';
|
||||
|
||||
import {
|
||||
getEqlRule,
|
||||
|
@ -42,7 +46,7 @@ import {
|
|||
getNewRule,
|
||||
getNewThresholdRule,
|
||||
getNewTermsRule,
|
||||
} from '../../objects/rule';
|
||||
} from '../../../../objects/rule';
|
||||
|
||||
const DATA_VIEW_ID = 'auditbeat';
|
||||
|
|
@ -5,10 +5,6 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
export const BULK_ACTIONS_BTN = '[data-test-subj="bulkActions"] span';
|
||||
|
||||
export const BULK_ACTIONS_PROGRESS_BTN = '[data-test-subj="bulkActions-progress"]';
|
||||
|
||||
export const CREATE_NEW_RULE_BTN = '[data-test-subj="create-new-rule"]';
|
||||
|
||||
export const COLLAPSED_ACTION_BTN = '[data-test-subj="euiCollapsedItemActionsButton"]';
|
||||
|
@ -30,14 +26,6 @@ export const DUPLICATE_RULE_ACTION_BTN = '[data-test-subj="duplicateRuleAction"]
|
|||
export const DUPLICATE_RULE_MENU_PANEL_BTN = '[data-test-subj="rules-details-duplicate-rule"]';
|
||||
export const CONFIRM_DUPLICATE_RULE = '[data-test-subj="confirmModalConfirmButton"]';
|
||||
|
||||
export const ENABLE_RULE_BULK_BTN = '[data-test-subj="enableRuleBulk"]';
|
||||
|
||||
export const DISABLE_RULE_BULK_BTN = '[data-test-subj="disableRuleBulk"]';
|
||||
|
||||
export const DELETE_RULE_BULK_BTN = '[data-test-subj="deleteRuleBulk"]';
|
||||
|
||||
export const DUPLICATE_RULE_BULK_BTN = '[data-test-subj="duplicateRuleBulk"]';
|
||||
|
||||
export const DUPLICATE_WITH_EXCEPTIONS_OPTION = '[data-test-subj="withExceptions"] label';
|
||||
|
||||
export const DUPLICATE_WITH_EXCEPTIONS_WITHOUT_EXPIRED_OPTION =
|
||||
|
@ -49,8 +37,6 @@ export const RULE_SEARCH_FIELD = '[data-test-subj="ruleSearchField"]';
|
|||
|
||||
export const EXPORT_ACTION_BTN = '[data-test-subj="exportRuleAction"]';
|
||||
|
||||
export const BULK_EXPORT_ACTION_BTN = '[data-test-subj="exportRuleBulk"]';
|
||||
|
||||
export const FIRST_RULE = 0;
|
||||
|
||||
export const FOURTH_RULE = 3;
|
||||
|
|
|
@ -5,6 +5,12 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
// FORM
|
||||
export const RULES_BULK_EDIT_FORM_TITLE = '[data-test-subj="rulesBulkEditFormTitle"]';
|
||||
|
||||
export const RULES_BULK_EDIT_FORM_CONFIRM_BTN = '[data-test-subj="rulesBulkEditFormSaveBtn"]';
|
||||
|
||||
// INDEX PATTERNS
|
||||
export const INDEX_PATTERNS_RULE_BULK_MENU_ITEM = '[data-test-subj="indexPatternsBulkEditRule"]';
|
||||
|
||||
export const ADD_INDEX_PATTERNS_RULE_BULK_MENU_ITEM =
|
||||
|
@ -13,22 +19,6 @@ export const ADD_INDEX_PATTERNS_RULE_BULK_MENU_ITEM =
|
|||
export const DELETE_INDEX_PATTERNS_RULE_BULK_MENU_ITEM =
|
||||
'[data-test-subj="deleteIndexPatternsBulkEditRule"]';
|
||||
|
||||
export const UPDATE_SCHEDULE_MENU_ITEM = '[data-test-subj="setScheduleBulk"]';
|
||||
|
||||
export const ADD_RULE_ACTIONS_MENU_ITEM = '[data-test-subj="addRuleActionsBulk"]';
|
||||
|
||||
export const APPLY_TIMELINE_RULE_BULK_MENU_ITEM = '[data-test-subj="applyTimelineTemplateBulk"]';
|
||||
|
||||
export const TAGS_RULE_BULK_MENU_ITEM = '[data-test-subj="tagsBulkEditRule"]';
|
||||
|
||||
export const ADD_TAGS_RULE_BULK_MENU_ITEM = '[data-test-subj="addTagsBulkEditRule"]';
|
||||
|
||||
export const DELETE_TAGS_RULE_BULK_MENU_ITEM = '[data-test-subj="deleteTagsBulkEditRule"]';
|
||||
|
||||
export const RULES_BULK_EDIT_FORM_TITLE = '[data-test-subj="rulesBulkEditFormTitle"]';
|
||||
|
||||
export const RULES_BULK_EDIT_FORM_CONFIRM_BTN = '[data-test-subj="rulesBulkEditFormSaveBtn"]';
|
||||
|
||||
export const RULES_BULK_EDIT_INDEX_PATTERNS = '[data-test-subj="bulkEditRulesIndexPatterns"]';
|
||||
|
||||
export const RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX =
|
||||
|
@ -37,25 +27,15 @@ export const RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX =
|
|||
export const RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX =
|
||||
'[data-test-subj="bulkEditRulesOverwriteRulesWithDataViews"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TAGS = '[data-test-subj="bulkEditRulesTags"]';
|
||||
|
||||
export const RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX =
|
||||
'[data-test-subj="bulkEditRulesOverwriteTags"]';
|
||||
|
||||
export const RULES_BULK_EDIT_INDEX_PATTERNS_WARNING =
|
||||
'[data-test-subj="bulkEditRulesIndexPatternsWarning"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TAGS_WARNING = '[data-test-subj="bulkEditRulesTagsWarning"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TIMELINE_TEMPLATES_SELECTOR =
|
||||
'[data-test-subj="bulkEditRulesTimelineTemplateSelector"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TIMELINE_TEMPLATES_WARNING =
|
||||
'[data-test-subj="bulkEditRulesTimelineTemplateWarning"]';
|
||||
|
||||
export const RULES_BULK_EDIT_DATA_VIEWS_WARNING =
|
||||
'[data-test-subj="bulkEditRulesDataViewsWarning"]';
|
||||
|
||||
// SCHEDULE
|
||||
export const UPDATE_SCHEDULE_MENU_ITEM = '[data-test-subj="setScheduleBulk"]';
|
||||
|
||||
export const RULES_BULK_EDIT_SCHEDULES_WARNING = '[data-test-subj="bulkEditRulesSchedulesWarning"]';
|
||||
|
||||
export const UPDATE_SCHEDULE_INTERVAL_INPUT =
|
||||
|
@ -66,9 +46,53 @@ export const UPDATE_SCHEDULE_LOOKBACK_INPUT =
|
|||
|
||||
export const UPDATE_SCHEDULE_TIME_UNIT_SELECT = '[data-test-subj="timeType"]';
|
||||
|
||||
// ACTIONS
|
||||
export const ADD_RULE_ACTIONS_MENU_ITEM = '[data-test-subj="addRuleActionsBulk"]';
|
||||
|
||||
export const RULES_BULK_EDIT_ACTIONS_INFO = '[data-test-subj="bulkEditRulesRuleActionInfo"]';
|
||||
|
||||
export const RULES_BULK_EDIT_ACTIONS_WARNING = '[data-test-subj="bulkEditRulesRuleActionsWarning"]';
|
||||
|
||||
export const RULES_BULK_EDIT_OVERWRITE_ACTIONS_CHECKBOX =
|
||||
'[data-test-subj="bulkEditRulesOverwriteRuleActions"]';
|
||||
|
||||
export const BULK_ACTIONS_BTN = '[data-test-subj="bulkActions"] span';
|
||||
|
||||
export const BULK_ACTIONS_PROGRESS_BTN = '[data-test-subj="bulkActions-progress"]';
|
||||
|
||||
// TIMELINE
|
||||
export const APPLY_TIMELINE_RULE_BULK_MENU_ITEM = '[data-test-subj="applyTimelineTemplateBulk"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TIMELINE_TEMPLATES_SELECTOR =
|
||||
'[data-test-subj="bulkEditRulesTimelineTemplateSelector"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TIMELINE_TEMPLATES_WARNING =
|
||||
'[data-test-subj="bulkEditRulesTimelineTemplateWarning"]';
|
||||
|
||||
// TAGS
|
||||
export const TAGS_RULE_BULK_MENU_ITEM = '[data-test-subj="tagsBulkEditRule"]';
|
||||
|
||||
export const ADD_TAGS_RULE_BULK_MENU_ITEM = '[data-test-subj="addTagsBulkEditRule"]';
|
||||
|
||||
export const DELETE_TAGS_RULE_BULK_MENU_ITEM = '[data-test-subj="deleteTagsBulkEditRule"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TAGS = '[data-test-subj="bulkEditRulesTags"]';
|
||||
|
||||
export const RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX =
|
||||
'[data-test-subj="bulkEditRulesOverwriteTags"]';
|
||||
|
||||
export const RULES_BULK_EDIT_TAGS_WARNING = '[data-test-subj="bulkEditRulesTagsWarning"]';
|
||||
|
||||
// ENABLE/DISABLE
|
||||
export const ENABLE_RULE_BULK_BTN = '[data-test-subj="enableRuleBulk"]';
|
||||
|
||||
export const DISABLE_RULE_BULK_BTN = '[data-test-subj="disableRuleBulk"]';
|
||||
|
||||
// DELETE
|
||||
export const DELETE_RULE_BULK_BTN = '[data-test-subj="deleteRuleBulk"]';
|
||||
|
||||
// DUPLICATE
|
||||
export const DUPLICATE_RULE_BULK_BTN = '[data-test-subj="duplicateRuleBulk"]';
|
||||
|
||||
// EXPORT
|
||||
export const BULK_EXPORT_ACTION_BTN = '[data-test-subj="exportRuleBulk"]';
|
|
@ -7,11 +7,9 @@
|
|||
|
||||
import { duplicatedRuleName } from '../objects/rule';
|
||||
import {
|
||||
BULK_ACTIONS_BTN,
|
||||
COLLAPSED_ACTION_BTN,
|
||||
CUSTOM_RULES_BTN,
|
||||
DELETE_RULE_ACTION_BTN,
|
||||
DELETE_RULE_BULK_BTN,
|
||||
RULES_SELECTED_TAG,
|
||||
RULES_TABLE_INITIAL_LOADING_INDICATOR,
|
||||
RULES_TABLE_AUTOREFRESH_INDICATOR,
|
||||
|
@ -24,14 +22,11 @@ import {
|
|||
EDIT_RULE_ACTION_BTN,
|
||||
DUPLICATE_RULE_ACTION_BTN,
|
||||
DUPLICATE_RULE_MENU_PANEL_BTN,
|
||||
DUPLICATE_RULE_BULK_BTN,
|
||||
CONFIRM_DUPLICATE_RULE,
|
||||
RULES_ROW,
|
||||
SELECT_ALL_RULES_BTN,
|
||||
MODAL_CONFIRMATION_BTN,
|
||||
RULES_DELETE_CONFIRMATION_MODAL,
|
||||
ENABLE_RULE_BULK_BTN,
|
||||
DISABLE_RULE_BULK_BTN,
|
||||
RULE_DETAILS_DELETE_BTN,
|
||||
RULE_IMPORT_MODAL_BUTTON,
|
||||
RULE_IMPORT_MODAL,
|
||||
|
@ -45,7 +40,6 @@ import {
|
|||
REFRESH_SETTINGS_POPOVER,
|
||||
REFRESH_SETTINGS_SWITCH,
|
||||
ELASTIC_RULES_BTN,
|
||||
BULK_EXPORT_ACTION_BTN,
|
||||
TOASTER_ERROR_BTN,
|
||||
MODAL_CONFIRMATION_CANCEL_BTN,
|
||||
MODAL_CONFIRMATION_BODY,
|
||||
|
@ -60,9 +54,6 @@ import {
|
|||
DISABLED_RULES_BTN,
|
||||
REFRESH_RULES_TABLE_BUTTON,
|
||||
RULE_LAST_RUN,
|
||||
DUPLICATE_WITHOUT_EXCEPTIONS_OPTION,
|
||||
DUPLICATE_WITH_EXCEPTIONS_OPTION,
|
||||
DUPLICATE_WITH_EXCEPTIONS_WITHOUT_EXPIRED_OPTION,
|
||||
TOASTER_CLOSE_ICON,
|
||||
ADD_ELASTIC_RULES_EMPTY_PROMPT_BTN,
|
||||
} from '../screens/alerts_detection_rules';
|
||||
|
@ -126,11 +117,6 @@ export const deleteFirstRule = () => {
|
|||
cy.get(DELETE_RULE_ACTION_BTN).click();
|
||||
};
|
||||
|
||||
export const deleteSelectedRules = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DELETE_RULE_BULK_BTN).click();
|
||||
};
|
||||
|
||||
export const deleteRuleFromDetailsPage = () => {
|
||||
cy.get(ALL_ACTIONS).should('be.visible');
|
||||
// We cannot use cy.root().pipe($el) withing this function and instead have to use a cy.wait()
|
||||
|
@ -145,42 +131,6 @@ export const deleteRuleFromDetailsPage = () => {
|
|||
cy.get(RULE_DETAILS_DELETE_BTN).should('not.be.visible');
|
||||
};
|
||||
|
||||
export const duplicateSelectedRulesWithoutExceptions = () => {
|
||||
cy.log('Duplicate selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DUPLICATE_RULE_BULK_BTN).click();
|
||||
cy.get(DUPLICATE_WITHOUT_EXCEPTIONS_OPTION).click();
|
||||
cy.get(CONFIRM_DUPLICATE_RULE).click();
|
||||
};
|
||||
|
||||
export const duplicateSelectedRulesWithExceptions = () => {
|
||||
cy.log('Duplicate selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DUPLICATE_RULE_BULK_BTN).click();
|
||||
cy.get(DUPLICATE_WITH_EXCEPTIONS_OPTION).click();
|
||||
cy.get(CONFIRM_DUPLICATE_RULE).click();
|
||||
};
|
||||
|
||||
export const duplicateSelectedRulesWithNonExpiredExceptions = () => {
|
||||
cy.log('Duplicate selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DUPLICATE_RULE_BULK_BTN).click();
|
||||
cy.get(DUPLICATE_WITH_EXCEPTIONS_WITHOUT_EXPIRED_OPTION).click();
|
||||
cy.get(CONFIRM_DUPLICATE_RULE).click();
|
||||
};
|
||||
|
||||
export const enableSelectedRules = () => {
|
||||
cy.log('Enable selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(ENABLE_RULE_BULK_BTN).click();
|
||||
};
|
||||
|
||||
export const disableSelectedRules = () => {
|
||||
cy.log('Disable selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DISABLE_RULE_BULK_BTN).click();
|
||||
};
|
||||
|
||||
export const exportRule = (name: string) => {
|
||||
cy.log(`Export rule "${name}"`);
|
||||
|
||||
|
@ -534,11 +484,6 @@ export const mockGlobalClock = () => {
|
|||
cy.clock(Date.now(), ['setInterval', 'clearInterval', 'Date']);
|
||||
};
|
||||
|
||||
export const bulkExportRules = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(BULK_EXPORT_ACTION_BTN).click();
|
||||
};
|
||||
|
||||
export const cancelConfirmationModal = () => {
|
||||
cy.get(MODAL_CONFIRMATION_CANCEL_BTN).click();
|
||||
cy.get(MODAL_CONFIRMATION_BODY).should('not.exist');
|
||||
|
|
|
@ -6,227 +6,108 @@
|
|||
*/
|
||||
|
||||
import { recurse } from 'cypress-recurse';
|
||||
import { TIMELINE_SEARCHBOX, EUI_SELECTABLE_LIST_ITEM } from '../screens/common/controls';
|
||||
|
||||
import {
|
||||
BULK_ACTIONS_BTN,
|
||||
BULK_ACTIONS_PROGRESS_BTN,
|
||||
MODAL_CONFIRMATION_TITLE,
|
||||
CONFIRM_DUPLICATE_RULE,
|
||||
DUPLICATE_WITHOUT_EXCEPTIONS_OPTION,
|
||||
DUPLICATE_WITH_EXCEPTIONS_OPTION,
|
||||
DUPLICATE_WITH_EXCEPTIONS_WITHOUT_EXPIRED_OPTION,
|
||||
MODAL_CONFIRMATION_BODY,
|
||||
TOASTER_BODY,
|
||||
MODAL_CONFIRMATION_TITLE,
|
||||
RULES_TAGS_FILTER_BTN,
|
||||
TOASTER_BODY,
|
||||
} from '../screens/alerts_detection_rules';
|
||||
|
||||
import { EUI_SELECTABLE_LIST_ITEM, TIMELINE_SEARCHBOX } from '../screens/common/controls';
|
||||
import {
|
||||
INDEX_PATTERNS_RULE_BULK_MENU_ITEM,
|
||||
ADD_INDEX_PATTERNS_RULE_BULK_MENU_ITEM,
|
||||
ADD_RULE_ACTIONS_MENU_ITEM,
|
||||
DELETE_INDEX_PATTERNS_RULE_BULK_MENU_ITEM,
|
||||
TAGS_RULE_BULK_MENU_ITEM,
|
||||
ADD_TAGS_RULE_BULK_MENU_ITEM,
|
||||
APPLY_TIMELINE_RULE_BULK_MENU_ITEM,
|
||||
BULK_ACTIONS_BTN,
|
||||
BULK_ACTIONS_PROGRESS_BTN,
|
||||
BULK_EXPORT_ACTION_BTN,
|
||||
DELETE_INDEX_PATTERNS_RULE_BULK_MENU_ITEM,
|
||||
DELETE_RULE_BULK_BTN,
|
||||
DELETE_TAGS_RULE_BULK_MENU_ITEM,
|
||||
DISABLE_RULE_BULK_BTN,
|
||||
DUPLICATE_RULE_BULK_BTN,
|
||||
ENABLE_RULE_BULK_BTN,
|
||||
INDEX_PATTERNS_RULE_BULK_MENU_ITEM,
|
||||
RULES_BULK_EDIT_FORM_CONFIRM_BTN,
|
||||
RULES_BULK_EDIT_FORM_TITLE,
|
||||
RULES_BULK_EDIT_INDEX_PATTERNS,
|
||||
RULES_BULK_EDIT_TAGS,
|
||||
RULES_BULK_EDIT_FORM_CONFIRM_BTN,
|
||||
APPLY_TIMELINE_RULE_BULK_MENU_ITEM,
|
||||
RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX,
|
||||
RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX,
|
||||
RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX,
|
||||
RULES_BULK_EDIT_TIMELINE_TEMPLATES_SELECTOR,
|
||||
UPDATE_SCHEDULE_MENU_ITEM,
|
||||
UPDATE_SCHEDULE_INTERVAL_INPUT,
|
||||
UPDATE_SCHEDULE_TIME_UNIT_SELECT,
|
||||
UPDATE_SCHEDULE_LOOKBACK_INPUT,
|
||||
RULES_BULK_EDIT_SCHEDULES_WARNING,
|
||||
RULES_BULK_EDIT_OVERWRITE_ACTIONS_CHECKBOX,
|
||||
} from '../screens/rules_bulk_edit';
|
||||
RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX,
|
||||
RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX,
|
||||
RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX,
|
||||
RULES_BULK_EDIT_SCHEDULES_WARNING,
|
||||
RULES_BULK_EDIT_TAGS,
|
||||
RULES_BULK_EDIT_TIMELINE_TEMPLATES_SELECTOR,
|
||||
TAGS_RULE_BULK_MENU_ITEM,
|
||||
UPDATE_SCHEDULE_INTERVAL_INPUT,
|
||||
UPDATE_SCHEDULE_LOOKBACK_INPUT,
|
||||
UPDATE_SCHEDULE_MENU_ITEM,
|
||||
UPDATE_SCHEDULE_TIME_UNIT_SELECT,
|
||||
} from '../screens/rules_bulk_actions';
|
||||
import { SCHEDULE_DETAILS } from '../screens/rule_details';
|
||||
|
||||
// DELETE
|
||||
export const deleteSelectedRules = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DELETE_RULE_BULK_BTN).click();
|
||||
};
|
||||
|
||||
// DUPLICATE
|
||||
export const duplicateSelectedRulesWithoutExceptions = () => {
|
||||
cy.log('Bulk duplicate selected rules without exceptions');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DUPLICATE_RULE_BULK_BTN).click();
|
||||
cy.get(DUPLICATE_WITHOUT_EXCEPTIONS_OPTION).click();
|
||||
cy.get(CONFIRM_DUPLICATE_RULE).click();
|
||||
};
|
||||
|
||||
export const duplicateSelectedRulesWithExceptions = () => {
|
||||
cy.log('Bulk duplicate selected rules with exceptions');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DUPLICATE_RULE_BULK_BTN).click();
|
||||
cy.get(DUPLICATE_WITH_EXCEPTIONS_OPTION).click();
|
||||
cy.get(CONFIRM_DUPLICATE_RULE).click();
|
||||
};
|
||||
|
||||
export const duplicateSelectedRulesWithNonExpiredExceptions = () => {
|
||||
cy.log('Bulk duplicate selected rules with non expired exceptions');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DUPLICATE_RULE_BULK_BTN).click();
|
||||
cy.get(DUPLICATE_WITH_EXCEPTIONS_WITHOUT_EXPIRED_OPTION).click();
|
||||
cy.get(CONFIRM_DUPLICATE_RULE).click();
|
||||
};
|
||||
|
||||
// ENABLE/DISABLE
|
||||
export const enableSelectedRules = () => {
|
||||
cy.log('Bulk enable selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(ENABLE_RULE_BULK_BTN).click();
|
||||
};
|
||||
|
||||
export const disableSelectedRules = () => {
|
||||
cy.log('Bulk disable selected rules');
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(DISABLE_RULE_BULK_BTN).click();
|
||||
};
|
||||
|
||||
// EXPORT
|
||||
export const bulkExportRules = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(BULK_EXPORT_ACTION_BTN).click();
|
||||
};
|
||||
|
||||
// EDIT-TIMELINE
|
||||
export const clickApplyTimelineTemplatesMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(APPLY_TIMELINE_RULE_BULK_MENU_ITEM).click();
|
||||
cy.get(APPLY_TIMELINE_RULE_BULK_MENU_ITEM).should('not.exist');
|
||||
};
|
||||
|
||||
const clickIndexPatternsMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
cy.get(INDEX_PATTERNS_RULE_BULK_MENU_ITEM).should('not.exist');
|
||||
};
|
||||
|
||||
const clickTagsMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(TAGS_RULE_BULK_MENU_ITEM).click();
|
||||
};
|
||||
|
||||
export const clickAddTagsMenuItem = () => {
|
||||
clickTagsMenuItem();
|
||||
cy.get(ADD_TAGS_RULE_BULK_MENU_ITEM).click();
|
||||
};
|
||||
|
||||
export const clickUpdateScheduleMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(UPDATE_SCHEDULE_MENU_ITEM).click();
|
||||
cy.get(UPDATE_SCHEDULE_MENU_ITEM).should('not.exist');
|
||||
};
|
||||
|
||||
export const clickAddIndexPatternsMenuItem = () => {
|
||||
clickIndexPatternsMenuItem();
|
||||
cy.get(ADD_INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
};
|
||||
|
||||
export const openBulkEditAddIndexPatternsForm = () => {
|
||||
clickAddIndexPatternsMenuItem();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Add index patterns');
|
||||
};
|
||||
|
||||
export const openBulkEditRuleActionsForm = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(ADD_RULE_ACTIONS_MENU_ITEM).click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Add rule actions');
|
||||
};
|
||||
|
||||
export const openBulkEditDeleteIndexPatternsForm = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
cy.get(DELETE_INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Delete index patterns');
|
||||
};
|
||||
|
||||
export const openBulkEditAddTagsForm = () => {
|
||||
clickAddTagsMenuItem();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Add tags');
|
||||
};
|
||||
|
||||
export const openBulkEditDeleteTagsForm = () => {
|
||||
clickTagsMenuItem();
|
||||
cy.get(DELETE_TAGS_RULE_BULK_MENU_ITEM).click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Delete tags');
|
||||
};
|
||||
|
||||
export const openBulkActionsMenu = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
};
|
||||
|
||||
export const typeIndexPatterns = (indices: string[]) => {
|
||||
cy.get(RULES_BULK_EDIT_INDEX_PATTERNS).find('input').type(indices.join('{enter}'));
|
||||
};
|
||||
|
||||
export const typeTags = (tags: string[]) => {
|
||||
cy.get(RULES_BULK_EDIT_TAGS).find('input').type(tags.join('{enter}'));
|
||||
};
|
||||
|
||||
export const openTagsSelect = () => {
|
||||
cy.get(RULES_BULK_EDIT_TAGS).find('input').click();
|
||||
};
|
||||
|
||||
export const submitBulkEditForm = () => cy.get(RULES_BULK_EDIT_FORM_CONFIRM_BTN).click();
|
||||
|
||||
export const waitForBulkEditActionToFinish = ({
|
||||
updatedCount,
|
||||
skippedCount,
|
||||
failedCount,
|
||||
showDataViewsWarning = false,
|
||||
}: {
|
||||
updatedCount?: number;
|
||||
skippedCount?: number;
|
||||
failedCount?: number;
|
||||
showDataViewsWarning?: boolean;
|
||||
}) => {
|
||||
cy.get(BULK_ACTIONS_PROGRESS_BTN).should('be.disabled');
|
||||
|
||||
if (updatedCount !== undefined) {
|
||||
cy.contains(TOASTER_BODY, `You've successfully updated ${updatedCount} rule`);
|
||||
}
|
||||
if (failedCount !== undefined) {
|
||||
if (failedCount === 1) {
|
||||
cy.contains(TOASTER_BODY, `${failedCount} rule failed to update`);
|
||||
} else {
|
||||
cy.contains(TOASTER_BODY, `${failedCount} rules failed to update`);
|
||||
}
|
||||
}
|
||||
if (skippedCount !== undefined) {
|
||||
if (skippedCount === 1) {
|
||||
cy.contains(TOASTER_BODY, `${skippedCount} rule was skipped`);
|
||||
} else {
|
||||
cy.contains(TOASTER_BODY, `${skippedCount} rules were skipped`);
|
||||
}
|
||||
if (showDataViewsWarning) {
|
||||
cy.contains(
|
||||
TOASTER_BODY,
|
||||
'If you did not select to apply changes to rules using Kibana data views, those rules were not updated and will continue using data views.'
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const checkPrebuiltRulesCannotBeModified = (rulesCount: number) => {
|
||||
cy.get(MODAL_CONFIRMATION_BODY).contains(
|
||||
`${rulesCount} prebuilt Elastic rules (editing prebuilt rules is not supported)`
|
||||
);
|
||||
};
|
||||
|
||||
export const checkMachineLearningRulesCannotBeModified = (rulesCount: number) => {
|
||||
cy.get(MODAL_CONFIRMATION_BODY).contains(
|
||||
`${rulesCount} custom machine learning rule (these rules don't have index patterns)`
|
||||
);
|
||||
};
|
||||
|
||||
export const waitForMixedRulesBulkEditModal = (customRulesCount: number) => {
|
||||
cy.get(MODAL_CONFIRMATION_TITLE).should(
|
||||
'have.text',
|
||||
`This action can only be applied to ${customRulesCount} custom rules`
|
||||
);
|
||||
};
|
||||
|
||||
export const checkOverwriteTagsCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' tags")
|
||||
.click();
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' tags")
|
||||
.get('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
export const checkOverwriteIndexPatternsCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' index patterns")
|
||||
.click();
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' index patterns")
|
||||
.get('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
export const checkOverwriteRuleActionsCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_ACTIONS_CHECKBOX)
|
||||
.should('have.text', 'Overwrite all selected rules actions')
|
||||
.find('input')
|
||||
.click({ force: true });
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_ACTIONS_CHECKBOX)
|
||||
.should('have.text', 'Overwrite all selected rules actions')
|
||||
.find('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
export const checkOverwriteDataViewCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX)
|
||||
.should('have.text', 'Apply changes to rules configured with data views')
|
||||
.click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX)
|
||||
.should('have.text', 'Apply changes to rules configured with data views')
|
||||
.get('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
export const selectTimelineTemplate = (timelineTitle: string) => {
|
||||
recurse(
|
||||
() => {
|
||||
|
@ -241,6 +122,99 @@ export const selectTimelineTemplate = (timelineTitle: string) => {
|
|||
);
|
||||
};
|
||||
|
||||
// EDIT-INDEX
|
||||
const clickIndexPatternsMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
cy.get(INDEX_PATTERNS_RULE_BULK_MENU_ITEM).should('not.exist');
|
||||
};
|
||||
|
||||
export const clickAddIndexPatternsMenuItem = () => {
|
||||
clickIndexPatternsMenuItem();
|
||||
cy.get(ADD_INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
};
|
||||
|
||||
export const openBulkEditAddIndexPatternsForm = () => {
|
||||
clickAddIndexPatternsMenuItem();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Add index patterns');
|
||||
};
|
||||
|
||||
export const openBulkEditDeleteIndexPatternsForm = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
cy.get(DELETE_INDEX_PATTERNS_RULE_BULK_MENU_ITEM).click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Delete index patterns');
|
||||
};
|
||||
|
||||
export const typeIndexPatterns = (indices: string[]) => {
|
||||
cy.get(RULES_BULK_EDIT_INDEX_PATTERNS).find('input').type(indices.join('{enter}'));
|
||||
};
|
||||
|
||||
export const checkOverwriteIndexPatternsCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' index patterns")
|
||||
.click();
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_INDEX_PATTERNS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' index patterns")
|
||||
.get('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
export const checkOverwriteDataViewCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX)
|
||||
.should('have.text', 'Apply changes to rules configured with data views')
|
||||
.click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_DATA_VIEW_CHECKBOX)
|
||||
.should('have.text', 'Apply changes to rules configured with data views')
|
||||
.get('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
// EDIT-TAGS
|
||||
const clickTagsMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(TAGS_RULE_BULK_MENU_ITEM).click();
|
||||
};
|
||||
|
||||
export const clickAddTagsMenuItem = () => {
|
||||
clickTagsMenuItem();
|
||||
cy.get(ADD_TAGS_RULE_BULK_MENU_ITEM).click();
|
||||
};
|
||||
|
||||
export const openBulkEditAddTagsForm = () => {
|
||||
clickAddTagsMenuItem();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Add tags');
|
||||
};
|
||||
|
||||
export const openBulkEditDeleteTagsForm = () => {
|
||||
clickTagsMenuItem();
|
||||
cy.get(DELETE_TAGS_RULE_BULK_MENU_ITEM).click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Delete tags');
|
||||
};
|
||||
|
||||
export const typeTags = (tags: string[]) => {
|
||||
cy.get(RULES_BULK_EDIT_TAGS).find('input').type(tags.join('{enter}'));
|
||||
};
|
||||
|
||||
export const openTagsSelect = () => {
|
||||
cy.get(RULES_BULK_EDIT_TAGS).find('input').click();
|
||||
};
|
||||
|
||||
export const checkOverwriteTagsCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' tags")
|
||||
.click();
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_TAGS_CHECKBOX)
|
||||
.should('have.text', "Overwrite all selected rules' tags")
|
||||
.get('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
/**
|
||||
* check if rule tags filter populated with a list of tags
|
||||
* @param tags
|
||||
|
@ -256,6 +230,13 @@ export const checkTagsInTagsFilter = (tags: string[], srOnlyText: string = '') =
|
|||
});
|
||||
};
|
||||
|
||||
// EDIT-SCHEDULE
|
||||
export const clickUpdateScheduleMenuItem = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(UPDATE_SCHEDULE_MENU_ITEM).click();
|
||||
cy.get(UPDATE_SCHEDULE_MENU_ITEM).should('not.exist');
|
||||
};
|
||||
|
||||
export const typeScheduleInterval = (interval: string) => {
|
||||
cy.get(UPDATE_SCHEDULE_INTERVAL_INPUT).find('input').type(`{selectAll}${interval.toString()}`);
|
||||
cy.get(UPDATE_SCHEDULE_INTERVAL_INPUT).find('input').blur();
|
||||
|
@ -312,3 +293,86 @@ export const assertRuleScheduleValues = ({ interval, lookback }: RuleSchedule) =
|
|||
cy.get('dd').eq(1).should('contain.text', lookback);
|
||||
});
|
||||
};
|
||||
|
||||
// EDIT-ACTIONS
|
||||
export const openBulkEditRuleActionsForm = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
cy.get(ADD_RULE_ACTIONS_MENU_ITEM).click();
|
||||
|
||||
cy.get(RULES_BULK_EDIT_FORM_TITLE).should('have.text', 'Add rule actions');
|
||||
};
|
||||
|
||||
export const openBulkActionsMenu = () => {
|
||||
cy.get(BULK_ACTIONS_BTN).click();
|
||||
};
|
||||
|
||||
export const checkOverwriteRuleActionsCheckbox = () => {
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_ACTIONS_CHECKBOX)
|
||||
.should('have.text', 'Overwrite all selected rules actions')
|
||||
.find('input')
|
||||
.click({ force: true });
|
||||
cy.get(RULES_BULK_EDIT_OVERWRITE_ACTIONS_CHECKBOX)
|
||||
.should('have.text', 'Overwrite all selected rules actions')
|
||||
.find('input')
|
||||
.should('be.checked');
|
||||
};
|
||||
|
||||
// EDIT-FORM
|
||||
export const submitBulkEditForm = () => cy.get(RULES_BULK_EDIT_FORM_CONFIRM_BTN).click();
|
||||
|
||||
export const waitForBulkEditActionToFinish = ({
|
||||
updatedCount,
|
||||
skippedCount,
|
||||
failedCount,
|
||||
showDataViewsWarning = false,
|
||||
}: {
|
||||
updatedCount?: number;
|
||||
skippedCount?: number;
|
||||
failedCount?: number;
|
||||
showDataViewsWarning?: boolean;
|
||||
}) => {
|
||||
cy.get(BULK_ACTIONS_PROGRESS_BTN).should('be.disabled');
|
||||
|
||||
if (updatedCount !== undefined) {
|
||||
cy.contains(TOASTER_BODY, `You've successfully updated ${updatedCount} rule`);
|
||||
}
|
||||
if (failedCount !== undefined) {
|
||||
if (failedCount === 1) {
|
||||
cy.contains(TOASTER_BODY, `${failedCount} rule failed to update`);
|
||||
} else {
|
||||
cy.contains(TOASTER_BODY, `${failedCount} rules failed to update`);
|
||||
}
|
||||
}
|
||||
if (skippedCount !== undefined) {
|
||||
if (skippedCount === 1) {
|
||||
cy.contains(TOASTER_BODY, `${skippedCount} rule was skipped`);
|
||||
} else {
|
||||
cy.contains(TOASTER_BODY, `${skippedCount} rules were skipped`);
|
||||
}
|
||||
if (showDataViewsWarning) {
|
||||
cy.contains(
|
||||
TOASTER_BODY,
|
||||
'If you did not select to apply changes to rules using Kibana data views, those rules were not updated and will continue using data views.'
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const checkPrebuiltRulesCannotBeModified = (rulesCount: number) => {
|
||||
cy.get(MODAL_CONFIRMATION_BODY).contains(
|
||||
`${rulesCount} prebuilt Elastic rules (editing prebuilt rules is not supported)`
|
||||
);
|
||||
};
|
||||
|
||||
export const checkMachineLearningRulesCannotBeModified = (rulesCount: number) => {
|
||||
cy.get(MODAL_CONFIRMATION_BODY).contains(
|
||||
`${rulesCount} custom machine learning rule (these rules don't have index patterns)`
|
||||
);
|
||||
};
|
||||
|
||||
export const waitForMixedRulesBulkEditModal = (customRulesCount: number) => {
|
||||
cy.get(MODAL_CONFIRMATION_TITLE).should(
|
||||
'have.text',
|
||||
`This action can only be applied to ${customRulesCount} custom rules`
|
||||
);
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue