-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added functional tests for agg based table (#143290)
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
- Loading branch information
1 parent
bf4f62e
commit c8a2ee2
Showing
5 changed files
with
210 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
190 changes: 190 additions & 0 deletions
190
x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/table.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
/* | ||
* 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, visEditor, lens, timePicker, header } = getPageObjects([ | ||
'visualize', | ||
'lens', | ||
'visEditor', | ||
'timePicker', | ||
'header', | ||
]); | ||
|
||
const testSubjects = getService('testSubjects'); | ||
|
||
describe('Table', function describeIndexTests() { | ||
const isNewChartsLibraryEnabled = true; | ||
|
||
before(async () => { | ||
await visualize.initTests(isNewChartsLibraryEnabled); | ||
}); | ||
|
||
beforeEach(async () => { | ||
await visualize.navigateToNewAggBasedVisualization(); | ||
await visualize.clickDataTable(); | ||
await visualize.clickNewSearch(); | ||
await timePicker.setDefaultAbsoluteRange(); | ||
}); | ||
|
||
it('should not allow converting of unsupported aggregations', async () => { | ||
await visEditor.clickMetricEditor(); | ||
await visEditor.selectAggregation('Serial diff', 'metrics'); | ||
await visEditor.clickBucket('Split rows'); | ||
await visEditor.selectAggregation('Date histogram'); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
const button = await testSubjects.exists('visualizeEditInLensButton'); | ||
expect(button).to.eql(false); | ||
}); | ||
|
||
it('should show the "Edit Visualization in Lens" menu item', async () => { | ||
const button = await testSubjects.exists('visualizeEditInLensButton'); | ||
expect(button).to.eql(true); | ||
}); | ||
|
||
it('should convert aggregation with params', async () => { | ||
await visEditor.clickMetricEditor(); | ||
await visEditor.selectAggregation('Average', 'metrics'); | ||
await visEditor.selectField('machine.ram', 'metrics'); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
|
||
const button = await testSubjects.find('visualizeEditInLensButton'); | ||
await button.click(); | ||
await lens.waitForVisualization('lnsDataTable'); | ||
|
||
expect(await lens.getLayerCount()).to.be(1); | ||
|
||
const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); | ||
expect(dimensions).to.have.length(1); | ||
expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); | ||
}); | ||
|
||
it('should convert total function to summary row', async () => { | ||
await visEditor.clickMetricEditor(); | ||
await visEditor.selectAggregation('Average', 'metrics'); | ||
await visEditor.selectField('machine.ram', 'metrics'); | ||
await visEditor.clickOptionsTab(); | ||
const showTotalSwitch = await testSubjects.find('showTotal'); | ||
await showTotalSwitch.click(); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
|
||
const button = await testSubjects.find('visualizeEditInLensButton'); | ||
await button.click(); | ||
await lens.waitForVisualization('lnsDataTable'); | ||
|
||
expect(await lens.getLayerCount()).to.be(1); | ||
|
||
const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); | ||
expect(dimensions).to.have.length(1); | ||
expect(await dimensions[0].getVisibleText()).to.be('Average machine.ram'); | ||
|
||
await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger'); | ||
const summaryRowFunction = await testSubjects.find('lnsDatatable_summaryrow_function'); | ||
expect(await summaryRowFunction.getVisibleText()).to.be('Sum'); | ||
}); | ||
|
||
it('should convert sibling pipeline aggregation', async () => { | ||
await visEditor.clickMetricEditor(); | ||
await visEditor.selectAggregation('Max Bucket', 'metrics'); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
|
||
const button = await testSubjects.find('visualizeEditInLensButton'); | ||
await button.click(); | ||
await lens.waitForVisualization('lnsDataTable'); | ||
|
||
expect(await lens.getLayerCount()).to.be(1); | ||
|
||
const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); | ||
const splitRowText = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); | ||
|
||
const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); | ||
expect(dimensions).to.have.length(2); | ||
expect(metricText).to.be('Overall Max of Count'); | ||
expect(splitRowText).to.be('@timestamp'); | ||
}); | ||
|
||
it('should convert parent pipeline aggregation', async () => { | ||
await visEditor.clickMetricEditor(); | ||
await visEditor.selectAggregation('Cumulative sum', 'metrics'); | ||
await visEditor.clickBucket('Split rows'); | ||
await visEditor.selectAggregation('Date histogram'); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
|
||
const button = await testSubjects.find('visualizeEditInLensButton'); | ||
await button.click(); | ||
await lens.waitForVisualization('lnsDataTable'); | ||
|
||
expect(await lens.getLayerCount()).to.be(1); | ||
|
||
const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); | ||
const splitRowText = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); | ||
|
||
const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); | ||
expect(dimensions).to.have.length(2); | ||
expect(metricText).to.be('Cumulative Sum of Count'); | ||
expect(splitRowText).to.be('@timestamp'); | ||
}); | ||
|
||
it('should convert split rows and split table to split table rows', async () => { | ||
await visEditor.clickBucket('Split rows'); | ||
await visEditor.selectAggregation('Date histogram'); | ||
await visEditor.clickBucket('Split table'); | ||
await visEditor.selectAggregation('Terms', 'buckets', false, 1); | ||
await visEditor.selectField('bytes', 'buckets', false, 1); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
|
||
const button = await testSubjects.find('visualizeEditInLensButton'); | ||
await button.click(); | ||
await lens.waitForVisualization('lnsDataTable'); | ||
|
||
expect(await lens.getLayerCount()).to.be(1); | ||
|
||
const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); | ||
const splitRowText1 = await lens.getDimensionTriggerText('lnsDatatable_rows', 0); | ||
const splitRowText2 = await lens.getDimensionTriggerText('lnsDatatable_rows', 1); | ||
|
||
const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); | ||
expect(dimensions).to.have.length(3); | ||
expect(metricText).to.be('Count'); | ||
expect(splitRowText1).to.be('@timestamp'); | ||
expect(splitRowText2).to.be('bytes: Descending'); | ||
}); | ||
|
||
it('should convert percentage column', async () => { | ||
await visEditor.clickOptionsTab(); | ||
await visEditor.setSelectByOptionText('datatableVisualizationPercentageCol', 'Count'); | ||
await visEditor.clickGo(); | ||
await header.waitUntilLoadingHasFinished(); | ||
|
||
const button = await testSubjects.find('visualizeEditInLensButton'); | ||
await button.click(); | ||
await lens.waitForVisualization('lnsDataTable'); | ||
|
||
expect(await lens.getLayerCount()).to.be(1); | ||
|
||
const metricText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 0); | ||
const percentageColumnText = await lens.getDimensionTriggerText('lnsDatatable_metrics', 1); | ||
|
||
await lens.openDimensionEditor('lnsDatatable_metrics > lns-dimensionTrigger', 0, 1); | ||
const format = await testSubjects.find('indexPattern-dimension-format'); | ||
expect(await format.getVisibleText()).to.be('Percent'); | ||
|
||
const dimensions = await testSubjects.findAll('lns-dimensionTrigger'); | ||
expect(dimensions).to.have.length(2); | ||
expect(metricText).to.be('Count'); | ||
expect(percentageColumnText).to.be('Count percentages'); | ||
}); | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters