diff --git a/test/functional/apps/dashboard/_dashboard_save.js b/test/functional/apps/dashboard/_dashboard_save.js index 53dc69fd145c7..2e9469b38e2a1 100644 --- a/test/functional/apps/dashboard/_dashboard_save.js +++ b/test/functional/apps/dashboard/_dashboard_save.js @@ -19,8 +19,7 @@ import expect from 'expect.js'; -export default function ({ getService, getPageObjects }) { - const retry = getService('retry'); +export default function ({ getPageObjects }) { const PageObjects = getPageObjects(['dashboard', 'header']); describe('dashboard save', function describeIndexTests() { @@ -38,15 +37,14 @@ export default function ({ getService, getPageObjects }) { await PageObjects.dashboard.clickNewDashboard(); await PageObjects.dashboard.saveDashboard(dashboardName); - let isWarningDisplayed = await PageObjects.dashboard.isDuplicateTitleWarningDisplayed(); + const isWarningDisplayed = await PageObjects.dashboard.isDuplicateTitleWarningDisplayed(); expect(isWarningDisplayed).to.equal(false); await PageObjects.dashboard.gotoDashboardLandingPage(); await PageObjects.dashboard.clickNewDashboard(); await PageObjects.dashboard.enterDashboardTitleAndClickSave(dashboardName); - isWarningDisplayed = await PageObjects.dashboard.isDuplicateTitleWarningDisplayed(); - expect(isWarningDisplayed).to.equal(true); + await PageObjects.dashboard.expectDuplicateTitleWarningDisplayed(); }); it('does not save on reject confirmation', async function () { @@ -87,10 +85,7 @@ export default function ({ getService, getPageObjects }) { it('Warns you when you Save as New Dashboard, and the title is a duplicate', async function () { await PageObjects.dashboard.switchToEditMode(); await PageObjects.dashboard.enterDashboardTitleAndClickSave(dashboardName, { saveAsNew: true }); - - const isWarningDisplayed = await PageObjects.dashboard.isDuplicateTitleWarningDisplayed(); - expect(isWarningDisplayed).to.equal(true); - + await PageObjects.dashboard.expectDuplicateTitleWarningDisplayed(); await PageObjects.dashboard.cancelSave(); }); @@ -104,13 +99,7 @@ export default function ({ getService, getPageObjects }) { it('Warns when case is different', async function () { await PageObjects.dashboard.switchToEditMode(); await PageObjects.dashboard.enterDashboardTitleAndClickSave(dashboardName.toUpperCase()); - - // We expect isWarningDisplayed to be open, hence the retry if not found. - await retry.try(async () => { - const isWarningDisplayed = await PageObjects.dashboard.isDuplicateTitleWarningDisplayed(); - expect(isWarningDisplayed).to.equal(true); - }); - + await PageObjects.dashboard.expectDuplicateTitleWarningDisplayed(); await PageObjects.dashboard.cancelSave(); }); }); diff --git a/test/functional/apps/dashboard/_dashboard_state.js b/test/functional/apps/dashboard/_dashboard_state.js index cb385a475a886..c3468b2f3f6b8 100644 --- a/test/functional/apps/dashboard/_dashboard_state.js +++ b/test/functional/apps/dashboard/_dashboard_state.js @@ -51,7 +51,7 @@ export default function ({ getService, getPageObjects }) { await dashboardAddPanel.addVisualization(AREA_CHART_VIS_NAME); await PageObjects.dashboard.saveDashboard('Overridden colors'); - + await PageObjects.dashboard.waitForRenderComplete(); await PageObjects.dashboard.switchToEditMode(); await PageObjects.visualize.openLegendOptionColors('Count'); @@ -61,6 +61,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.dashboard.gotoDashboardLandingPage(); await PageObjects.dashboard.loadSavedDashboard('Overridden colors'); + await PageObjects.dashboard.waitForRenderComplete(); const colorChoiceRetained = await PageObjects.visualize.doesSelectedLegendColorExist('#EA6460'); expect(colorChoiceRetained).to.be(true); diff --git a/test/functional/apps/dashboard/_panel_controls.js b/test/functional/apps/dashboard/_panel_controls.js index 20c781e0ac382..dfe2de59655ba 100644 --- a/test/functional/apps/dashboard/_panel_controls.js +++ b/test/functional/apps/dashboard/_panel_controls.js @@ -154,6 +154,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.header.clickDashboard(); await dashboardAddPanel.addSavedSearch('my search'); + await PageObjects.dashboard.waitForRenderComplete(); const panelCount = await PageObjects.dashboard.getPanelCount(); expect(panelCount).to.be(1); diff --git a/test/functional/apps/visualize/_input_control_vis.js b/test/functional/apps/visualize/_input_control_vis.js index bfa1aa8f1088d..d68c18328ef5f 100644 --- a/test/functional/apps/visualize/_input_control_vis.js +++ b/test/functional/apps/visualize/_input_control_vis.js @@ -28,7 +28,8 @@ export default function ({ getService, getPageObjects }) { const FIELD_NAME = 'machine.os.raw'; - describe('input control visualization', () => { + // unskip when https://github.com/elastic/kibana/issues/22233 is fixed + describe.skip('input control visualization', () => { before(async () => { await PageObjects.visualize.navigateToNewVisualization(); diff --git a/test/functional/apps/visualize/_inspector.js b/test/functional/apps/visualize/_inspector.js index 7ddf7d817471d..5f436a247d0b8 100644 --- a/test/functional/apps/visualize/_inspector.js +++ b/test/functional/apps/visualize/_inspector.js @@ -23,7 +23,7 @@ export default function ({ getService, getPageObjects }) { const log = getService('log'); const PageObjects = getPageObjects(['common', 'visualize', 'header']); - describe('visualize app', function describeIndexTests() { + describe('inspector', function describeIndexTests() { before(async function () { const fromTime = '2015-09-19 06:31:44.000'; const toTime = '2015-09-23 18:31:44.000'; @@ -34,7 +34,6 @@ export default function ({ getService, getPageObjects }) { log.debug('Set absolute time range from \"' + fromTime + '\" to \"' + toTime + '\"'); await PageObjects.header.setAbsoluteRange(fromTime, toTime); - await PageObjects.visualize.clickGo(); await PageObjects.header.waitUntilLoadingHasFinished(); }); diff --git a/test/functional/apps/visualize/_linked_saved_searches.js b/test/functional/apps/visualize/_linked_saved_searches.js index 52ce657ee720a..64a5593307db9 100644 --- a/test/functional/apps/visualize/_linked_saved_searches.js +++ b/test/functional/apps/visualize/_linked_saved_searches.js @@ -24,79 +24,76 @@ export default function ({ getService, getPageObjects }) { const retry = getService('retry'); const PageObjects = getPageObjects(['common', 'discover', 'visualize', 'header']); - describe('visualize app', function describeIndexTests() { + describe('linked saved searches', function describeIndexTests() { const fromTime = '2015-09-19 06:31:44.000'; const toTime = '2015-09-23 18:31:44.000'; - describe('linked saved searched', () => { + const savedSearchName = 'vis_saved_search'; - const savedSearchName = 'vis_saved_search'; + before(async () => { + await PageObjects.common.navigateToApp('discover'); + await filterBar.addFilter('extension.raw', 'is', 'jpg'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.discover.saveSearch(savedSearchName); + // TODO: Remove this once https://github.com/elastic/kibana/issues/19750 is properly resolved + await PageObjects.common.sleep(500); + }); - before(async () => { - await PageObjects.common.navigateToApp('discover'); - await filterBar.addFilter('extension.raw', 'is', 'jpg'); - await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.discover.saveSearch(savedSearchName); - // TODO: Remove this once https://github.com/elastic/kibana/issues/19750 is properly resolved - await PageObjects.common.sleep(500); + it('should create a visualization from a saved search', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickDataTable(); + await PageObjects.visualize.clickSavedSearch(savedSearchName); + await PageObjects.header.setAbsoluteRange(fromTime, toTime); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.waitFor('wait for count to equal 9,109', async () => { + const data = await PageObjects.visualize.getTableVisData(); + return data.trim() === '9,109'; }); + }); - it('should create a visualization from a saved search', async () => { - await PageObjects.visualize.navigateToNewVisualization(); - await PageObjects.visualize.clickDataTable(); - await PageObjects.visualize.clickSavedSearch(savedSearchName); - await PageObjects.header.setAbsoluteRange(fromTime, toTime); - await PageObjects.header.waitUntilLoadingHasFinished(); - await retry.waitFor('wait for count to equal 9,109', async () => { - const data = await PageObjects.visualize.getTableVisData(); - return data.trim() === '9,109'; - }); + it('should respect the time filter when linked to a saved search', async () => { + await PageObjects.header.setAbsoluteRange('2015-09-19 06:31:44.000', '2015-09-21 10:00:00.000'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.waitFor('wait for count to equal 3,950', async () => { + const data = await PageObjects.visualize.getTableVisData(); + return data.trim() === '3,950'; }); + }); - it('should respect the time filter when linked to a saved search', async () => { - await PageObjects.header.setAbsoluteRange('2015-09-19 06:31:44.000', '2015-09-21 10:00:00.000'); - await PageObjects.header.waitUntilLoadingHasFinished(); - await retry.waitFor('wait for count to equal 3,950', async () => { - const data = await PageObjects.visualize.getTableVisData(); - return data.trim() === '3,950'; - }); + it('should allow adding filters while having a linked saved search', async () => { + await filterBar.addFilter('bytes', 'is between', '100', '3000'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.waitFor('wait for count to equal 707', async () => { + const data = await PageObjects.visualize.getTableVisData(); + return data.trim() === '707'; }); + }); - it('should allow adding filters while having a linked saved search', async () => { - await filterBar.addFilter('bytes', 'is between', '100', '3000'); - await PageObjects.header.waitUntilLoadingHasFinished(); - await retry.waitFor('wait for count to equal 707', async () => { - const data = await PageObjects.visualize.getTableVisData(); - return data.trim() === '707'; - }); + it('should allow unlinking from a linked search', async () => { + await PageObjects.visualize.clickUnlinkSavedSearch(); + await retry.waitFor('wait for count to equal 707', async () => { + const data = await PageObjects.visualize.getTableVisData(); + return data.trim() === '707'; }); + // The filter on the saved search should now be in the editor + expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(true); - it('should allow unlinking from a linked search', async () => { - await PageObjects.visualize.clickUnlinkSavedSearch(); - await retry.waitFor('wait for count to equal 707', async () => { - const data = await PageObjects.visualize.getTableVisData(); - return data.trim() === '707'; - }); - // The filter on the saved search should now be in the editor - expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(true); - - // Disabling this filter should now result in different values, since - // the visualization should not be linked anymore with the saved search. - await filterBar.toggleFilterEnabled('extension.raw'); - await PageObjects.header.waitUntilLoadingHasFinished(); - await retry.waitFor('wait for count to equal 1,293', async () => { - const unfilteredData = await PageObjects.visualize.getTableVisData(); - return unfilteredData.trim() === '1,293'; - }); + // Disabling this filter should now result in different values, since + // the visualization should not be linked anymore with the saved search. + await filterBar.toggleFilterEnabled('extension.raw'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.waitFor('wait for count to equal 1,293', async () => { + const unfilteredData = await PageObjects.visualize.getTableVisData(); + return unfilteredData.trim() === '1,293'; }); + }); - it('should not break when saving after unlinking', async () => { - await PageObjects.visualize.saveVisualizationExpectSuccess('Unlinked before saved'); - await PageObjects.header.waitUntilLoadingHasFinished(); - await retry.waitFor('wait for count to equal 1,293', async () => { - const data = await PageObjects.visualize.getTableVisData(); - return data.trim() === '1,293'; - }); + it('should not break when saving after unlinking', async () => { + await PageObjects.visualize.saveVisualizationExpectSuccess('Unlinked before saved'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.waitFor('wait for count to equal 1,293', async () => { + const data = await PageObjects.visualize.getTableVisData(); + return data.trim() === '1,293'; }); }); }); diff --git a/test/functional/page_objects/common_page.js b/test/functional/page_objects/common_page.js index f55e26352b99e..9fc708cb34463 100644 --- a/test/functional/page_objects/common_page.js +++ b/test/functional/page_objects/common_page.js @@ -88,6 +88,12 @@ export function CommonPageProvider({ getService, getPageObjects }) { return currentUrl; } + async waitForEuiTableLoading() { + await retry.waitFor('CommonPage.waitForEuiTableLoading', async () => { + const table = await find.byClassName('euiBasicTable'); + return !((await table.getAttribute('class')).includes('loading')); + }); + } navigateToApp(appName) { const self = this; diff --git a/test/functional/page_objects/dashboard_page.js b/test/functional/page_objects/dashboard_page.js index 8e0e7bb0ea4c5..6c9b0e8bf7c9d 100644 --- a/test/functional/page_objects/dashboard_page.js +++ b/test/functional/page_objects/dashboard_page.js @@ -134,16 +134,24 @@ export function DashboardPageProvider({ getService, getPageObjects }) { await find.clickByCssSelector(`a[href="#${DashboardConstants.LANDING_PAGE_PATH}"]`); } + async dashboardBreadcrumbLinkExists() { + log.debug('dashboardBreadcrumbLinkExists'); + return await find.existsByCssSelector(`a[href="#${DashboardConstants.LANDING_PAGE_PATH}"]`); + } + async gotoDashboardLandingPage() { log.debug('gotoDashboardLandingPage'); - const onPage = await this.onDashboardLandingPage(); - if (!onPage) { - await retry.try(async () => { - await this.clickDashboardBreadcrumbLink(); + await retry.try(async () => { + const onPage = await this.onDashboardLandingPage(); + if (!onPage) { + const breadCrumbLinkExists = await this.dashboardBreadcrumbLinkExists(); + if (breadCrumbLinkExists) { + await this.clickDashboardBreadcrumbLink(); + } const onDashboardLandingPage = await this.onDashboardLandingPage(); if (!onDashboardLandingPage) throw new Error('Not on the landing page.'); - }); - } + } + }); } async clickClone() { @@ -169,6 +177,10 @@ export function DashboardPageProvider({ getService, getPageObjects }) { await testSubjects.setValue('clonedDashboardTitle', title); } + async expectDuplicateTitleWarningDisplayed() { + await testSubjects.existOrFail('titleDupicateWarnMsg'); + } + async isDuplicateTitleWarningDisplayed() { return await testSubjects.exists('titleDupicateWarnMsg'); } @@ -197,14 +209,21 @@ export function DashboardPageProvider({ getService, getPageObjects }) { } async clickNewDashboard() { - // newDashboardLink button is only visible when dashboard listing table is displayed (at least one dashboard). - const exists = await testSubjects.exists('newDashboardLink'); - if (exists) { - return await testSubjects.click('newDashboardLink'); - } + await retry.try(async () => { + // newDashboardLink button is only visible when dashboard listing table is displayed (at least one dashboard). + const exists = await testSubjects.exists('newDashboardLink'); + if (exists) { + return await testSubjects.click('newDashboardLink'); + } - // no dashboards exist, click createDashboardPromptButton to create new dashboard - return await this.clickCreateDashboardPrompt(); + const promptExists = await this.getCreateDashboardPromptExists(); + if (promptExists) { + // no dashboards exist, click createDashboardPromptButton to create new dashboard + await this.clickCreateDashboardPrompt(); + } else { + throw new Error('No create button exists in the DOM yet, may still be rendering'); + } + }); } async clickCreateDashboardPrompt() { @@ -303,6 +322,7 @@ export function DashboardPageProvider({ getService, getPageObjects }) { * @param saveOptions {{storeTimeWithDashboard: boolean, saveAsNew: boolean, needsConfirm: false}} */ async saveDashboard(dashName, saveOptions = {}) { + log.debug(`DashboardPage.saveDashboard(${dashName}, ${JSON.stringify(saveOptions)}`); await this.enterDashboardTitleAndClickSave(dashName, saveOptions); if (saveOptions.needsConfirm) { @@ -340,10 +360,8 @@ export function DashboardPageProvider({ getService, getPageObjects }) { } async clickSave() { - await retry.try(async () => { - log.debug('clicking final Save button for named dashboard'); - return await testSubjects.click('confirmSaveDashboardButton'); - }); + log.debug('DashboardPage.clickSave'); + await testSubjects.click('confirmSaveDashboardButton'); } /** @@ -371,6 +389,7 @@ export function DashboardPageProvider({ getService, getPageObjects }) { } async selectDashboard(dashName) { + log.debug(`selectDashboard(${dashName})`); await testSubjects.click(`dashboardListingTitleLink-${dashName.split(' ').join('-')}`); } @@ -405,7 +424,7 @@ export function DashboardPageProvider({ getService, getPageObjects }) { await PageObjects.common.pressEnterKey(); }); - await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.common.waitForEuiTableLoading(); } async getCountOfDashboardsInListingTable() { @@ -425,19 +444,10 @@ export function DashboardPageProvider({ getService, getPageObjects }) { // entry, or at least to a single page of results async loadSavedDashboard(dashName) { log.debug(`Load Saved Dashboard ${dashName}`); - await this.gotoDashboardLandingPage(); - - await retry.try(async () => { - await this.searchForDashboardWithName(dashName); - await this.selectDashboard(dashName); - await PageObjects.header.waitUntilLoadingHasFinished(); - - const onDashboardLandingPage = await this.onDashboardLandingPage(); - if (onDashboardLandingPage) { - throw new Error('Failed to open the dashboard up'); - } - }); + await this.searchForDashboardWithName(dashName); + await this.selectDashboard(dashName); + await PageObjects.header.waitUntilLoadingHasFinished(); } async getPanelTitles() { diff --git a/test/functional/services/dashboard/add_panel.js b/test/functional/services/dashboard/add_panel.js index d6d3ad6dd282f..601fedd486123 100644 --- a/test/functional/services/dashboard/add_panel.js +++ b/test/functional/services/dashboard/add_panel.js @@ -24,7 +24,6 @@ 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,13 +93,6 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) { } } - async waitForEuiTableLoading() { - 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() { log.debug('DashboardAddPanel.closeAddPanel'); const isOpen = await this.isAddPanelOpen(); @@ -179,9 +171,9 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }) { async filterEmbeddableNames(name) { // The search input field may be disabled while the table is loading so wait for it - await this.waitForEuiTableLoading(); + await PageObjects.common.waitForEuiTableLoading(); await testSubjects.setValue('savedObjectFinderSearchInput', name); - await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.common.waitForEuiTableLoading(); } async panelAddLinkExists(name) { diff --git a/test/functional/services/find.js b/test/functional/services/find.js index 59029fc61b3aa..c509056c3a34b 100644 --- a/test/functional/services/find.js +++ b/test/functional/services/find.js @@ -187,12 +187,32 @@ export function FindProvider({ getService }) { return await this.exists(async remote => await remote.findByCssSelector(selector), timeout); } + async clickWhenNotDisabled(element, options = { doubleClick: false }) { + log.debug(`clickWhenNotDisabled`); + // Don't wrap this code in a retry, or stale element checks may get caught here and the element + // will never be re-grabbed. Let errors bubble, but continue checking for disabled property until + // it's gone. + await remote.moveMouseTo(element); + + const clickIfNotDisabled = async (element, resolve) => { + const disabled = await element.getProperty('disabled'); + if (disabled) { + log.debug('Element is disabled, try again'); + setTimeout(() => clickIfNotDisabled(element, resolve), 250); + } else { + options.doubleClick ? await remote.doubleClick() : await element.click(); + resolve(); + } + }; + + await new Promise(resolve => clickIfNotDisabled(element, resolve)); + } + async clickByPartialLinkText(linkText, timeout = defaultFindTimeout) { log.debug(`clickByPartialLinkText(${linkText})`); await retry.try(async () => { const element = await this.byPartialLinkText(linkText, timeout); - await remote.moveMouseTo(element); - await element.click(); + await this.clickWhenNotDisabled(element); }); } @@ -200,8 +220,7 @@ export function FindProvider({ getService }) { log.debug(`clickByLinkText(${linkText})`); await retry.try(async () => { const element = await this.byLinkText(linkText, timeout); - await remote.moveMouseTo(element); - await element.click(); + await this.clickWhenNotDisabled(element); }); } @@ -224,7 +243,7 @@ export function FindProvider({ getService }) { log.debug(`clickByButtonText(${buttonText})`); await retry.try(async () => { const button = await this.byButtonText(buttonText, element, timeout); - await button.click(); + await this.clickWhenNotDisabled(button); }); } @@ -232,23 +251,29 @@ export function FindProvider({ getService }) { log.debug(`clickByCssSelector(${selector})`); await retry.try(async () => { const element = await this.byCssSelector(selector, timeout); - await remote.moveMouseTo(element); - await element.click(); + await this.clickWhenNotDisabled(element); }); } + + async doubleClickByCssSelector(selector, timeout = defaultFindTimeout) { + log.debug(`clickByCssSelector(${selector})`); + await retry.try(async () => { + const element = await this.byCssSelector(selector, timeout); + await this.clickWhenNotDisabled(element, { doubleClick: true }); + }); + } + async clickByDisplayedLinkText(linkText, timeout = defaultFindTimeout) { log.debug(`clickByDisplayedLinkText(${linkText})`); await retry.try(async () => { const element = await this.findDisplayedByLinkText(linkText, timeout); - await remote.moveMouseTo(element); - await element.click(); + await this.clickWhenNotDisabled(element); }); } async clickDisplayedByCssSelector(selector, timeout = defaultFindTimeout) { await retry.try(async () => { const element = await this.findDisplayedByCssSelector(selector, timeout); - await remote.moveMouseTo(element); - await element.click(); + await this.clickWhenNotDisabled(element); }); } } diff --git a/test/functional/services/test_subjects.js b/test/functional/services/test_subjects.js index 36d17159ae0b8..8e78abac855b3 100644 --- a/test/functional/services/test_subjects.js +++ b/test/functional/services/test_subjects.js @@ -65,23 +65,14 @@ export function TestSubjectsProvider({ getService }) { async click(selector, timeout = defaultFindTimeout) { log.debug(`TestSubjects.click(${selector})`); - return await retry.try(async () => { - const element = await this.find(selector, timeout); - await remote.moveMouseTo(element); - await element.click(); - }); + await find.clickByCssSelector(testSubjSelector(selector), timeout); } async doubleClick(selector, timeout = defaultFindTimeout) { log.debug(`TestSubjects.doubleClick(${selector})`); - return await retry.try(async () => { - const element = await this.find(selector, timeout); - await remote.moveMouseTo(element); - await remote.doubleClick(); - }); + await find.doubleClickByCssSelector(testSubjSelector(selector), timeout); } - async descendantExists(selector, parentElement) { return await find.descendantExistsByCssSelector(testSubjSelector(selector), parentElement); } diff --git a/x-pack/test/functional/apps/security/rbac_phase1.js b/x-pack/test/functional/apps/security/rbac_phase1.js index ddab249003b5b..d3027b4f18e9d 100644 --- a/x-pack/test/functional/apps/security/rbac_phase1.js +++ b/x-pack/test/functional/apps/security/rbac_phase1.js @@ -90,7 +90,6 @@ export default function ({ getService, getPageObjects }) { await PageObjects.visualize.clickNewSearch(); log.debug('Set absolute time range from \"' + fromTime + '\" to \"' + toTime + '\"'); await PageObjects.header.setAbsoluteRange(fromTime, toTime); - await PageObjects.visualize.clickGo(); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.visualize.waitForVisualization(); await PageObjects.visualize.saveVisualizationExpectSuccess(vizName1); @@ -112,7 +111,6 @@ export default function ({ getService, getPageObjects }) { await PageObjects.visualize.clickNewSearch(); log.debug('Set absolute time range from \"' + fromTime + '\" to \"' + toTime + '\"'); await PageObjects.header.setAbsoluteRange(fromTime, toTime); - await PageObjects.visualize.clickGo(); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.visualize.waitForVisualization(); await PageObjects.visualize.saveVisualizationExpectFail(vizName1);