[8.0] [Dasboard] Update embeddable rendering test for dashboard (#121000) (#121322)

* [Dasboard] Update embeddable rendering test for dashboard (#121000)

* Update embeddable rendering test on dashboard

* Updating dashboard fixture to remove old viz

* Remove deprecated geo map from dashboard tests

Co-authored-by: Poff Poffenberger <bryant.poffenberger@elastic.co>
This commit is contained in:
Kibana Machine 2021-12-16 13:32:27 -05:00 committed by GitHub
parent 030235024e
commit dd2ab00c5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 109 deletions

View file

@ -16,7 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const kibanaServer = getService('kibanaServer');
const PageObjects = getPageObjects(['common', 'dashboard']);
describe('dashboard data-shared attributes', () => {
describe('dashboard options', () => {
let originalTitles: string[] = [];
before(async () => {

View file

@ -24,6 +24,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const kibanaServer = getService('kibanaServer');
const pieChart = getService('pieChart');
const elasticChart = getService('elasticChart');
const security = getService('security');
const dashboardExpect = getService('dashboardExpect');
const dashboardAddPanel = getService('dashboardAddPanel');
@ -32,6 +33,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
'dashboard',
'header',
'visualize',
'visChart',
'discover',
'timePicker',
]);
@ -40,7 +42,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const expectAllDataRenders = async () => {
await pieChart.expectPieSliceCount(16);
await dashboardExpect.metricValuesExist(['7,544']);
await dashboardExpect.seriesElementCount(19);
await dashboardExpect.seriesElementCount(14);
const tsvbGuageExists = await find.existsByCssSelector('.tvbVisHalfGauge');
expect(tsvbGuageExists).to.be(true);
await dashboardExpect.timelionLegendCount(0);
@ -49,9 +51,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await dashboardExpect.goalAndGuageLabelsExist(['62.925%', '55.625%', '11.915 GB']);
await dashboardExpect.dataTableRowCount(5);
await dashboardExpect.tagCloudWithValuesFound(['CN', 'IN', 'US', 'BR', 'ID']);
// TODO add test for 'region map viz'
// TODO add test for 'tsvb gauge' viz
// TODO add test for 'geo map' viz
// This tests the presence of the two input control embeddables
await dashboardExpect.inputControlItemCount(5);
await dashboardExpect.tsvbTableCellCount(20);
@ -59,8 +59,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await dashboardExpect.tsvbTopNValuesExist(['5,734.79', '6,286.675']);
await dashboardExpect.tsvbMetricValuesExist(['210,007,889,606']);
// TODO add test for 'animal sound pie' viz
// This tests the area chart and non timebased line chart points
await dashboardExpect.lineChartPointsCount(5);
// This tests line charts that do not use timeseries data
const dogData = await elasticChart.getChartDebugData('visTypeXyChart', 2);
const pointCount = dogData?.areas?.reduce((acc, a) => {
return acc + a.lines.y1.points.length;
}, 0);
expect(pointCount).to.equal(6);
// TODO add test for 'scripted filter and query' viz
// TODO add test for 'animal weight linked to search' viz
// TODO add test for the last vega viz
@ -71,27 +77,30 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await pieChart.expectPieSliceCount(0);
await dashboardExpect.seriesElementCount(0);
await dashboardExpect.dataTableNoResult();
await dashboardExpect.savedSearchRowCount(0);
await dashboardExpect.savedSearchNoResult();
await dashboardExpect.inputControlItemCount(5);
await dashboardExpect.metricValuesExist(['0']);
await dashboardExpect.markdownWithValuesExists(["I'm a markdown!"]);
// Three instead of 0 because there is a visualization based off a non time based index that
// should still show data.
await dashboardExpect.lineChartPointsCount(3);
const dogData = await elasticChart.getChartDebugData('visTypeXyChart');
const pointCount = dogData?.areas?.reduce((acc, a) => {
return acc + a.lines.y1.points.length;
}, 0);
expect(pointCount).to.equal(6);
await dashboardExpect.timelionLegendCount(0);
const tsvbGuageExists = await find.existsByCssSelector('.tvbVisHalfGauge');
expect(tsvbGuageExists).to.be(true);
await dashboardExpect.tsvbMetricValuesExist(['0']);
await dashboardExpect.tsvbMarkdownWithValuesExists(['Hi Avg last bytes: 0']);
await dashboardExpect.tsvbMetricValuesExist(['-']);
await dashboardExpect.tsvbMarkdownWithValuesExists(['Hi Avg last bytes:']);
await dashboardExpect.tsvbTableCellCount(0);
await dashboardExpect.tsvbTopNValuesExist(['0']);
await dashboardExpect.tsvbTopNValuesExist(['-']);
await dashboardExpect.vegaTextsDoNotExist(['5,000']);
};
// Failing: See https://github.com/elastic/kibana/issues/76245
describe.skip('dashboard embeddable rendering', function describeIndexTests() {
describe('dashboard embeddable rendering', function describeIndexTests() {
before(async () => {
await security.testUser.setRoles(['kibana_admin', 'animals', 'test_logstash_reader']);
await esArchiver.load('test/functional/fixtures/es_archiver/dashboard/current/kibana');
@ -116,6 +125,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
});
it('adding visualizations', async () => {
await elasticChart.setNewChartUiDebugFlag(true);
visNames = await dashboardAddPanel.addEveryVisualization('"Rendering Test"');
await dashboardExpect.visualizationsArePresent(visNames);
@ -123,7 +134,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
visNames.push(await dashboardAddPanel.addVisualization('Filter Bytes Test: vega'));
await PageObjects.header.waitUntilLoadingHasFinished();
await dashboardExpect.visualizationsArePresent(visNames);
expect(visNames.length).to.be.equal(27);
expect(visNames.length).to.be.equal(25);
await PageObjects.dashboard.waitForRenderComplete();
});
@ -134,7 +145,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await dashboardAddPanel.closeAddPanel();
await PageObjects.header.waitUntilLoadingHasFinished();
await dashboardExpect.visualizationsArePresent(visAndSearchNames);
expect(visAndSearchNames.length).to.be.equal(28);
expect(visAndSearchNames.length).to.be.equal(26);
await PageObjects.dashboard.waitForRenderComplete();
await PageObjects.dashboard.saveDashboard('embeddable rendering test', {
@ -159,8 +170,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
});
it('data rendered correctly when dashboard is hard refreshed', async () => {
const currentUrl = await browser.getCurrentUrl();
await browser.get(currentUrl, true);
await browser.refresh();
const alert = await browser.getAlert();
await alert?.accept();
await elasticChart.setNewChartUiDebugFlag(true);
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.dashboard.waitForRenderComplete();
await expectAllDataRenders();

File diff suppressed because one or more lines are too long

View file

@ -32,9 +32,7 @@ export class DashboardExpectService extends FtrService {
async visualizationsArePresent(vizList: string[]) {
this.log.debug('Checking all visualisations are present on dashsboard');
let notLoaded = await this.dashboard.getNotLoadedVisualizations(vizList);
// TODO: Determine issue occasionally preventing 'geo map' from loading
notLoaded = notLoaded.filter((x) => x !== 'Rendering Test: geo map');
const notLoaded = await this.dashboard.getNotLoadedVisualizations(vizList);
expect(notLoaded).to.be.empty();
}
@ -236,6 +234,12 @@ export class DashboardExpectService extends FtrService {
});
}
async savedSearchNoResult() {
const savedSearchTable = await this.testSubjects.find('embeddedSavedSearchDocTable');
const resultStr = await savedSearchTable.getVisibleText();
expect(resultStr).to.be('No results found');
}
async savedSearchRowsExist() {
this.testSubjects.existOrFail('docTableExpandToggleColumn');
}