diff --git a/test/functional/services/dashboard/add_panel.js b/test/functional/services/dashboard/add_panel.js index 4d11f805edf2a0..d6d3ad6dd282f7 100644 --- a/test/functional/services/dashboard/add_panel.js +++ b/test/functional/services/dashboard/add_panel.js @@ -24,6 +24,7 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) { const testSubjects = getService('testSubjects'); const flyout = getService('flyout'); const PageObjects = getPageObjects(['header', 'common']); + const find = getService('find'); return new class DashboardAddPanel { async clickOpenAddPanel() { @@ -94,8 +95,10 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) { } async waitForEuiTableLoading() { - const addPanel = await testSubjects.find('dashboardAddPanel'); - await addPanel.waitForDeletedByClassName('euiBasicTable-loading'); + await retry.waitFor('dashboard add panel loading to complete', async () => { + const table = await find.byClassName('euiBasicTable'); + return !((await table.getAttribute('class')).includes('loading')); + }); } async closeAddPanel() { @@ -169,8 +172,6 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) { async addVisualization(vizName) { log.debug(`DashboardAddPanel.addVisualization(${vizName})`); await this.ensureAddPanelIsShowing(); - // workaround for timing issue with slideout animation - await PageObjects.common.sleep(500); await this.filterEmbeddableNames(`"${vizName.replace('-', ' ')}"`); await testSubjects.click(`addPanel${vizName.split(' ').join('-')}`); await this.closeAddPanel(); diff --git a/test/functional/services/find.js b/test/functional/services/find.js index f6d008cc384801..59029fc61b3aa6 100644 --- a/test/functional/services/find.js +++ b/test/functional/services/find.js @@ -72,6 +72,13 @@ export function FindProvider({ getService }) { }); } + async byClassName(selector, timeout = defaultFindTimeout) { + log.debug(`findByCssSelector ${selector}`); + return await this._ensureElementWithTimeout(timeout, async remote => { + return await remote.findByClassName(selector); + }); + } + async setValue(selector, text) { return await retry.try(async () => { const element = await this.byCssSelector(selector);