diff --git a/src/ui/public/directives/saved_object_finder.js b/src/ui/public/directives/saved_object_finder.js index 998a7a3be061..72d9a9b797c5 100644 --- a/src/ui/public/directives/saved_object_finder.js +++ b/src/ui/public/directives/saved_object_finder.js @@ -267,7 +267,7 @@ module.directive('savedObjectFinder', function ($location, $injector, kbnUrl, Pr self.service.find(filter) .then(function (hits) { - hits.hits = hits.hits.filter((hit) => (isLabsEnabled || hit.type.stage !== 'lab')); + hits.hits = hits.hits.filter((hit) => (isLabsEnabled || _.get(hit, 'type.stage') !== 'lab')); hits.total = hits.hits.length; // ensure that we don't display old results diff --git a/test/functional/apps/visualize/_lab_mode.js b/test/functional/apps/visualize/_lab_mode.js new file mode 100644 index 000000000000..1eb6ce8b41a5 --- /dev/null +++ b/test/functional/apps/visualize/_lab_mode.js @@ -0,0 +1,37 @@ +import expect from 'expect.js'; + +export default function ({ getService, getPageObjects }) { + const log = getService('log'); + const PageObjects = getPageObjects(['common', 'header', 'discover', 'settings']); + + describe('visualize lab mode', () => { + + it('disabling does not break loading saved searches', async () => { + await PageObjects.common.navigateToUrl('discover', ''); + await PageObjects.discover.saveSearch('visualize_lab_mode_test'); + await PageObjects.header.waitUntilLoadingHasFinished(); + const hasSaved = await PageObjects.discover.hasSavedSearch('visualize_lab_mode_test'); + expect(hasSaved).to.be(true); + + log.info('found saved search before toggling enableLabs mode'); + + // Navigate to advanced setting and disable lab mode + await PageObjects.header.clickManagement(); + await PageObjects.settings.clickKibanaSettings(); + await PageObjects.settings.toggleAdvancedSettingCheckbox('visualize:enableLabs'); + + // Expect the discover still to list that saved visualization in the open list + await PageObjects.header.clickDiscover(); + const stillHasSaved = await PageObjects.discover.hasSavedSearch('visualize_lab_mode_test'); + expect(stillHasSaved).to.be(true); + log.info('found saved search after toggling enableLabs mode'); + }); + + after(async () => { + await PageObjects.header.clickManagement(); + await PageObjects.settings.clickKibanaSettings(); + await PageObjects.settings.clearAdvancedSettings('visualize:enableLabs'); + }); + + }); +} diff --git a/test/functional/apps/visualize/index.js b/test/functional/apps/visualize/index.js index d5d3f29f18d7..758b1c41bf70 100644 --- a/test/functional/apps/visualize/index.js +++ b/test/functional/apps/visualize/index.js @@ -33,5 +33,6 @@ export default function ({ getService, loadTestFile }) { loadTestFile(require.resolve('./_input_control_vis')); loadTestFile(require.resolve('./_histogram_request_start')); loadTestFile(require.resolve('./_vega_chart')); + loadTestFile(require.resolve('./_lab_mode')); }); } diff --git a/test/functional/page_objects/discover_page.js b/test/functional/page_objects/discover_page.js index 33bc5de18311..547f2b34923b 100644 --- a/test/functional/page_objects/discover_page.js +++ b/test/functional/page_objects/discover_page.js @@ -50,6 +50,13 @@ export function DiscoverPageProvider({ getService, getPageObjects }) { return await Promise.all(headerElements.map(el => el.getVisibleText())); } + async hasSavedSearch(searchName) { + await this.clickLoadSavedSearchButton(); + await PageObjects.header.waitUntilLoadingHasFinished(); + const searchLink = await find.byPartialLinkText(searchName); + return searchLink.isDisplayed(); + } + async loadSavedSearch(searchName) { await this.clickLoadSavedSearchButton(); const searchLink = await find.byPartialLinkText(searchName); diff --git a/test/functional/page_objects/header_page.js b/test/functional/page_objects/header_page.js index edce1bb8435d..1d8dc2521187 100644 --- a/test/functional/page_objects/header_page.js +++ b/test/functional/page_objects/header_page.js @@ -37,6 +37,12 @@ export function HeaderPageProvider({ getService, getPageObjects }) { await this.isGlobalLoadingIndicatorHidden(); } + async clickManagement() { + log.debug('click Management tab'); + await this.clickSelector('a[href*=\'management\']'); + await this.isGlobalLoadingIndicatorHidden(); + } + async clickSettings() { log.debug('click Settings tab'); await this.clickSelector('a[href*=\'settings\']');