Skip to content

Commit d55b596

Browse files
author
Maja Grubic
committed
[Search Embeddable] Add highlighting when searching (#93178)
* [Search Embeddable] Add highlighting when searching * Adding a functional test
1 parent 2519f56 commit d55b596

3 files changed

Lines changed: 69 additions & 0 deletions

File tree

src/plugins/discover/public/application/embeddable/search_embeddable.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,11 @@ export class SearchEmbeddable
389389
if (forceFetch || isFetchRequired) {
390390
this.filtersSearchSource!.setField('filter', this.input.filters);
391391
this.filtersSearchSource!.setField('query', this.input.query);
392+
if (this.input.query?.query || this.input.filters?.length) {
393+
this.filtersSearchSource!.setField('highlightAll', true);
394+
} else {
395+
this.filtersSearchSource!.removeField('highlightAll');
396+
}
392397

393398
this.prevFilters = this.input.filters;
394399
this.prevQuery = this.input.query;

test/functional/apps/dashboard/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
5757
loadTestFile(require.resolve('./dashboard_back_button'));
5858
loadTestFile(require.resolve('./dashboard_error_handling'));
5959
loadTestFile(require.resolve('./legacy_urls'));
60+
loadTestFile(require.resolve('./saved_search_embeddable'));
6061

6162
// Note: This one must be last because it unloads some data for one of its tests!
6263
// No, this isn't ideal, but loading/unloading takes so much time and these are all bunched
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
5+
* in compliance with, at your election, the Elastic License 2.0 or the Server
6+
* Side Public License, v 1.
7+
*/
8+
9+
import expect from '@kbn/expect';
10+
import { FtrProviderContext } from '../../ftr_provider_context';
11+
12+
export default function ({ getService, getPageObjects }: FtrProviderContext) {
13+
const dashboardAddPanel = getService('dashboardAddPanel');
14+
const filterBar = getService('filterBar');
15+
const find = getService('find');
16+
const esArchiver = getService('esArchiver');
17+
const kibanaServer = getService('kibanaServer');
18+
const PageObjects = getPageObjects(['common', 'dashboard', 'header', 'timePicker', 'discover']);
19+
20+
describe('dashboard saved search embeddable', () => {
21+
before(async () => {
22+
await esArchiver.loadIfNeeded('logstash_functional');
23+
await esArchiver.loadIfNeeded('dashboard/current/data');
24+
await esArchiver.loadIfNeeded('dashboard/current/kibana');
25+
await kibanaServer.uiSettings.replace({
26+
defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c',
27+
});
28+
await PageObjects.common.navigateToApp('dashboard');
29+
await filterBar.ensureFieldEditorModalIsClosed();
30+
await PageObjects.dashboard.gotoDashboardLandingPage();
31+
await PageObjects.dashboard.clickNewDashboard();
32+
await PageObjects.timePicker.setAbsoluteRange(
33+
'Sep 22, 2015 @ 00:00:00.000',
34+
'Sep 23, 2015 @ 00:00:00.000'
35+
);
36+
});
37+
38+
it('highlighting on filtering works', async function () {
39+
await dashboardAddPanel.addSavedSearch('Rendering-Test:-saved-search');
40+
await filterBar.addFilter('agent', 'is', 'Mozilla');
41+
await PageObjects.header.waitUntilLoadingHasFinished();
42+
await PageObjects.dashboard.waitForRenderComplete();
43+
const dataTable = await find.byCssSelector(`[data-test-subj="embeddedSavedSearchDocTable"]`);
44+
const $ = await dataTable.parseDomContent();
45+
const marks = $('mark')
46+
.toArray()
47+
.map((mark) => $(mark).text());
48+
expect(marks.length).to.be(50);
49+
});
50+
51+
it('removing a filter removes highlights', async function () {
52+
await filterBar.removeAllFilters();
53+
await PageObjects.header.waitUntilLoadingHasFinished();
54+
await PageObjects.dashboard.waitForRenderComplete();
55+
const dataTable = await find.byCssSelector(`[data-test-subj="embeddedSavedSearchDocTable"]`);
56+
const $ = await dataTable.parseDomContent();
57+
const marks = $('mark')
58+
.toArray()
59+
.map((mark) => $(mark).text());
60+
expect(marks.length).to.be(0);
61+
});
62+
});
63+
}

0 commit comments

Comments
 (0)