Skip to content

Commit 386c7b5

Browse files
[Observability] landing page always being displayed (#71494)
* hides overview item when no other obs plugin is available. * reverting tests changes * reverting tests changes * adding overview to observability tests
1 parent c19cac7 commit 386c7b5

File tree

17 files changed

+104
-32
lines changed

17 files changed

+104
-32
lines changed

x-pack/plugins/observability/public/data_handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ export function getDataHandler<T extends ObservabilityApp>(appName: T) {
3131
export async function fetchHasData() {
3232
const apps: ObservabilityApp[] = ['apm', 'uptime', 'infra_logs', 'infra_metrics'];
3333
const promises = apps.map((app) => getDataHandler(app)?.hasData());
34-
const [apm, uptime, logs, metrics] = await Promise.all(promises);
34+
const [apm, uptime, logs, metrics] = await Promise.allSettled(promises);
3535
return { apm, uptime, infra_logs: logs, infra_metrics: metrics };
3636
}

x-pack/plugins/observability/public/plugin.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import {
99
DEFAULT_APP_CATEGORIES,
1010
Plugin as PluginClass,
1111
PluginInitializerContext,
12+
CoreStart,
1213
} from '../../../../src/core/public';
1314
import { registerDataHandler } from './data_handler';
15+
import { toggleOverviewLinkInNav } from './toggle_overview_link_in_nav';
1416

1517
export interface ObservabilityPluginSetup {
1618
dashboard: { register: typeof registerDataHandler };
@@ -43,5 +45,7 @@ export class Plugin implements PluginClass<ObservabilityPluginSetup, Observabili
4345
dashboard: { register: registerDataHandler },
4446
};
4547
}
46-
public start() {}
48+
public start(core: CoreStart) {
49+
toggleOverviewLinkInNav(core);
50+
}
4751
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
import { CoreStart } from 'kibana/public';
7+
8+
import { toggleOverviewLinkInNav } from './toggle_overview_link_in_nav';
9+
10+
describe('toggleOverviewLinkInNav', () => {
11+
const update = jest.fn();
12+
afterEach(() => {
13+
update.mockClear();
14+
});
15+
it('hides overview menu', () => {
16+
const core = ({
17+
application: {
18+
capabilities: {
19+
navLinks: {
20+
apm: false,
21+
logs: false,
22+
metrics: false,
23+
uptime: false,
24+
},
25+
},
26+
},
27+
chrome: { navLinks: { update } },
28+
} as unknown) as CoreStart;
29+
toggleOverviewLinkInNav(core);
30+
expect(update).toHaveBeenCalledWith('observability-overview', { hidden: true });
31+
});
32+
it('shows overview menu', () => {
33+
const core = ({
34+
application: {
35+
capabilities: {
36+
navLinks: {
37+
apm: true,
38+
logs: false,
39+
metrics: false,
40+
uptime: false,
41+
},
42+
},
43+
},
44+
chrome: { navLinks: { update } },
45+
} as unknown) as CoreStart;
46+
toggleOverviewLinkInNav(core);
47+
expect(update).not.toHaveBeenCalled();
48+
});
49+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { CoreStart } from 'kibana/public';
8+
9+
export function toggleOverviewLinkInNav(core: CoreStart) {
10+
const { apm, logs, metrics, uptime } = core.application.capabilities.navLinks;
11+
const someVisible = Object.values({ apm, logs, metrics, uptime }).some((visible) => visible);
12+
if (!someVisible) {
13+
core.chrome.navLinks.update('observability-overview', { hidden: true });
14+
}
15+
}

x-pack/test/functional/apps/advanced_settings/feature_controls/advanced_settings_security.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
6969

7070
it('shows management navlink', async () => {
7171
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
72-
expect(navLinks).to.contain('Stack Management');
72+
expect(navLinks).to.eql(['Stack Management']);
7373
});
7474

7575
it(`allows settings to be changed`, async () => {
@@ -125,7 +125,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
125125

126126
it('shows Management navlink', async () => {
127127
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
128-
expect(navLinks).to.contain('Stack Management');
128+
expect(navLinks).to.eql(['Stack Management']);
129129
});
130130

131131
it(`does not allow settings to be changed`, async () => {
@@ -176,7 +176,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
176176

177177
it('shows Management navlink', async () => {
178178
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
179-
expect(navLinks).to.contain('Stack Management');
179+
expect(navLinks).to.eql(['Discover', 'Stack Management']);
180180
});
181181

182182
it(`does not allow navigation to advanced settings; redirects to management home`, async () => {

x-pack/test/functional/apps/apm/feature_controls/apm_security.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
6060

6161
it('shows apm navlink', async () => {
6262
const navLinks = await appsMenu.readLinks();
63-
expect(navLinks.map((link) => link.text)).to.contain('APM');
63+
expect(navLinks.map((link) => link.text)).to.eql(['Overview', 'APM', 'Stack Management']);
6464
});
6565

6666
it('can navigate to APM app', async () => {
@@ -109,7 +109,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
109109

110110
it('shows apm navlink', async () => {
111111
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
112-
expect(navLinks).to.contain('APM');
112+
expect(navLinks).to.eql(['Overview', 'APM', 'Stack Management']);
113113
});
114114

115115
it('can navigate to APM app', async () => {

x-pack/test/functional/apps/canvas/feature_controls/canvas_security.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
6666

6767
it('shows canvas navlink', async () => {
6868
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
69-
expect(navLinks).to.contain('Canvas');
69+
expect(navLinks).to.eql(['Canvas', 'Stack Management']);
7070
});
7171

7272
it(`landing page shows "Create new workpad" button`, async () => {
@@ -142,7 +142,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
142142

143143
it('shows canvas navlink', async () => {
144144
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
145-
expect(navLinks).to.contain('Canvas');
145+
expect(navLinks).to.eql(['Canvas', 'Stack Management']);
146146
});
147147

148148
it(`landing page shows disabled "Create new workpad" button`, async () => {

x-pack/test/functional/apps/dev_tools/feature_controls/dev_tools_security.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
6363

6464
it('shows Dev Tools navlink', async () => {
6565
const navLinks = await appsMenu.readLinks();
66-
expect(navLinks.map((link) => link.text)).to.contain('Dev Tools');
66+
expect(navLinks.map((link) => link.text)).to.eql(['Dev Tools', 'Stack Management']);
6767
});
6868

6969
describe('console', () => {
@@ -144,7 +144,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
144144

145145
it(`shows 'Dev Tools' navlink`, async () => {
146146
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
147-
expect(navLinks).to.contain('Dev Tools');
147+
expect(navLinks).to.eql(['Dev Tools', 'Stack Management']);
148148
});
149149

150150
describe('console', () => {

x-pack/test/functional/apps/discover/feature_controls/discover_security.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
8282

8383
it('shows discover navlink', async () => {
8484
const navLinks = await appsMenu.readLinks();
85-
expect(navLinks.map((link) => link.text)).to.contain('Discover');
85+
expect(navLinks.map((link) => link.text)).to.eql(['Discover', 'Stack Management']);
8686
});
8787

8888
it('shows save button', async () => {
@@ -169,7 +169,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
169169

170170
it('shows discover navlink', async () => {
171171
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
172-
expect(navLinks).to.contain('Discover');
172+
expect(navLinks).to.eql(['Discover', 'Stack Management']);
173173
});
174174

175175
it(`doesn't show save button`, async () => {
@@ -260,7 +260,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
260260

261261
it('shows discover navlink', async () => {
262262
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
263-
expect(navLinks).to.contain('Discover');
263+
expect(navLinks).to.eql(['Discover', 'Stack Management']);
264264
});
265265

266266
it(`doesn't show save button`, async () => {

x-pack/test/functional/apps/graph/feature_controls/graph_security.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
6464

6565
it('shows graph navlink', async () => {
6666
const navLinks = await appsMenu.readLinks();
67-
expect(navLinks.map((link) => link.text)).to.contain('Graph');
67+
expect(navLinks.map((link) => link.text)).to.eql(['Graph', 'Stack Management']);
6868
});
6969

7070
it('landing page shows "Create new graph" button', async () => {
@@ -127,7 +127,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
127127

128128
it('shows graph navlink', async () => {
129129
const navLinks = (await appsMenu.readLinks()).map((link) => link.text);
130-
expect(navLinks).to.contain('Graph');
130+
expect(navLinks).to.eql(['Graph', 'Stack Management']);
131131
});
132132

133133
it('does not show a "Create new Workspace" button', async () => {

0 commit comments

Comments
 (0)