[7.0] Stabilize dashboard render and filtering tests (#30419) (#30901)

Backports the following commits to 7.0:
 - Stabilize dashboard render and filtering tests   (#30419)
This commit is contained in:
Stacey Gammon 2019-02-12 20:18:58 -05:00 committed by Spencer
parent 6633091a8b
commit 6c920912c8
5 changed files with 16 additions and 11 deletions

View file

@ -79,7 +79,7 @@ export const schema = Joi.object().keys({
timeouts: Joi.object().keys({
find: Joi.number().default(10000),
try: Joi.number().default(40000),
try: Joi.number().default(120000),
waitFor: Joi.number().default(20000),
esRequestTimeout: Joi.number().default(30000),
kibanaStabilize: Joi.number().default(15000),

View file

@ -181,7 +181,7 @@ export default function ({ getService, getPageObjects }) {
await pieChart.expectPieSliceCount(5);
});
it.skip('area, bar and heatmap charts', async () => {
it('area, bar and heatmap charts', async () => {
await dashboardExpect.seriesElementCount(3);
});

View file

@ -90,9 +90,7 @@ export default function ({ getService, getPageObjects }) {
await dashboardExpect.vegaTextsDoNotExist(['5,000']);
};
// FLAKY: https://github.com/elastic/kibana/issues/28818
describe.skip('dashboard embeddable rendering', function describeIndexTests() {
describe('dashboard embeddable rendering', function describeIndexTests() {
before(async () => {
await PageObjects.dashboard.clickNewDashboard();
@ -115,18 +113,16 @@ export default function ({ getService, getPageObjects }) {
await dashboardAddPanel.addVisualization('Filter Bytes Test: vega');
await PageObjects.header.waitUntilLoadingHasFinished();
await dashboardExpect.panelCount(27);
await PageObjects.dashboard.waitForRenderComplete();
const panelCount = await PageObjects.dashboard.getPanelCount();
expect(panelCount).to.be(27);
});
it('adding saved searches', async () => {
await dashboardAddPanel.addEverySavedSearch('"Rendering Test"');
await dashboardAddPanel.closeAddPanel();
await PageObjects.header.waitUntilLoadingHasFinished();
await dashboardExpect.panelCount(28);
await PageObjects.dashboard.waitForRenderComplete();
const panelCount = await PageObjects.dashboard.getPanelCount();
expect(panelCount).to.be(28);
await PageObjects.dashboard.saveDashboard('embeddable rendering test', { storeTimeWithDashboard: true });
});

View file

@ -46,6 +46,7 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) {
const embeddableRows = await addPanel.findAllByClassName('euiLink');
for (let i = 0; i < embeddableRows.length; i++) {
await embeddableRows[i].click();
await PageObjects.common.closeToast();
}
log.debug(`Added ${embeddableRows.length} embeddables`);
}
@ -171,7 +172,7 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) {
// The search input field may be disabled while the table is loading so wait for it
await this.waitForEuiTableLoading();
await testSubjects.setValue('savedObjectFinderSearchInput', name);
await PageObjects.header.waitUntilLoadingHasFinished();
await this.waitForEuiTableLoading();
}
async panelAddLinkExists(name) {

View file

@ -18,6 +18,7 @@
*/
const RENDER_COMPLETE_SELECTOR = '[data-render-complete="true"]';
const RENDER_COMPLETE_PENDING_SELECTOR = '[data-render-complete="false"]';
const DATA_LOADING_SELECTOR = '[data-loading]';
export function RenderableProvider({ getService }) {
@ -39,7 +40,14 @@ export function RenderableProvider({ getService }) {
await retry.try(async () => {
const completedElements = await find.allByCssSelector(RENDER_COMPLETE_SELECTOR);
if (completedElements.length < count) {
throw new Error(`${completedElements.length} elements completed rendering, waiting on a total of ${count}`);
const pendingElements = await find.allByCssSelector(RENDER_COMPLETE_PENDING_SELECTOR);
const pendingElementNames = [];
for (const pendingElement of pendingElements) {
const title = await pendingElement.getAttribute('data-title');
pendingElementNames.push(title);
}
throw new Error(`${completedElements.length} elements completed rendering, still waiting on a total of ${count}
specifically:\n${pendingElementNames.join('\n')}`);
}
const stillLoadingElements = await find.allByCssSelector(DATA_LOADING_SELECTOR, 1000);