From d7b2e8aab69a5ece5fc27e7a202a3b16b08216ed Mon Sep 17 00:00:00 2001 From: Uladzislau Lasitsa Date: Wed, 12 Oct 2022 14:38:55 +0300 Subject: [PATCH 1/6] Added functional tests for convert to lens top n --- .../lens/group3/open_in_lens/tsvb/index.ts | 1 + .../lens/group3/open_in_lens/tsvb/top_n.ts | 172 ++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/index.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/index.ts index 1093b0e154947..ea859195e6346 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/index.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/index.ts @@ -13,5 +13,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./gauge')); loadTestFile(require.resolve('./timeseries')); loadTestFile(require.resolve('./dashboard')); + loadTestFile(require.resolve('./top_n')); }); } diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts new file mode 100644 index 0000000000000..bcb6678fb4d3b --- /dev/null +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../../ftr_provider_context'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const { visualize, visualBuilder, lens, header } = getPageObjects([ + 'visualBuilder', + 'visualize', + 'header', + 'lens', + ]); + + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + const filterBar = getService('filterBar'); + const queryBar = getService('queryBar'); + + describe('Top N', function describeIndexTests() { + before(async () => { + await visualize.initTests(); + }); + + beforeEach(async () => { + await visualize.navigateToNewVisualization(); + await visualize.clickVisualBuilder(); + await visualBuilder.checkVisualBuilderIsPresent(); + await visualBuilder.resetPage(); + await visualBuilder.clickTopN(); + await visualBuilder.checkTopNTabIsPresent(); + }); + + it('should not allow converting of not valid panel', async () => { + await visualBuilder.selectAggType('Max'); + await header.waitUntilLoadingHasFinished(); + const canEdit = await testSubjects.exists('visualizeEditInLensButton'); + expect(canEdit).to.be(false); + }); + + it('should not allow converting of unsupported aggregations', async () => { + await visualBuilder.selectAggType('Variance'); + await visualBuilder.setFieldForAggregation('machine.ram'); + + await header.waitUntilLoadingHasFinished(); + const canEdit = await testSubjects.exists('visualizeEditInLensButton'); + expect(canEdit).to.be(false); + }); + + it('should hide the "Edit Visualization in Lens" menu item for a sibling pipeline aggregations', async () => { + await visualBuilder.createNewAgg(); + + await visualBuilder.selectAggType('Overall Average', 1); + await visualBuilder.setFieldForAggregation('Count', 1); + await header.waitUntilLoadingHasFinished(); + const canEdit = await testSubjects.exists('visualizeEditInLensButton'); + expect(canEdit).to.be(false); + }); + + it('should hide the "Edit Visualization in Lens" menu item for a parent pipeline aggregations', async () => { + await visualBuilder.clickPanelOptions('topN'); + await visualBuilder.setMetricsDataTimerangeMode('Last value'); + await visualBuilder.clickDataTab('topN'); + await visualBuilder.createNewAgg(); + + await visualBuilder.selectAggType('Cumulative Sum', 1); + await visualBuilder.setFieldForAggregation('Count', 1); + await header.waitUntilLoadingHasFinished(); + const canEdit = await testSubjects.exists('visualizeEditInLensButton'); + expect(canEdit).to.be(false); + }); + + it('should show the "Edit Visualization in Lens" menu item for a count aggregation', async () => { + const canEdit = await testSubjects.exists('visualizeEditInLensButton'); + expect(canEdit).to.be(true); + }); + + it('should convert to horizontal bar', async () => { + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); + const type = await chartSwitcher.getVisibleText(); + expect(type).to.be('Bar horizontal'); + }); + + it('should convert group by to vertical axis', async () => { + await visualBuilder.setMetricsGroupByTerms('extension.raw'); + await header.waitUntilLoadingHasFinished(); + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + + const xDimensionText = await lens.getDimensionTriggerText('lnsXY_xDimensionPanel', 0); + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(xDimensionText).to.be('Top 10 values of extension.raw'); + expect(yDimensionText).to.be('Count of records'); + }); + }); + + it('should convert last value mode to reduced time range', async () => { + await visualBuilder.clickPanelOptions('topN'); + await visualBuilder.setMetricsDataTimerangeMode('Last value'); + await visualBuilder.setIntervalValue('1m'); + await visualBuilder.clickDataTab('topN'); + await header.waitUntilLoadingHasFinished(); + + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count of records last 1m'); + }); + }); + + it('visualizes field to Lens and loads fields to the dimesion editor', async () => { + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Count of records'); + }); + }); + + it('navigates back to TSVB when the Back button is clicked', async () => { + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); + goBackBtn.click(); + await visualBuilder.checkTopNTabIsPresent(); + }); + + it('should preserve app filters in lens', async () => { + await filterBar.addFilter('extension', 'is', 'css'); + await header.waitUntilLoadingHasFinished(); + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + + expect(await filterBar.hasFilter('extension', 'css')).to.be(true); + }); + + it('should preserve query in lens', async () => { + let button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); + goBackBtn.click(); + await visualBuilder.checkTopNTabIsPresent(); + await queryBar.setQuery('machine.os : ios'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + + expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); + }); + }); +} From 41ae8060991dbaa44dcf00de5056977d377b41b5 Mon Sep 17 00:00:00 2001 From: Uladzislau Lasitsa Date: Wed, 12 Oct 2022 14:46:03 +0300 Subject: [PATCH 2/6] Updated tests to check metric with source field --- .../apps/lens/group3/open_in_lens/tsvb/top_n.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts index bcb6678fb4d3b..b69504e8ee428 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts @@ -80,12 +80,21 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should convert to horizontal bar', async () => { + await visualBuilder.selectAggType('Max'); + await visualBuilder.setFieldForAggregation('memory', 0); const button = await testSubjects.find('visualizeEditInLensButton'); await button.click(); await lens.waitForVisualization('xyVisChart'); const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); const type = await chartSwitcher.getVisibleText(); expect(type).to.be('Bar horizontal'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(1); + + const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + expect(yDimensionText).to.be('Maximum of memory'); + }); }); it('should convert group by to vertical axis', async () => { From 783e9a106483ef6b8be82facd6374a169ce46475 Mon Sep 17 00:00:00 2001 From: Uladzislau Lasitsa Date: Wed, 12 Oct 2022 15:13:39 +0300 Subject: [PATCH 3/6] Improved test for last value mode --- .../functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts index b69504e8ee428..dd31015745b94 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts @@ -124,6 +124,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const button = await testSubjects.find('visualizeEditInLensButton'); await button.click(); await lens.waitForVisualization('xyVisChart'); + await lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); + await testSubjects.click('indexPattern-advanced-accordion'); + const reducedTimeRange = await testSubjects.find('indexPattern-dimension-reducedTimeRange'); + expect(await reducedTimeRange.getVisibleText()).to.be('1 minute (1m)'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); expect(layerCount).to.be(1); From 2653e43377db3a2995ac6bb5f155f833c8b70c19 Mon Sep 17 00:00:00 2001 From: Uladzislau Lasitsa Date: Wed, 12 Oct 2022 16:44:32 +0300 Subject: [PATCH 4/6] Added test for static value --- .../lens/group3/open_in_lens/tsvb/top_n.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts index dd31015745b94..430b9355d3a71 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts @@ -136,6 +136,26 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); + it('should convert static value to the separate layer with y dimension', async () => { + await visualBuilder.createNewAggSeries(); + await visualBuilder.selectAggType('Static Value', 1); + await visualBuilder.setStaticValue(10); + + await header.waitUntilLoadingHasFinished(); + + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('xyVisChart'); + await retry.try(async () => { + const layerCount = await lens.getLayerCount(); + expect(layerCount).to.be(2); + const yDimensionText1 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); + const yDimensionText2 = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 1); + expect(yDimensionText1).to.be('Count of records'); + expect(yDimensionText2).to.be('10'); + }); + }); + it('visualizes field to Lens and loads fields to the dimesion editor', async () => { const button = await testSubjects.find('visualizeEditInLensButton'); await button.click(); From 9f58daaf8beb7eb4aedc12af157d2183dcdb629f Mon Sep 17 00:00:00 2001 From: Uladzislau Lasitsa Date: Fri, 14 Oct 2022 12:21:44 +0300 Subject: [PATCH 5/6] Fixed nits --- .../functional/page_objects/visualize_page.ts | 9 ++++ .../group3/open_in_lens/agg_based/gauge.ts | 8 +--- .../group3/open_in_lens/agg_based/goal.ts | 8 +--- .../group3/open_in_lens/agg_based/metric.ts | 8 +--- .../lens/group3/open_in_lens/agg_based/pie.ts | 10 ++--- .../group3/open_in_lens/tsvb/dashboard.ts | 6 +-- .../lens/group3/open_in_lens/tsvb/gauge.ts | 18 +++----- .../lens/group3/open_in_lens/tsvb/metric.ts | 21 +++------ .../group3/open_in_lens/tsvb/timeseries.ts | 35 +++++---------- .../lens/group3/open_in_lens/tsvb/top_n.ts | 45 ++++++------------- 10 files changed, 57 insertions(+), 111 deletions(-) diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 634c9f4bc5005..6dd17c9c13e1c 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -148,6 +148,15 @@ export class VisualizePageObject extends FtrService { await this.waitForVisualizationSelectPage(); } + public async navigateToLensFromAnotherVisulization() { + const button = await this.testSubjects.find('visualizeEditInLensButton'); + await button.click(); + } + + public async hasNavigateToLensButton() { + return await this.testSubjects.exists('visualizeEditInLensButton'); + } + public async hasVisType(type: string) { return await this.testSubjects.exists(`visType-${type}`); } diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/gauge.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/gauge.ts index a5d348b4ed6f5..076be5b663ee3 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/gauge.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/gauge.ts @@ -11,8 +11,6 @@ import { FtrProviderContext } from '../../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const { visualize, lens, timePicker } = getPageObjects(['visualize', 'lens', 'timePicker']); - const testSubjects = getService('testSubjects'); - describe('Gauge', function describeIndexTests() { const isNewChartsLibraryEnabled = true; @@ -28,13 +26,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show the "Edit Visualization in Lens" menu item', async () => { - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(true); + expect(await visualize.hasNavigateToLensButton()).to.eql(true); }); it('should convert to Lens', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('gaugeChart'); }); }); diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/goal.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/goal.ts index 0aa44c8dcd6e9..97083c498a453 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/goal.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/goal.ts @@ -11,8 +11,6 @@ import { FtrProviderContext } from '../../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const { visualize, lens, timePicker } = getPageObjects(['visualize', 'lens', 'timePicker']); - const testSubjects = getService('testSubjects'); - describe('Goal', function describeIndexTests() { const isNewChartsLibraryEnabled = true; @@ -28,13 +26,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show the "Edit Visualization in Lens" menu item', async () => { - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(true); + expect(await visualize.hasNavigateToLensButton()).to.eql(true); }); it('should convert to Lens', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); expect((await lens.getMetricVisualizationData()).length).to.be.equal(1); expect(await lens.getMetricVisualizationData()).to.eql([ diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts index f81f5200e678a..caeeb5c935d85 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts @@ -11,8 +11,6 @@ import { FtrProviderContext } from '../../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const { visualize, lens, timePicker } = getPageObjects(['visualize', 'lens', 'timePicker']); - const testSubjects = getService('testSubjects'); - describe('Metric', function describeIndexTests() { const isNewChartsLibraryEnabled = true; @@ -28,13 +26,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show the "Edit Visualization in Lens" menu item', async () => { - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(true); + expect(await visualize.hasNavigateToLensButton()).to.eql(true); }); it('should convert to Lens', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); expect((await lens.getMetricVisualizationData()).length).to.be.equal(1); expect(await lens.getMetricVisualizationData()).to.eql([ diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/pie.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/pie.ts index 1640a6a14631d..357305c67a69b 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/pie.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/pie.ts @@ -17,7 +17,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'header', ]); - const testSubjects = getService('testSubjects'); const pieChart = getService('pieChart'); describe('Pie', function describeIndexTests() { @@ -35,8 +34,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should hide the "Edit Visualization in Lens" menu item if no split slices were defined', async () => { - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(false); + expect(await visualize.hasNavigateToLensButton()).to.eql(false); }); it('should show the "Edit Visualization in Lens" menu item', async () => { @@ -46,8 +44,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); await visEditor.clickGo(isNewChartsLibraryEnabled); - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(true); + expect(await visualize.hasNavigateToLensButton()).to.eql(true); }); it('should convert to Lens', async () => { @@ -58,8 +55,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); await visEditor.clickGo(isNewChartsLibraryEnabled); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('partitionVisChart'); await pieChart.expectPieChartLabels(expectedTableData, isNewChartsLibraryEnabled); diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/dashboard.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/dashboard.ts index bd74e109326bf..292aaa3a36f05 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/dashboard.ts @@ -45,8 +45,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await panelActions.openContextMenu(); await panelActions.clickEdit(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); @@ -74,8 +73,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await panelActions.openContextMenu(); await panelActions.clickEdit(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('legacyMtrVis'); await retry.try(async () => { const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/gauge.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/gauge.ts index 307847d82f61c..872ce7a58a22c 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/gauge.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/gauge.ts @@ -35,13 +35,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show the "Edit Visualization in Lens" menu item', async () => { - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(true); + expect(await visualize.hasNavigateToLensButton()).to.eql(true); }); it('should convert to Lens', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); const metricData = await lens.getMetricVisualizationData(); @@ -54,8 +52,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { const layers = await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`); @@ -74,15 +71,13 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should not allow converting of not valid panel', async () => { await visualBuilder.selectAggType('Value Count'); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should convert color ranges', async () => { @@ -101,8 +96,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setColorPickerValue('#54A000', 4); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/metric.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/metric.ts index 7a157d569bf0f..794a2be110a32 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/metric.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/metric.ts @@ -34,13 +34,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show the "Edit Visualization in Lens" menu item', async () => { - const button = await testSubjects.exists('visualizeEditInLensButton'); - expect(button).to.eql(true); + expect(await visualize.hasNavigateToLensButton()).to.eql(true); }); it('should convert to Lens', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); const metricData = await lens.getMetricVisualizationData(); @@ -53,8 +51,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -71,8 +68,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -89,15 +85,13 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should not allow converting of not valid panel', async () => { await visualBuilder.selectAggType('Value Count'); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should convert color ranges', async () => { @@ -107,8 +101,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setColorPickerValue('#54B399'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('mtrVis'); await retry.try(async () => { diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/timeseries.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/timeseries.ts index 87f9a196b5fba..8989594536303 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/timeseries.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/timeseries.ts @@ -35,15 +35,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should show the "Edit Visualization in Lens" menu item for a count aggregation', async () => { - const isMenuItemVisible = await find.existsByCssSelector( - '[data-test-subj="visualizeEditInLensButton"]' - ); - expect(isMenuItemVisible).to.be(true); + expect(await visualize.hasNavigateToLensButton()).to.be(true); }); it('visualizes field to Lens and loads fields to the dimesion editor', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); @@ -54,8 +50,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('navigates back to TSVB when the Back button is clicked', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); @@ -70,8 +65,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should preserve app filters in lens', async () => { await filterBar.addFilter('extension', 'is', 'css'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); expect(await filterBar.hasFilter('extension', 'css')).to.be(true); @@ -81,8 +75,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await queryBar.setQuery('machine.os : ios'); await queryBar.submitQuery(); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); @@ -95,8 +88,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const layers = await find.allByCssSelector(`[data-test-subj^="lns-layerPanel-"]`); @@ -121,8 +113,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { expect(await lens.getLayerCount()).to.be(1); @@ -139,8 +130,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should not allow converting of not valid panel', async () => { await visualBuilder.selectAggType('Counter Rate'); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should not allow converting of unsupported aggregations', async () => { @@ -148,8 +138,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setFieldForAggregation('machine.ram'); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should convert parent pipeline aggregation with terms', async () => { @@ -161,8 +150,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setMetricsGroupByTerms('extension.raw'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { @@ -185,8 +173,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setMetricsGroupByTerms('extension.raw'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts index 430b9355d3a71..706ac72b855ad 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts @@ -38,8 +38,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should not allow converting of not valid panel', async () => { await visualBuilder.selectAggType('Max'); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should not allow converting of unsupported aggregations', async () => { @@ -47,8 +46,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.setFieldForAggregation('machine.ram'); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should hide the "Edit Visualization in Lens" menu item for a sibling pipeline aggregations', async () => { @@ -57,8 +55,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.selectAggType('Overall Average', 1); await visualBuilder.setFieldForAggregation('Count', 1); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should hide the "Edit Visualization in Lens" menu item for a parent pipeline aggregations', async () => { @@ -70,20 +67,17 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.selectAggType('Cumulative Sum', 1); await visualBuilder.setFieldForAggregation('Count', 1); await header.waitUntilLoadingHasFinished(); - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(false); + expect(await visualize.hasNavigateToLensButton()).to.be(false); }); it('should show the "Edit Visualization in Lens" menu item for a count aggregation', async () => { - const canEdit = await testSubjects.exists('visualizeEditInLensButton'); - expect(canEdit).to.be(true); + expect(await visualize.hasNavigateToLensButton()).to.be(true); }); it('should convert to horizontal bar', async () => { await visualBuilder.selectAggType('Max'); await visualBuilder.setFieldForAggregation('memory', 0); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); const chartSwitcher = await testSubjects.find('lnsChartSwitchPopover'); const type = await chartSwitcher.getVisibleText(); @@ -100,8 +94,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should convert group by to vertical axis', async () => { await visualBuilder.setMetricsGroupByTerms('extension.raw'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -121,8 +114,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await visualBuilder.clickDataTab('topN'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); await testSubjects.click('indexPattern-advanced-accordion'); @@ -143,8 +135,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const layerCount = await lens.getLayerCount(); @@ -157,8 +148,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('visualizes field to Lens and loads fields to the dimesion editor', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); await retry.try(async () => { const yDimensionText = await lens.getDimensionTriggerText('lnsXY_yDimensionPanel', 0); @@ -167,8 +157,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('navigates back to TSVB when the Back button is clicked', async () => { - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); goBackBtn.click(); @@ -178,25 +167,17 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('should preserve app filters in lens', async () => { await filterBar.addFilter('extension', 'is', 'css'); await header.waitUntilLoadingHasFinished(); - const button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); expect(await filterBar.hasFilter('extension', 'css')).to.be(true); }); it('should preserve query in lens', async () => { - let button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); - await lens.waitForVisualization('xyVisChart'); - const goBackBtn = await testSubjects.find('lnsApp_goBackToAppButton'); - goBackBtn.click(); - await visualBuilder.checkTopNTabIsPresent(); await queryBar.setQuery('machine.os : ios'); await queryBar.submitQuery(); await header.waitUntilLoadingHasFinished(); - button = await testSubjects.find('visualizeEditInLensButton'); - await button.click(); + await visualize.navigateToLensFromAnotherVisulization(); await lens.waitForVisualization('xyVisChart'); expect(await queryBar.getQueryString()).to.equal('machine.os : ios'); From 75cd40b1948fc6753276b87d17a84d2be553fc3e Mon Sep 17 00:00:00 2001 From: Uladzislau Lasitsa Date: Fri, 14 Oct 2022 13:19:08 +0300 Subject: [PATCH 6/6] Updated test --- .../test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts index 706ac72b855ad..0631872fc9bd4 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/tsvb/top_n.ts @@ -42,7 +42,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); it('should not allow converting of unsupported aggregations', async () => { - await visualBuilder.selectAggType('Variance'); + await visualBuilder.selectAggType('Sum of Squares'); await visualBuilder.setFieldForAggregation('machine.ram'); await header.waitUntilLoadingHasFinished();