diff --git a/src/ui/public/directives/saved_object_finder.js b/src/ui/public/directives/saved_object_finder.js index 998a7a3be0611..72d9a9b797c51 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 0000000000000..e7afa7a7d3589 --- /dev/null +++ b/test/functional/apps/visualize/_lab_mode.js @@ -0,0 +1,36 @@ +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'); + 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 d5d3f29f18d7b..758b1c41bf702 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 452479a550f82..c704664ec4a52 100644 --- a/test/functional/page_objects/discover_page.js +++ b/test/functional/page_objects/discover_page.js @@ -53,6 +53,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 edce1bb8435dd..1d8dc25211872 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\']');