forked from elastic/kibana
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Saved Search] [Embeddable] Fix issue where Dashboard panel targeting…
… deleted saved search can't be removed (elastic#169896) ## Summary This PR fixes an issue where an undefined reference error makes it so that Dashboard panels targeting deleted saved searches cannot be removed. The bug was likely introduced in 8.10 with embeddable changes in elastic#146849. Fixes elastic#169829. ### Checklist - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- Loading branch information
1 parent
bb3673f
commit 8c93e5c
Showing
7 changed files
with
122 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
109 changes: 109 additions & 0 deletions
109
x-pack/test/functional/apps/discover/saved_search_embeddable.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
|
||
import expect from '@kbn/expect'; | ||
import { FtrProviderContext } from '../../ftr_provider_context'; | ||
|
||
export default function ({ getService, getPageObjects }: FtrProviderContext) { | ||
const browser = getService('browser'); | ||
const dataGrid = getService('dataGrid'); | ||
const dashboardAddPanel = getService('dashboardAddPanel'); | ||
const dashboardPanelActions = getService('dashboardPanelActions'); | ||
const filterBar = getService('filterBar'); | ||
const esArchiver = getService('esArchiver'); | ||
const kibanaServer = getService('kibanaServer'); | ||
const testSubjects = getService('testSubjects'); | ||
const PageObjects = getPageObjects(['common', 'dashboard', 'header', 'timePicker', 'discover']); | ||
|
||
describe('discover saved search embeddable', () => { | ||
before(async () => { | ||
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); | ||
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/dashboard/current/data'); | ||
await kibanaServer.savedObjects.cleanStandardList(); | ||
await kibanaServer.importExport.load( | ||
'test/functional/fixtures/kbn_archiver/dashboard/current/kibana' | ||
); | ||
await kibanaServer.uiSettings.replace({ | ||
defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', | ||
}); | ||
await PageObjects.common.setTime({ | ||
from: 'Sep 22, 2015 @ 00:00:00.000', | ||
to: 'Sep 23, 2015 @ 00:00:00.000', | ||
}); | ||
}); | ||
|
||
after(async () => { | ||
await kibanaServer.savedObjects.cleanStandardList(); | ||
await PageObjects.common.unsetTime(); | ||
}); | ||
|
||
beforeEach(async () => { | ||
await PageObjects.dashboard.navigateToApp(); | ||
await filterBar.ensureFieldEditorModalIsClosed(); | ||
await PageObjects.dashboard.gotoDashboardLandingPage(); | ||
await PageObjects.dashboard.clickNewDashboard(); | ||
}); | ||
|
||
const addSearchEmbeddableToDashboard = async (title = 'Rendering-Test:-saved-search') => { | ||
await dashboardAddPanel.addSavedSearch(title); | ||
await PageObjects.header.waitUntilLoadingHasFinished(); | ||
await PageObjects.dashboard.waitForRenderComplete(); | ||
const rows = await dataGrid.getDocTableRows(); | ||
expect(rows.length).to.be.above(0); | ||
}; | ||
|
||
const refreshDashboardPage = async (requireRenderComplete = false) => { | ||
await browser.refresh(); | ||
await PageObjects.header.waitUntilLoadingHasFinished(); | ||
if (requireRenderComplete) { | ||
await PageObjects.dashboard.waitForRenderComplete(); | ||
} | ||
}; | ||
|
||
it('should allow removing the dashboard panel after the underlying saved search has been deleted', async () => { | ||
const searchTitle = 'TempSearch'; | ||
const searchId = '90943e30-9a47-11e8-b64d-95841ca0b247'; | ||
await kibanaServer.savedObjects.create({ | ||
type: 'search', | ||
id: searchId, | ||
overwrite: false, | ||
attributes: { | ||
title: searchTitle, | ||
description: '', | ||
columns: ['agent', 'bytes', 'clientip'], | ||
sort: [['@timestamp', 'desc']], | ||
kibanaSavedObjectMeta: { | ||
searchSourceJSON: | ||
'{"highlightAll":true,"version":true,"query":{"language":"lucene","query":""},"filter":[],"indexRefName":"kibanaSavedObjectMeta.searchSourceJSON.index"}', | ||
}, | ||
}, | ||
references: [ | ||
{ | ||
id: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', | ||
name: 'kibanaSavedObjectMeta.searchSourceJSON.index', | ||
type: 'index-pattern', | ||
}, | ||
], | ||
}); | ||
await addSearchEmbeddableToDashboard(searchTitle); | ||
await PageObjects.dashboard.saveDashboard('Dashboard with deleted saved search', { | ||
waitDialogIsClosed: true, | ||
exitFromEditMode: false, | ||
}); | ||
await kibanaServer.savedObjects.delete({ | ||
type: 'search', | ||
id: searchId, | ||
}); | ||
await refreshDashboardPage(); | ||
await testSubjects.existOrFail('embeddableError'); | ||
const panels = await PageObjects.dashboard.getDashboardPanels(); | ||
await dashboardPanelActions.removePanel(panels[0]); | ||
await PageObjects.header.waitUntilLoadingHasFinished(); | ||
await testSubjects.missingOrFail('embeddableError'); | ||
}); | ||
}); | ||
} |