From 486f207c204cd3a0abb37f9f093ca0d86ccc95e2 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Wed, 21 Oct 2020 17:36:37 -0700 Subject: [PATCH 1/5] Added functional test for alerts list filters by status, alert type and action type. Did a code refactoring and splitting for alerts tests. --- .../components/action_type_filter.tsx | 2 + .../components/alert_status_filter.tsx | 2 + .../alerts_list/components/alerts_list.tsx | 15 +- .../alerts_list/components/type_filter.tsx | 2 + .../alert_create_flyout.ts | 129 ++++++++ .../{alerts.ts => alerts_list.ts} | 312 +++++++++++------- .../apps/triggers_actions_ui/index.ts | 3 +- .../fixtures/plugins/alerts/server/plugin.ts | 26 +- .../page_objects/triggers_actions_ui_page.ts | 14 +- 9 files changed, 378 insertions(+), 127 deletions(-) create mode 100644 x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts rename x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/{alerts.ts => alerts_list.ts} (64%) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx index 76c13a46db1a9..adc232c5f0166 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx @@ -40,6 +40,7 @@ export const ActionTypeFilter: React.FunctionComponent = numActiveFilters={selectedValues.length} numFilters={selectedValues.length} onClick={() => setIsPopoverOpen(!isPopoverOpen)} + data-test-subj="actionTypeFilterButton" > = } }} checked={selectedValues.includes(item.id) ? 'on' : undefined} + data-test-subj={`actionType${item.name.replaceAll(' ', '')}FilterOption`} > {item.name} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alert_status_filter.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alert_status_filter.tsx index 87e7a82cd8f23..1bae0b885dbfa 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alert_status_filter.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alert_status_filter.tsx @@ -54,6 +54,7 @@ export const AlertStatusFilter: React.FunctionComponent numActiveFilters={selectedValues.length} numFilters={selectedValues.length} onClick={() => setIsPopoverOpen(!isPopoverOpen)} + data-test-subj="alertStatusFilterButton" > } }} checked={selectedValues.includes(item) ? 'on' : undefined} + data-test-subj={`alertStatus${item}FilerOption`} > {alertsStatusesTranslationsMapping[item]} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx index 1ef695f3ed112..fc9fc4a41d29a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx @@ -437,7 +437,7 @@ export const AlertsList: React.FunctionComponent = () => { title={ { /> } iconType="alert" + data-test-subj="alertsErrorBanner" > { - + { - + { - + { - + { - + { - + = ({ numActiveFilters={selectedValues.length} numFilters={selectedValues.length} onClick={() => setIsPopoverOpen(!isPopoverOpen)} + data-test-subj="alertTypeFilterButton" > = ({ } }} checked={selectedValues.includes(item.value) ? 'on' : undefined} + data-test-subj={`alertType${item.name.replaceAll(' ', '')}FilterOption`} > {item.name} diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts new file mode 100644 index 0000000000000..709f2b8aba130 --- /dev/null +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import uuid from 'uuid'; +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +function generateUniqueKey() { + return uuid.v4().replace(/-/g, ''); +} + +export default ({ getPageObjects, getService }: FtrProviderContext) => { + const testSubjects = getService('testSubjects'); + const pageObjects = getPageObjects(['common', 'triggersActionsUI', 'header']); + const supertest = getService('supertest'); + const find = getService('find'); + const retry = getService('retry'); + + async function getAlertsByName(name: string) { + const { + body: { data: alerts }, + } = await supertest.get(`/api/alerts/_find?search=${name}&search_fields=name`).expect(200); + + return alerts; + } + + async function deleteAlerts(alertIds: string[]) { + alertIds.forEach(async (alertId: string) => { + await supertest.delete(`/api/alerts/alert/${alertId}`).set('kbn-xsrf', 'foo').expect(204, ''); + }); + } + + async function defineAlert(alertName: string) { + await pageObjects.triggersActionsUI.clickCreateAlertButton(); + await testSubjects.setValue('alertNameInput', alertName); + await testSubjects.click('.index-threshold-SelectOption'); + await testSubjects.click('selectIndexExpression'); + const comboBox = await find.byCssSelector('#indexSelectSearchBox'); + await comboBox.click(); + await comboBox.type('k'); + const filterSelectItem = await find.byCssSelector(`.euiFilterSelectItem`); + await filterSelectItem.click(); + await testSubjects.click('thresholdAlertTimeFieldSelect'); + await retry.try(async () => { + const fieldOptions = await find.allByCssSelector('#thresholdTimeField option'); + expect(fieldOptions[1]).not.to.be(undefined); + await fieldOptions[1].click(); + }); + await testSubjects.click('closePopover'); + // need this two out of popup clicks to close them + const nameInput = await testSubjects.find('alertNameInput'); + await nameInput.click(); + } + + describe('create alert', function () { + before(async () => { + await pageObjects.common.navigateToApp('triggersActions'); + await testSubjects.click('alertsTab'); + }); + + it('should filter alerts by the status', async () => { + const alertName = generateUniqueKey(); + await defineAlert(alertName); + + await testSubjects.click('saveAlertButton'); + await testSubjects.existOrFail('confirmAlertSaveModal'); + await testSubjects.click('confirmAlertSaveModal > confirmModalConfirmButton'); + await testSubjects.missingOrFail('confirmAlertSaveModal'); + + await pageObjects.common.closeToast(); + // initialy alert get Pending status, which will be changed after the first execution to the Active, Error or Ok + await testSubjects.click('alertStatusFilterButton'); + await testSubjects.click('alertStatuspendingFilerOption'); + const filterActiveOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); + expect(filterActiveOnlyResults).to.eql([ + { + alertType: 'Index threshold', + interval: '1m', + name: alertName, + status: 'Pending', + tagsText: '', + }, + ]); + // Unselect Pending filter + await testSubjects.click('alertStatuspendingFilerOption'); + + retry.try(async () => { + await testSubjects.click('alertStatusokFilerOption'); + + const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); + expect(filterOkOnlyResults).to.eql([ + { + status: 'Ok', + name: alertName, + tagsText: '', + alertType: 'Index threshold', + interval: '1m', + }, + ]); + }); + // clean up created alert + const alertsToDelete = await getAlertsByName(alertName); + await deleteAlerts(alertsToDelete.map((alertItem: { id: string }) => alertItem.id)); + }); + + /* it('should display error banner when exists alerts with status error', async () => { + + }); + + it('should display total alerts by status', async () => { + + }); + + it('should filter alerts by the action type', async () => { + const activeAlert = await createAlert(); + const okAlert = await createAlert(); + const errorAlert = await createAlert(); + }); + + it('should filter alerts by the alert type', async () => { + const activeAlert = await createAlert(); + const okAlert = await createAlert(); + const errorAlert = await createAlert(); + });*/ + }); +}; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts similarity index 64% rename from x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts rename to x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts index ce821b56d3a8a..b0adb059adeb4 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts @@ -14,12 +14,19 @@ function generateUniqueKey() { } export default ({ getPageObjects, getService }: FtrProviderContext) => { + const alerting = getService('alerting'); const testSubjects = getService('testSubjects'); + const find = getService('find'); const pageObjects = getPageObjects(['common', 'triggersActionsUI', 'header']); const supertest = getService('supertest'); - const find = getService('find'); const retry = getService('retry'); + async function deleteAlerts(alertIds: string[]) { + alertIds.forEach(async (alertId: string) => { + await supertest.delete(`/api/alerts/alert/${alertId}`).set('kbn-xsrf', 'foo').expect(204, ''); + }); + } + async function createAlert(overwrites: Record = {}) { const { body: createdAlert } = await supertest .post(`/api/alerts/alert`) @@ -40,132 +47,42 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { return createdAlert; } - async function getAlertsByName(name: string) { - const { - body: { data: alerts }, - } = await supertest.get(`/api/alerts/_find?search=${name}&search_fields=name`).expect(200); - - return alerts; - } - - async function deleteAlerts(alertIds: string[]) { - alertIds.forEach(async (alertId: string) => { - await supertest.delete(`/api/alerts/alert/${alertId}`).set('kbn-xsrf', 'foo').expect(204, ''); - }); + async function createFailingAlert(overwrites: Record = {}) { + const { body: createdAlert } = await supertest + .post(`/api/alerts/alert`) + .set('kbn-xsrf', 'foo') + .send({ + enabled: true, + name: generateUniqueKey(), + tags: ['foo', 'bar'], + alertTypeId: 'test.failing', + consumer: 'alerts', + schedule: { interval: '30s' }, + throttle: '1m', + actions: [], + params: {}, + ...overwrites, + }) + .expect(200); + return createdAlert; } - async function defineAlert(alertName: string) { - await pageObjects.triggersActionsUI.clickCreateAlertButton(); - await testSubjects.setValue('alertNameInput', alertName); - await testSubjects.click('.index-threshold-SelectOption'); - await testSubjects.click('selectIndexExpression'); - const comboBox = await find.byCssSelector('#indexSelectSearchBox'); - await comboBox.click(); - await comboBox.type('k'); - const filterSelectItem = await find.byCssSelector(`.euiFilterSelectItem`); - await filterSelectItem.click(); - await testSubjects.click('thresholdAlertTimeFieldSelect'); - await retry.try(async () => { - const fieldOptions = await find.allByCssSelector('#thresholdTimeField option'); - expect(fieldOptions[1]).not.to.be(undefined); - await fieldOptions[1].click(); - }); - await testSubjects.click('closePopover'); - // need this two out of popup clicks to close them - const nameInput = await testSubjects.find('alertNameInput'); - await nameInput.click(); + async function refreshAlertsList() { + await testSubjects.click('alertsTab'); } - describe('alerts', function () { + describe('alerts list', function () { before(async () => { await pageObjects.common.navigateToApp('triggersActions'); await testSubjects.click('alertsTab'); }); - it('should create an alert', async () => { - const alertName = generateUniqueKey(); - await defineAlert(alertName); - - await testSubjects.click('.slack-ActionTypeSelectOption'); - await testSubjects.click('addNewActionConnectorButton-.slack'); - const slackConnectorName = generateUniqueKey(); - await testSubjects.setValue('nameInput', slackConnectorName); - await testSubjects.setValue('slackWebhookUrlInput', 'https://test'); - await find.clickByCssSelector('[data-test-subj="saveActionButtonModal"]:not(disabled)'); - const createdConnectorToastTitle = await pageObjects.common.closeToast(); - expect(createdConnectorToastTitle).to.eql(`Created '${slackConnectorName}'`); - await testSubjects.setValue('messageTextArea', 'test message '); - await testSubjects.click('messageAddVariableButton'); - await testSubjects.click('variableMenuButton-0'); - const messageTextArea = await find.byCssSelector('[data-test-subj="messageTextArea"]'); - expect(await messageTextArea.getAttribute('value')).to.eql('test message {{alertId}}'); - await messageTextArea.type(' some additional text '); - - await testSubjects.click('messageAddVariableButton'); - await testSubjects.click('variableMenuButton-1'); - - expect(await messageTextArea.getAttribute('value')).to.eql( - 'test message {{alertId}} some additional text {{alertInstanceId}}' - ); - - await testSubjects.click('saveAlertButton'); - const toastTitle = await pageObjects.common.closeToast(); - expect(toastTitle).to.eql(`Created alert "${alertName}"`); - await pageObjects.triggersActionsUI.searchAlerts(alertName); - const searchResultsAfterSave = await pageObjects.triggersActionsUI.getAlertsList(); - expect(searchResultsAfterSave).to.eql([ - { - name: alertName, - tagsText: '', - alertType: 'Index threshold', - interval: '1m', - }, - ]); - - // clean up created alert - const alertsToDelete = await getAlertsByName(alertName); - await deleteAlerts(alertsToDelete.map((alertItem: { id: string }) => alertItem.id)); - }); - - it('should show save confirmation before creating alert with no actions', async () => { - const alertName = generateUniqueKey(); - await defineAlert(alertName); - - await testSubjects.click('saveAlertButton'); - await testSubjects.existOrFail('confirmAlertSaveModal'); - await testSubjects.click('confirmAlertSaveModal > confirmModalCancelButton'); - await testSubjects.missingOrFail('confirmAlertSaveModal'); - await find.existsByCssSelector('[data-test-subj="saveAlertButton"]:not(disabled)'); - - await testSubjects.click('saveAlertButton'); - await testSubjects.existOrFail('confirmAlertSaveModal'); - await testSubjects.click('confirmAlertSaveModal > confirmModalConfirmButton'); - await testSubjects.missingOrFail('confirmAlertSaveModal'); - - const toastTitle = await pageObjects.common.closeToast(); - expect(toastTitle).to.eql(`Created alert "${alertName}"`); - await pageObjects.triggersActionsUI.searchAlerts(alertName); - const searchResultsAfterSave = await pageObjects.triggersActionsUI.getAlertsList(); - expect(searchResultsAfterSave).to.eql([ - { - name: alertName, - tagsText: '', - alertType: 'Index threshold', - interval: '1m', - }, - ]); - - // clean up created alert - const alertsToDelete = await getAlertsByName(alertName); - await deleteAlerts(alertsToDelete.map((alertItem: { id: string }) => alertItem.id)); - }); - it('should display alerts in alphabetical order', async () => { const uniqueKey = generateUniqueKey(); const a = await createAlert({ name: 'b', tags: [uniqueKey] }); const b = await createAlert({ name: 'c', tags: [uniqueKey] }); const c = await createAlert({ name: 'a', tags: [uniqueKey] }); - + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(uniqueKey); const searchResults = await pageObjects.triggersActionsUI.getAlertsList(); @@ -179,6 +96,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should search for alert', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); const searchResults = await pageObjects.triggersActionsUI.getAlertsList(); @@ -195,6 +113,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should search for tags', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(`${createdAlert.name} foo`); const searchResults = await pageObjects.triggersActionsUI.getAlertsList(); @@ -210,13 +129,17 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); it('should display an empty list when search did not return any alerts', async () => { + const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(`An Alert That For Sure Doesn't Exist!`); expect(await pageObjects.triggersActionsUI.isAlertsListDisplayed()).to.eql(true); + await deleteAlerts([createdAlert.id]); }); it('should disable single alert', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click('collapsedItemActions'); @@ -235,6 +158,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should re-enable single alert', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click('collapsedItemActions'); @@ -259,6 +183,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should mute single alert', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click('collapsedItemActions'); @@ -277,6 +202,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should unmute single alert', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click('collapsedItemActions'); @@ -302,6 +228,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should delete single alert', async () => { const firstAlert = await createAlert(); const secondAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(secondAlert.name); await testSubjects.click('collapsedItemActions'); @@ -324,6 +251,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should mute all selection', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click(`checkboxSelectRow-${createdAlert.id}`); @@ -347,6 +275,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should unmute all selection', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click(`checkboxSelectRow-${createdAlert.id}`); @@ -372,6 +301,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should disable all selection', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click(`checkboxSelectRow-${createdAlert.id}`); @@ -395,6 +325,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should enable all selection', async () => { const createdAlert = await createAlert(); + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(createdAlert.name); await testSubjects.click(`checkboxSelectRow-${createdAlert.id}`); @@ -424,7 +355,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const createdAlertsFirstPage = await Promise.all( times(2, () => createAlert({ name: `${namePrefix}-0${count++}` })) ); - + await refreshAlertsList(); await pageObjects.triggersActionsUI.searchAlerts(namePrefix); for (const createdAlert of createdAlertsFirstPage) { @@ -447,5 +378,158 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const searchResultsAfterDelete = await pageObjects.triggersActionsUI.getAlertsList(); expect(searchResultsAfterDelete).to.have.length(0); }); + + it('should filter alerts by the status', async () => { + const createdAlert = await createAlert(); + // initialy alert get Pending status, so we need to retry refresh list logic to get the post execution status Ok + await retry.try(async () => { + await refreshAlertsList(); + const refreshResults = await pageObjects.triggersActionsUI.getAlertsList(true); + expect(refreshResults).to.eql([ + { + name: createdAlert.name, + tagsText: 'foo, bar', + alertType: 'Test: Noop', + interval: '1m', + status: 'Ok', + }, + ]); + }); + await testSubjects.click('alertStatusFilterButton'); + await testSubjects.click('alertStatuserrorFilerOption'); // select Error status filter + await retry.try(async () => { + const filterErrorOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); + expect(filterErrorOnlyResults).to.eql([]); // no alerts with errors + }); + + const alertStatusokFilerOption = await testSubjects.find('alertStatusokFilerOption'); + // reopen popup with status filters if it was closed + if (!alertStatusokFilerOption) { + await testSubjects.click('alertStatusFilterButton'); + } + await testSubjects.click('alertStatusokFilerOption'); // select Ok status filter + + await retry.try(async () => { + const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); + expect(filterOkOnlyResults).to.eql([ + { + name: createdAlert.name, + tagsText: 'foo, bar', + alertType: 'Test: Noop', + interval: '1m', + status: 'Ok', + }, + ]); + }); + await deleteAlerts([createdAlert.id]); + }); + + it('should display total alerts by status and error banner only when exists alerts with status error', async () => { + const createdAlert = await createAlert(); + await retry.try(async () => { + await refreshAlertsList(); + const refreshResults = await pageObjects.triggersActionsUI.getAlertsList(true); + expect(refreshResults).to.eql([ + { + name: createdAlert.name, + tagsText: 'foo, bar', + alertType: 'Test: Noop', + interval: '1m', + status: 'Ok', + }, + ]); + }); + + const alertsErrorBannerWhenNoErrors = await find.allByCssSelector( + '[data-test-subj="alertsErrorBanner"]' + ); + expect(alertsErrorBannerWhenNoErrors).to.have.length(0); + + const failingAlert = await createFailingAlert(); + await retry.try(async () => { + await refreshAlertsList(); + const alertsErrorBannerExistErrors = await find.allByCssSelector( + '[data-test-subj="alertsErrorBanner"]' + ); + expect(alertsErrorBannerExistErrors).to.have.length(1); + expect( + await ( + await alertsErrorBannerExistErrors[0].findByCssSelector('.euiCallOutHeader') + ).getVisibleText() + ).to.equal('Error found in 1 alert.'); + }); + + expect(await testSubjects.getVisibleText('totalAlertsCount')).to.be( + 'Showing: 2 of 2 alerts.' + ); + expect(await testSubjects.getVisibleText('totalActiveAlertsCount')).to.be('Active: 0'); + expect(await testSubjects.getVisibleText('totalOkAlertsCount')).to.be('Ok: 1'); + expect(await testSubjects.getVisibleText('totalErrorAlertsCount')).to.be('Error: 1'); + expect(await testSubjects.getVisibleText('totalPendingAlertsCount')).to.be('Pending: 0'); + expect(await testSubjects.getVisibleText('totalUnknownAlertsCount')).to.be('Unknown: 0'); + + await deleteAlerts([createdAlert.id, failingAlert.id]); + }); + + it('should filter alerts by the alert type', async () => { + const noopAlert = await createAlert(); + const failinfAlert = await createFailingAlert(); + await refreshAlertsList(); + await testSubjects.click('alertTypeFilterButton'); + await testSubjects.click('alertTypeTest:NoopFilterOption'); + + await retry.try(async () => { + const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); + expect(filterOkOnlyResults).to.eql([ + { + name: noopAlert.name, + tagsText: 'foo, bar', + alertType: 'Test: Noop', + interval: '1m', + }, + ]); + }); + + await deleteAlerts([noopAlert.id, failinfAlert.id]); + }); + + it('should filter alerts by the action type', async () => { + const noopAlert = await createAlert(); + const action = await alerting.actions.createAction({ + name: `slack-${Date.now()}`, + actionTypeId: '.slack', + config: {}, + secrets: { + webhookUrl: 'https://test', + }, + }); + const noopAlertWithAction = await createAlert({ + actions: [ + { + id: action.id, + actionTypeId: '.server-log', + group: 'default', + params: { level: 'info', message: 'gfghfhg' }, + }, + ], + }); + await refreshAlertsList(); + await testSubjects.click('actionTypeFilterButton'); + await testSubjects.click('actionTypeSlackFilterOption'); + + await retry.try(async () => { + const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); + expect(filterOkOnlyResults).to.eql([ + { + name: noopAlertWithAction.name, + tagsText: 'foo, bar', + alertType: 'Test: Noop', + interval: '1m', + }, + ]); + }); + + await deleteAlerts([noopAlertWithAction.id, noopAlert.id]); + }); }); }; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts index 3292184b36056..8600cb6c852f5 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts @@ -11,7 +11,8 @@ export default ({ loadTestFile, getService }: FtrProviderContext) => { this.tags('ciGroup10'); loadTestFile(require.resolve('./home_page')); loadTestFile(require.resolve('./connectors')); - loadTestFile(require.resolve('./alerts')); + loadTestFile(require.resolve('./alerts_list')); + loadTestFile(require.resolve('./alert_create_flyout')); loadTestFile(require.resolve('./details')); }); }; diff --git a/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/server/plugin.ts b/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/server/plugin.ts index fd7869eac918f..e3927f6bfffb9 100644 --- a/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/server/plugin.ts +++ b/x-pack/test/functional_with_es_ssl/fixtures/plugins/alerts/server/plugin.ts @@ -21,16 +21,17 @@ export class AlertingFixturePlugin implements Plugin { - return { + const rowItem = { name: $(row) .findTestSubject('alertsTableCell-name') .find('.euiTableCellContent') @@ -96,6 +96,16 @@ export function TriggersActionsPageProvider({ getService }: FtrProviderContext) .find('.euiTableCellContent') .text(), }; + if (includingStatus) { + return { + ...rowItem, + status: $(row) + .findTestSubject('alertsTableCell-status') + .find('.euiTableCellContent') + .text(), + }; + } + return rowItem; }); }, async isAlertsListDisplayed() { From ea8113464855bca105ed9432b2be40eedeb3afa5 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Thu, 22 Oct 2020 07:58:22 -0700 Subject: [PATCH 2/5] - --- .../sections/alerts_list/components/alerts_list.test.tsx | 1 + .../application/sections/alerts_list/components/alerts_list.tsx | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx index 86b9afd9565f8..ddc2d00eae0cc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx @@ -498,6 +498,7 @@ describe('alerts_list with show only capability', () => { it('renders table of alerts with delete button disabled', async () => { await setup(); + expect(wrapper).toMatchShapshot(); expect(wrapper.find('EuiBasicTable')).toHaveLength(1); expect(wrapper.find('EuiTableRow')).toHaveLength(2); // TODO: check delete button diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx index fc9fc4a41d29a..62105828381b0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx @@ -440,8 +440,6 @@ export const AlertsList: React.FunctionComponent = () => { defaultMessage="Error found in {totalStausesError, plural, one {# alert} other {# alerts}}." values={{ totalStausesError: alertsStatusesTotal.error, - singleTitle: 'alert', - multipleTitle: 'alerts', }} /> } From 59ad274c7755928622070a60982240c99a9dda77 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Thu, 22 Oct 2020 12:01:52 -0700 Subject: [PATCH 3/5] fixed failing tests --- .../components/action_type_filter.tsx | 2 +- .../components/alerts_list.test.tsx | 1 - .../alerts_list/components/alerts_list.tsx | 5 -- .../alerts_list/components/type_filter.tsx | 2 +- .../apps/triggers_actions_ui/alerts_list.ts | 54 ++++++----------- .../page_objects/triggers_actions_ui_page.ts | 60 +++++++++++-------- 6 files changed, 54 insertions(+), 70 deletions(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx index adc232c5f0166..5a444cd3e9e60 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/action_type_filter.tsx @@ -62,7 +62,7 @@ export const ActionTypeFilter: React.FunctionComponent = } }} checked={selectedValues.includes(item.id) ? 'on' : undefined} - data-test-subj={`actionType${item.name.replaceAll(' ', '')}FilterOption`} + data-test-subj={`actionType${item.id}FilterOption`} > {item.name} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx index ddc2d00eae0cc..86b9afd9565f8 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.test.tsx @@ -498,7 +498,6 @@ describe('alerts_list with show only capability', () => { it('renders table of alerts with delete button disabled', async () => { await setup(); - expect(wrapper).toMatchShapshot(); expect(wrapper.find('EuiBasicTable')).toHaveLength(1); expect(wrapper.find('EuiTableRow')).toHaveLength(2); // TODO: check delete button diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx index 62105828381b0..9eb1149cf3905 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_list/components/alerts_list.tsx @@ -486,7 +486,6 @@ export const AlertsList: React.FunctionComponent = () => { { @@ -507,7 +505,6 @@ export const AlertsList: React.FunctionComponent = () => { @@ -517,7 +514,6 @@ export const AlertsList: React.FunctionComponent = () => { { = ({ } }} checked={selectedValues.includes(item.value) ? 'on' : undefined} - data-test-subj={`alertType${item.name.replaceAll(' ', '')}FilterOption`} + data-test-subj={`alertType${item.value}FilterOption`} > {item.name} diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts index b0adb059adeb4..7ee4141feb393 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts @@ -381,54 +381,36 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should filter alerts by the status', async () => { const createdAlert = await createAlert(); - // initialy alert get Pending status, so we need to retry refresh list logic to get the post execution status Ok + const failinfAlert = await createFailingAlert(); + // initialy alert get Pending status, so we need to retry refresh list logic to get the post execution statuses await retry.try(async () => { await refreshAlertsList(); - const refreshResults = await pageObjects.triggersActionsUI.getAlertsList(true); - expect(refreshResults).to.eql([ - { - name: createdAlert.name, - tagsText: 'foo, bar', - alertType: 'Test: Noop', - interval: '1m', - status: 'Ok', - }, - ]); + const refreshResults = await pageObjects.triggersActionsUI.getAlertsListWithStatus(); + expect(refreshResults.map((item) => item.status).sort()).to.eql(['Error', 'Ok']); }); await testSubjects.click('alertStatusFilterButton'); await testSubjects.click('alertStatuserrorFilerOption'); // select Error status filter await retry.try(async () => { - const filterErrorOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); - expect(filterErrorOnlyResults).to.eql([]); // no alerts with errors - }); - - const alertStatusokFilerOption = await testSubjects.find('alertStatusokFilerOption'); - // reopen popup with status filters if it was closed - if (!alertStatusokFilerOption) { - await testSubjects.click('alertStatusFilterButton'); - } - await testSubjects.click('alertStatusokFilerOption'); // select Ok status filter - - await retry.try(async () => { - const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); - expect(filterOkOnlyResults).to.eql([ + const filterErrorOnlyResults = await pageObjects.triggersActionsUI.getAlertsListWithStatus(); + expect(filterErrorOnlyResults).to.eql([ { - name: createdAlert.name, + name: failinfAlert.name, tagsText: 'foo, bar', - alertType: 'Test: Noop', - interval: '1m', - status: 'Ok', + alertType: 'Test: Failing', + interval: '30s', + status: 'Error', }, ]); }); - await deleteAlerts([createdAlert.id]); + + await deleteAlerts([createdAlert.id, failinfAlert.id]); }); it('should display total alerts by status and error banner only when exists alerts with status error', async () => { const createdAlert = await createAlert(); await retry.try(async () => { await refreshAlertsList(); - const refreshResults = await pageObjects.triggersActionsUI.getAlertsList(true); + const refreshResults = await pageObjects.triggersActionsUI.getAlertsListWithStatus(); expect(refreshResults).to.eql([ { name: createdAlert.name, @@ -476,16 +458,16 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const failinfAlert = await createFailingAlert(); await refreshAlertsList(); await testSubjects.click('alertTypeFilterButton'); - await testSubjects.click('alertTypeTest:NoopFilterOption'); + await testSubjects.click('alertTypetest.failingFilterOption'); await retry.try(async () => { const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); expect(filterOkOnlyResults).to.eql([ { - name: noopAlert.name, + name: failinfAlert.name, tagsText: 'foo, bar', - alertType: 'Test: Noop', - interval: '1m', + alertType: 'Test: Failing', + interval: '30s', }, ]); }); @@ -515,7 +497,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); await refreshAlertsList(); await testSubjects.click('actionTypeFilterButton'); - await testSubjects.click('actionTypeSlackFilterOption'); + await testSubjects.click('actionType.slackFilterOption'); await retry.try(async () => { const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); diff --git a/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts b/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts index 24c7b4caf81e1..db6990d2b824e 100644 --- a/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts +++ b/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts @@ -5,6 +5,7 @@ */ import expect from '@kbn/expect'; +import { CustomCheerioStatic } from 'test/functional/services/lib/web_element_wrapper/custom_cheerio_api'; import { FtrProviderContext } from '../ftr_provider_context'; const ENTER_KEY = '\uE007'; @@ -14,6 +15,24 @@ export function TriggersActionsPageProvider({ getService }: FtrProviderContext) const retry = getService('retry'); const testSubjects = getService('testSubjects'); + function getRowItemData(row: CheerioElement, $: CustomCheerioStatic) { + return { + name: $(row).findTestSubject('alertsTableCell-name').find('.euiTableCellContent').text(), + tagsText: $(row) + .findTestSubject('alertsTableCell-tagsText') + .find('.euiTableCellContent') + .text(), + alertType: $(row) + .findTestSubject('alertsTableCell-alertType') + .find('.euiTableCellContent') + .text(), + interval: $(row) + .findTestSubject('alertsTableCell-interval') + .find('.euiTableCellContent') + .text(), + }; + } + return { async getSectionHeadingText() { return await testSubjects.getVisibleText('appTitle'); @@ -72,40 +91,29 @@ export function TriggersActionsPageProvider({ getService }: FtrProviderContext) }; }); }, - async getAlertsList(includingStatus?: boolean) { + async getAlertsList() { const table = await find.byCssSelector('[data-test-subj="alertsList"] table'); const $ = await table.parseDomContent(); return $.findTestSubjects('alert-row') .toArray() .map((row) => { - const rowItem = { - name: $(row) - .findTestSubject('alertsTableCell-name') - .find('.euiTableCellContent') - .text(), - tagsText: $(row) - .findTestSubject('alertsTableCell-tagsText') - .find('.euiTableCellContent') - .text(), - alertType: $(row) - .findTestSubject('alertsTableCell-alertType') - .find('.euiTableCellContent') - .text(), - interval: $(row) - .findTestSubject('alertsTableCell-interval') + return getRowItemData(row, $); + }); + }, + async getAlertsListWithStatus() { + const table = await find.byCssSelector('[data-test-subj="alertsList"] table'); + const $ = await table.parseDomContent(); + return $.findTestSubjects('alert-row') + .toArray() + .map((row) => { + const rowItem = getRowItemData(row, $); + return { + ...rowItem, + status: $(row) + .findTestSubject('alertsTableCell-status') .find('.euiTableCellContent') .text(), }; - if (includingStatus) { - return { - ...rowItem, - status: $(row) - .findTestSubject('alertsTableCell-status') - .find('.euiTableCellContent') - .text(), - }; - } - return rowItem; }); }, async isAlertsListDisplayed() { From c7919afbc73f1c491f7e354f43b130c8a7a69412 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Thu, 22 Oct 2020 12:38:00 -0700 Subject: [PATCH 4/5] fixed type checks --- .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - .../alert_create_flyout.ts | 103 ++++++++++-------- 3 files changed, 58 insertions(+), 47 deletions(-) diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5cabdd62d7c87..6a7bb8211ed49 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -20374,7 +20374,6 @@ "xpack.triggersActionsUI.sections.alertsList.alertStatusOk": "OK", "xpack.triggersActionsUI.sections.alertsList.alertStatusPending": "保留中", "xpack.triggersActionsUI.sections.alertsList.alertStatusUnknown": "不明", - "xpack.triggersActionsUI.sections.alertsList.attentionBannerTitle": "{totalStausesError} {totalStausesError, plural, one {{singleTitle}} other {# {multipleTitle}}}でエラーが見つかりました。", "xpack.triggersActionsUI.sections.alertsList.bulkActionPopover.buttonTitle": "アラートを管理", "xpack.triggersActionsUI.sections.alertsList.bulkActionPopover.deleteAllTitle": "削除", "xpack.triggersActionsUI.sections.alertsList.bulkActionPopover.disableAllTitle": "無効にする", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 229938a3c1d08..27cefcddefb90 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -20394,7 +20394,6 @@ "xpack.triggersActionsUI.sections.alertsList.alertStatusOk": "确定", "xpack.triggersActionsUI.sections.alertsList.alertStatusPending": "待处理", "xpack.triggersActionsUI.sections.alertsList.alertStatusUnknown": "未知", - "xpack.triggersActionsUI.sections.alertsList.attentionBannerTitle": "在 {totalStausesError} 个 {totalStausesError, plural, one {{singleTitle}} other {# 个 {multipleTitle}}}中发现错误。", "xpack.triggersActionsUI.sections.alertsList.bulkActionPopover.buttonTitle": "管理告警", "xpack.triggersActionsUI.sections.alertsList.bulkActionPopover.deleteAllTitle": "删除", "xpack.triggersActionsUI.sections.alertsList.bulkActionPopover.disableAllTitle": "禁用", diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts index 709f2b8aba130..7d99d3635106d 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts @@ -61,69 +61,82 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('alertsTab'); }); - it('should filter alerts by the status', async () => { + it('should create an alert', async () => { const alertName = generateUniqueKey(); await defineAlert(alertName); - await testSubjects.click('saveAlertButton'); - await testSubjects.existOrFail('confirmAlertSaveModal'); - await testSubjects.click('confirmAlertSaveModal > confirmModalConfirmButton'); - await testSubjects.missingOrFail('confirmAlertSaveModal'); + await testSubjects.click('.slack-ActionTypeSelectOption'); + await testSubjects.click('addNewActionConnectorButton-.slack'); + const slackConnectorName = generateUniqueKey(); + await testSubjects.setValue('nameInput', slackConnectorName); + await testSubjects.setValue('slackWebhookUrlInput', 'https://test'); + await find.clickByCssSelector('[data-test-subj="saveActionButtonModal"]:not(disabled)'); + const createdConnectorToastTitle = await pageObjects.common.closeToast(); + expect(createdConnectorToastTitle).to.eql(`Created '${slackConnectorName}'`); + await testSubjects.setValue('messageTextArea', 'test message '); + await testSubjects.click('messageAddVariableButton'); + await testSubjects.click('variableMenuButton-0'); + const messageTextArea = await find.byCssSelector('[data-test-subj="messageTextArea"]'); + expect(await messageTextArea.getAttribute('value')).to.eql('test message {{alertId}}'); + await messageTextArea.type(' some additional text '); + + await testSubjects.click('messageAddVariableButton'); + await testSubjects.click('variableMenuButton-1'); + + expect(await messageTextArea.getAttribute('value')).to.eql( + 'test message {{alertId}} some additional text {{alertInstanceId}}' + ); - await pageObjects.common.closeToast(); - // initialy alert get Pending status, which will be changed after the first execution to the Active, Error or Ok - await testSubjects.click('alertStatusFilterButton'); - await testSubjects.click('alertStatuspendingFilerOption'); - const filterActiveOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); - expect(filterActiveOnlyResults).to.eql([ + await testSubjects.click('saveAlertButton'); + const toastTitle = await pageObjects.common.closeToast(); + expect(toastTitle).to.eql(`Created alert "${alertName}"`); + await pageObjects.triggersActionsUI.searchAlerts(alertName); + const searchResultsAfterSave = await pageObjects.triggersActionsUI.getAlertsList(); + expect(searchResultsAfterSave).to.eql([ { - alertType: 'Index threshold', - interval: '1m', name: alertName, - status: 'Pending', tagsText: '', + alertType: 'Index threshold', + interval: '1m', }, ]); - // Unselect Pending filter - await testSubjects.click('alertStatuspendingFilerOption'); - - retry.try(async () => { - await testSubjects.click('alertStatusokFilerOption'); - - const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(true); - expect(filterOkOnlyResults).to.eql([ - { - status: 'Ok', - name: alertName, - tagsText: '', - alertType: 'Index threshold', - interval: '1m', - }, - ]); - }); + // clean up created alert const alertsToDelete = await getAlertsByName(alertName); await deleteAlerts(alertsToDelete.map((alertItem: { id: string }) => alertItem.id)); }); - /* it('should display error banner when exists alerts with status error', async () => { + it('should show save confirmation before creating alert with no actions', async () => { + const alertName = generateUniqueKey(); + await defineAlert(alertName); - }); + await testSubjects.click('saveAlertButton'); + await testSubjects.existOrFail('confirmAlertSaveModal'); + await testSubjects.click('confirmAlertSaveModal > confirmModalCancelButton'); + await testSubjects.missingOrFail('confirmAlertSaveModal'); + await find.existsByCssSelector('[data-test-subj="saveAlertButton"]:not(disabled)'); - it('should display total alerts by status', async () => { + await testSubjects.click('saveAlertButton'); + await testSubjects.existOrFail('confirmAlertSaveModal'); + await testSubjects.click('confirmAlertSaveModal > confirmModalConfirmButton'); + await testSubjects.missingOrFail('confirmAlertSaveModal'); - }); + const toastTitle = await pageObjects.common.closeToast(); + expect(toastTitle).to.eql(`Created alert "${alertName}"`); + await pageObjects.triggersActionsUI.searchAlerts(alertName); + const searchResultsAfterSave = await pageObjects.triggersActionsUI.getAlertsList(); + expect(searchResultsAfterSave).to.eql([ + { + name: alertName, + tagsText: '', + alertType: 'Index threshold', + interval: '1m', + }, + ]); - it('should filter alerts by the action type', async () => { - const activeAlert = await createAlert(); - const okAlert = await createAlert(); - const errorAlert = await createAlert(); + // clean up created alert + const alertsToDelete = await getAlertsByName(alertName); + await deleteAlerts(alertsToDelete.map((alertItem: { id: string }) => alertItem.id)); }); - - it('should filter alerts by the alert type', async () => { - const activeAlert = await createAlert(); - const okAlert = await createAlert(); - const errorAlert = await createAlert(); - });*/ }); }; From c15444e78972598d3fc2e2d39a850d45670ef7de Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Mon, 26 Oct 2020 13:34:13 -0700 Subject: [PATCH 5/5] minor naming fixes --- .../apps/triggers_actions_ui/alerts_list.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts index 7ee4141feb393..a69db68c7d35e 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts_list.ts @@ -461,8 +461,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('alertTypetest.failingFilterOption'); await retry.try(async () => { - const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); - expect(filterOkOnlyResults).to.eql([ + const filterFailingAlertOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); + expect(filterFailingAlertOnlyResults).to.eql([ { name: failinfAlert.name, tagsText: 'foo, bar', @@ -489,7 +489,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { actions: [ { id: action.id, - actionTypeId: '.server-log', + actionTypeId: '.slack', group: 'default', params: { level: 'info', message: 'gfghfhg' }, }, @@ -500,8 +500,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('actionType.slackFilterOption'); await retry.try(async () => { - const filterOkOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); - expect(filterOkOnlyResults).to.eql([ + const filterWithSlackOnlyResults = await pageObjects.triggersActionsUI.getAlertsList(); + expect(filterWithSlackOnlyResults).to.eql([ { name: noopAlertWithAction.name, tagsText: 'foo, bar',