From a4997bf19cdc55f7efc09e4d96cbbdff91ae0048 Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Wed, 24 Feb 2021 02:44:32 -0500 Subject: [PATCH 1/2] Added A11y test for ILM new policy form. --- .../apps/index_lifecycle_management.ts | 30 +++++++++++++++- .../index_lifecycle_management_page.ts | 36 +++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/x-pack/test/accessibility/apps/index_lifecycle_management.ts b/x-pack/test/accessibility/apps/index_lifecycle_management.ts index 43fd805a42d37..e162752ffe183 100644 --- a/x-pack/test/accessibility/apps/index_lifecycle_management.ts +++ b/x-pack/test/accessibility/apps/index_lifecycle_management.ts @@ -28,7 +28,10 @@ const TEST_POLICY_ALL_PHASES = { }; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const { common } = getPageObjects(['common']); + const { common, indexLifecycleManagement } = getPageObjects([ + 'common', + 'indexLifecycleManagement', + ]); const retry = getService('retry'); const testSubjects = getService('testSubjects'); const esClient = getService('es'); @@ -55,6 +58,31 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await esClient.ilm.deleteLifecycle({ policy: TEST_POLICY_NAME }); }); + it('Create policy Wizard', async () => { + await retry.waitFor('Index Lifecycle Policy create/edit view to be present', async () => { + return testSubjects.isDisplayed('createPolicyButton'); + }); + + // Navigate to create policy page and take snapshot + await testSubjects.click('createPolicyButton'); + await retry.waitFor('Index Lifecycle Policy create/edit view to be present', async () => { + return (await testSubjects.getVisibleText('policyTitle')) === 'Create policy'; + }); + await a11y.testAppSnapshot(); + + // Fill out form after enabling all phases and take snapshot. + await indexLifecycleManagement.fillNewPolicyForm('testPolicy', true, true, true); + await a11y.testAppSnapshot(); + + // Take snapshot of the show request panel + await testSubjects.click('requestButton'); + await a11y.testAppSnapshot(); + + // Close panel and save policy + await testSubjects.click('euiFlyoutCloseButton'); + await indexLifecycleManagement.saveNewPolicy(); + }); + it('List policies view', async () => { await retry.waitFor('Index Lifecycle Policy create/edit view to be present', async () => { await common.navigateToApp('indexLifecycleManagement'); 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 04db9e4544c9a..bc744785bcd21 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 @@ -9,6 +9,7 @@ import { FtrProviderContext } from '../ftr_provider_context'; export function IndexLifecycleManagementPageProvider({ getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); + const retry = getService('retry'); return { async sectionHeadingText() { @@ -17,5 +18,40 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider async createPolicyButton() { return await testSubjects.find('createPolicyButton'); }, + async fillNewPolicyForm( + policyName: string, + warmEnabled: boolean, + coldEnabled: boolean, + deletePhaseEnabled: boolean + ) { + await testSubjects.setValue('policyNameField', policyName); + if (warmEnabled) { + await retry.try(async () => { + await testSubjects.click('enablePhaseSwitch-warm'); + }); + } + if (coldEnabled) { + await retry.try(async () => { + await testSubjects.click('enablePhaseSwitch-cold'); + }); + } + if (deletePhaseEnabled) { + await retry.try(async () => { + await testSubjects.click('enableDeletePhaseButton'); + }); + } + }, + async saveNewPolicy() { + await testSubjects.click('savePolicyButton'); + }, + async createNewPolicyAndSave( + policyName: string, + warmEnabled: boolean, + coldEnabled: boolean, + deletePhaseEnabled: boolean + ) { + await this.fillNewPolicyForm(policyName, warmEnabled, coldEnabled, deletePhaseEnabled); + await this.saveNewPolicy(); + }, }; } From 1a86d0a22d1402ab0df675ad999b9e84c6d75215 Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Wed, 24 Feb 2021 16:34:36 -0500 Subject: [PATCH 2/2] Separated out the takeSnapshot calls to separate tests. --- .../accessibility/apps/index_lifecycle_management.ts | 7 ++++--- .../page_objects/index_lifecycle_management_page.ts | 12 ++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/x-pack/test/accessibility/apps/index_lifecycle_management.ts b/x-pack/test/accessibility/apps/index_lifecycle_management.ts index e162752ffe183..d6ba222e50eb4 100644 --- a/x-pack/test/accessibility/apps/index_lifecycle_management.ts +++ b/x-pack/test/accessibility/apps/index_lifecycle_management.ts @@ -58,7 +58,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await esClient.ilm.deleteLifecycle({ policy: TEST_POLICY_NAME }); }); - it('Create policy Wizard', async () => { + it('Create Policy Form', async () => { await retry.waitFor('Index Lifecycle Policy create/edit view to be present', async () => { return testSubjects.isDisplayed('createPolicyButton'); }); @@ -68,12 +68,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.waitFor('Index Lifecycle Policy create/edit view to be present', async () => { return (await testSubjects.getVisibleText('policyTitle')) === 'Create policy'; }); - await a11y.testAppSnapshot(); // Fill out form after enabling all phases and take snapshot. - await indexLifecycleManagement.fillNewPolicyForm('testPolicy', true, true, true); + await indexLifecycleManagement.fillNewPolicyForm('testPolicy', true, true, false); await a11y.testAppSnapshot(); + }); + it('Send Request Flyout on New Policy Page', async () => { // Take snapshot of the show request panel await testSubjects.click('requestButton'); await a11y.testAppSnapshot(); 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 bc744785bcd21..ddf46926f122a 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 @@ -20,9 +20,9 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider }, async fillNewPolicyForm( policyName: string, - warmEnabled: boolean, - coldEnabled: boolean, - deletePhaseEnabled: boolean + warmEnabled: boolean = false, + coldEnabled: boolean = false, + deletePhaseEnabled: boolean = false ) { await testSubjects.setValue('policyNameField', policyName); if (warmEnabled) { @@ -46,9 +46,9 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider }, async createNewPolicyAndSave( policyName: string, - warmEnabled: boolean, - coldEnabled: boolean, - deletePhaseEnabled: boolean + warmEnabled: boolean = false, + coldEnabled: boolean = false, + deletePhaseEnabled: boolean = false ) { await this.fillNewPolicyForm(policyName, warmEnabled, coldEnabled, deletePhaseEnabled); await this.saveNewPolicy();