From 39427a0f9f1fca069e615927d9df42591c7e61d4 Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Thu, 25 Feb 2021 18:14:26 -0500 Subject: [PATCH 1/2] Added data-test-subj for ILM policies row and added a functional UI test to create a new ILM policy. --- .../policy_table/components/table_content.tsx | 10 +++++-- .../index_lifecycle_management/home_page.ts | 25 ++++++++++++++++- .../index_lifecycle_management_page.ts | 28 ++++++++++++++++++- 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx index 76d2cf666f659..508e68edb54a0 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx @@ -184,8 +184,8 @@ export const TableContent: React.FunctionComponent = ({ ); const deletePolicyTooltip = hasLinkedIndices ? i18n.translate('xpack.indexLifecycleMgmt.policyTable.deletePolicyButtonDisabledTooltip', { - defaultMessage: 'You cannot delete a policy that is being used by an index', - }) + defaultMessage: 'You cannot delete a policy that is being used by an index', + }) : null; const items = []; if (hasLinkedIndices) { @@ -319,7 +319,11 @@ export const TableContent: React.FunctionComponent = ({ const rows = sortedPolicies.map((policy) => { const { name } = policy; - return {renderRowCells(policy)}; + return ( + + {renderRowCells(policy)} + + ); }); const renderAddPolicyToTemplateConfirmModal = (policy: PolicyFromES): ReactElement => { diff --git a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts index 5c1ec2f39d663..5a46c50343ff6 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts @@ -11,8 +11,10 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ getPageObjects, getService }: FtrProviderContext) => { const pageObjects = getPageObjects(['common', 'indexLifecycleManagement']); const log = getService('log'); + const retry = getService('retry'); + const testSubjects = getService('testSubjects'); - describe('Home page', function () { + describe.only('Home page', function () { before(async () => { await pageObjects.common.navigateToApp('indexLifecycleManagement'); }); @@ -25,5 +27,26 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const createPolicyButton = await pageObjects.indexLifecycleManagement.createPolicyButton(); expect(await createPolicyButton.isDisplayed()).to.be(true); }); + + it('Create new policy with Warm and Cold Phases', async () => { + const policyName = 'testPolicy1'; + await pageObjects.indexLifecycleManagement.createNewPolicyAndSave( + policyName, + true, + true, + false + ); + + await retry.waitFor('navigation back to home page.', async () => { + return (await testSubjects.getVisibleText('sectionHeading')) === 'Index Lifecycle Policies'; + }); + + const allPolicies = await pageObjects.indexLifecycleManagement.getPolicyList(); + const filteredPolicies = allPolicies.filter(function (policy) { + return policy.name === policyName; + }); + + expect(filteredPolicies.length).to.be(1); + }); }); }; diff --git a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts index ddf46926f122a..f47e79260e61c 100644 --- a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts +++ b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import { map as mapAsync } from 'bluebird'; import { FtrProviderContext } from '../ftr_provider_context'; export function IndexLifecycleManagementPageProvider({ getService }: FtrProviderContext) { @@ -50,8 +50,34 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider coldEnabled: boolean = false, deletePhaseEnabled: boolean = false ) { + await testSubjects.click('createPolicyButton'); await this.fillNewPolicyForm(policyName, warmEnabled, coldEnabled, deletePhaseEnabled); await this.saveNewPolicy(); }, + + async getPolicyList() { + const policies = await testSubjects.findAll('policyTableRow'); + return mapAsync(policies, async (policy) => { + const policyNameElement = await policy.findByTestSubject('policyTableCell-name'); + const policyLinkedIndicesElement = await policy.findByTestSubject( + 'policyTableCell-linkedIndices' + ); + const policyVersionElement = await policy.findByTestSubject('policyTableCell-version'); + const policyModifiedDateElement = await policy.findByTestSubject( + 'policyTableCell-modified_date' + ); + const policyActionsButtonElement = await policy.findByTestSubject( + 'policyActionsContextMenuButton' + ); + + return { + name: await policyNameElement.getVisibleText(), + linkedIndices: await policyLinkedIndicesElement.getVisibleText(), + version: await policyVersionElement.getVisibleText(), + modifiedDate: await policyModifiedDateElement.getVisibleText(), + actionsButton: policyActionsButtonElement, + }; + }); + }, }; } From 530905fba293461add5faad4fa5dc1f42fbde3d6 Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Tue, 2 Mar 2021 20:02:31 -0500 Subject: [PATCH 2/2] Removed .only from test to allow entire test suite to run again. --- .../sections/policy_table/components/table_content.tsx | 4 ++-- .../functional/apps/index_lifecycle_management/home_page.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx index 508e68edb54a0..2c653ee5f76f6 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_table/components/table_content.tsx @@ -184,8 +184,8 @@ export const TableContent: React.FunctionComponent = ({ ); const deletePolicyTooltip = hasLinkedIndices ? i18n.translate('xpack.indexLifecycleMgmt.policyTable.deletePolicyButtonDisabledTooltip', { - defaultMessage: 'You cannot delete a policy that is being used by an index', - }) + defaultMessage: 'You cannot delete a policy that is being used by an index', + }) : null; const items = []; if (hasLinkedIndices) { diff --git a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts index 5a46c50343ff6..44cd2cda7e1af 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts @@ -14,7 +14,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const retry = getService('retry'); const testSubjects = getService('testSubjects'); - describe.only('Home page', function () { + describe('Home page', function () { before(async () => { await pageObjects.common.navigateToApp('indexLifecycleManagement'); });