[7.x] Reverting grouped nav UI (#57724) (#58124)

* reverting grouped nav ui

* removing Management name change
This commit is contained in:
Michail Yasonik 2020-02-21 07:52:51 -05:00 committed by GitHub
parent 420e4d08f9
commit eafda0fa03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
57 changed files with 79 additions and 5671 deletions

View file

@ -70,9 +70,6 @@ into the document when displaying it.
`metrics:max_buckets`:: The maximum numbers of buckets that a single
data source can return. This might arise when the user selects a
short interval (for example, 1s) for a long time period (1 year).
`pageNavigation`:: The style of navigation menu for Kibana.
Choices are Individual, the legacy style where every plugin is represented in the nav,
and Grouped, a new format that bundles related plugins together in nested navigation.
`query:allowLeadingWildcards`:: Allows a wildcard (*) as the first character
in a query clause. Only applies when experimental query features are
enabled in the query bar. To disallow leading wildcards in Lucene queries,

View file

@ -193,7 +193,6 @@ export class ChromeService {
recentlyAccessed$={recentlyAccessed.get$()}
navControlsLeft$={navControls.getLeft$()}
navControlsRight$={navControls.getRight$()}
navSetting$={uiSettings.get$('pageNavigation')}
/>
</React.Fragment>
),

File diff suppressed because it is too large Load diff

View file

@ -42,7 +42,7 @@ import { InternalApplicationStart } from '../../../application/types';
import { HttpStart } from '../../../http';
import { ChromeHelpExtension } from '../../chrome_service';
import { HeaderBadge } from './header_badge';
import { NavSetting, OnIsLockedUpdate } from './';
import { OnIsLockedUpdate } from './';
import { HeaderBreadcrumbs } from './header_breadcrumbs';
import { HeaderHelpMenu } from './header_help_menu';
import { HeaderNavControls } from './header_nav_controls';
@ -69,7 +69,6 @@ export interface HeaderProps {
navControlsRight$: Rx.Observable<readonly ChromeNavControl[]>;
basePath: HttpStart['basePath'];
isLocked?: boolean;
navSetting$: Rx.Observable<NavSetting>;
onIsLockedUpdate?: OnIsLockedUpdate;
}
@ -81,7 +80,6 @@ interface State {
forceNavigation: boolean;
navControlsLeft: readonly ChromeNavControl[];
navControlsRight: readonly ChromeNavControl[];
navSetting: NavSetting;
currentAppId: string | undefined;
}
@ -100,7 +98,6 @@ export class Header extends Component<HeaderProps, State> {
forceNavigation: false,
navControlsLeft: [],
navControlsRight: [],
navSetting: 'grouped',
currentAppId: '',
};
}
@ -116,8 +113,7 @@ export class Header extends Component<HeaderProps, State> {
Rx.combineLatest(
this.props.navControlsLeft$,
this.props.navControlsRight$,
this.props.application.currentAppId$,
this.props.navSetting$
this.props.application.currentAppId$
)
).subscribe({
next: ([
@ -126,7 +122,7 @@ export class Header extends Component<HeaderProps, State> {
forceNavigation,
navLinks,
recentlyAccessed,
[navControlsLeft, navControlsRight, currentAppId, navSetting],
[navControlsLeft, navControlsRight, currentAppId],
]) => {
this.setState({
appTitle,
@ -136,7 +132,6 @@ export class Header extends Component<HeaderProps, State> {
recentlyAccessed,
navControlsLeft,
navControlsRight,
navSetting,
currentAppId,
});
},
@ -225,7 +220,6 @@ export class Header extends Component<HeaderProps, State> {
</EuiHeaderSection>
</EuiHeader>
<NavDrawer
navSetting={this.state.navSetting}
isLocked={this.props.isLocked}
onIsLockedUpdate={this.props.onIsLockedUpdate}
navLinks={navLinks}

View file

@ -26,5 +26,4 @@ export {
ChromeHelpExtensionMenuDocumentationLink,
ChromeHelpExtensionMenuGitHubLink,
} from './header_help_menu';
export type NavSetting = 'grouped' | 'individual';
export type OnIsLockedUpdate = (isLocked: boolean) => void;

View file

@ -1,103 +0,0 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { cloneDeep } from 'lodash';
import { mount } from 'enzyme';
import React from 'react';
import { NavSetting } from './';
import { ChromeNavLink } from '../../../';
import { AppCategory } from 'src/core/types';
import { DEFAULT_APP_CATEGORIES } from '../../../../utils';
import { NavDrawer } from './nav_drawer';
import { euiNavLink } from './nav_link';
const { analyze, management, observability, security } = DEFAULT_APP_CATEGORIES;
const mockIBasePath = {
get: () => '/app',
prepend: () => '/app',
remove: () => '/app',
};
const getMockProps = (chromeNavLinks: ChromeNavLink[], navSetting: NavSetting = 'grouped') => ({
navSetting,
navLinks: chromeNavLinks.map(link =>
euiNavLink(link, true, undefined, mockIBasePath, () => Promise.resolve())
),
chromeNavLinks,
recentlyAccessedItems: [],
basePath: mockIBasePath,
});
const makeLink = (id: string, order: number, category?: AppCategory) => ({
id,
category,
order,
title: id,
baseUrl: `http://localhost:5601/app/${id}`,
legacy: true,
});
const getMockChromeNavLink = () =>
cloneDeep([
makeLink('discover', 100, analyze),
makeLink('siem', 500, security),
makeLink('metrics', 600, observability),
makeLink('monitoring', 800, management),
makeLink('visualize', 200, analyze),
makeLink('dashboard', 300, analyze),
makeLink('canvas', 400, { label: 'customCategory' }),
makeLink('logs', 700, observability),
]);
describe('NavDrawer', () => {
describe('Advanced setting set to individual', () => {
it('renders individual items', () => {
const component = mount(
<NavDrawer {...getMockProps(getMockChromeNavLink(), 'individual')} />
);
expect(component).toMatchSnapshot();
});
});
describe('Advanced setting set to grouped', () => {
it('renders individual items if there are less than 7', () => {
const links = getMockChromeNavLink().slice(0, 5);
const component = mount(<NavDrawer {...getMockProps(links)} />);
expect(component).toMatchSnapshot();
});
it('renders individual items if there is only 1 category', () => {
// management doesn't count as a category
const navLinks = [
makeLink('discover', 100, analyze),
makeLink('siem', 500, analyze),
makeLink('metrics', 600, analyze),
makeLink('monitoring', 800, analyze),
makeLink('visualize', 200, analyze),
makeLink('dashboard', 300, management),
makeLink('canvas', 400, management),
makeLink('logs', 700, management),
];
const component = mount(<NavDrawer {...getMockProps(navLinks)} />);
expect(component).toMatchSnapshot();
});
it('renders grouped items', () => {
const component = mount(<NavDrawer {...getMockProps(getMockChromeNavLink())} />);
expect(component).toMatchSnapshot();
});
});
});

View file

@ -18,39 +18,16 @@
*/
import React from 'react';
import { groupBy, sortBy } from 'lodash';
import { i18n } from '@kbn/i18n';
// @ts-ignore
import { EuiNavDrawer, EuiHorizontalRule, EuiNavDrawerGroup } from '@elastic/eui';
import { NavSetting, OnIsLockedUpdate } from './';
import { OnIsLockedUpdate } from './';
import { ChromeNavLink, ChromeRecentlyAccessedHistoryItem } from '../../..';
import { AppCategory } from '../../../../types';
import { HttpStart } from '../../../http';
import { NavLink } from './nav_link';
import { RecentLinks } from './recent_links';
function getAllCategories(allCategorizedLinks: Record<string, NavLink[]>) {
const allCategories = {} as Record<string, AppCategory | undefined>;
for (const [key, value] of Object.entries(allCategorizedLinks)) {
allCategories[key] = value[0].category;
}
return allCategories;
}
function getOrderedCategories(
mainCategories: Record<string, NavLink[]>,
categoryDictionary: ReturnType<typeof getAllCategories>
) {
return sortBy(
Object.keys(mainCategories),
categoryName => categoryDictionary[categoryName]?.order
);
}
export interface Props {
navSetting: NavSetting;
isLocked?: boolean;
onIsLockedUpdate?: OnIsLockedUpdate;
navLinks: NavLink[];
@ -60,26 +37,9 @@ export interface Props {
}
function navDrawerRenderer(
{
navSetting,
isLocked,
onIsLockedUpdate,
navLinks,
chromeNavLinks,
recentlyAccessedItems,
basePath,
}: Props,
{ isLocked, onIsLockedUpdate, navLinks, chromeNavLinks, recentlyAccessedItems, basePath }: Props,
ref: React.Ref<HTMLElement>
) {
const disableGroupedNavSetting = navSetting === 'individual';
const groupedNavLinks = groupBy(navLinks, link => link?.category?.label);
const { undefined: unknowns, ...allCategorizedLinks } = groupedNavLinks;
const { Management: management, ...mainCategories } = allCategorizedLinks;
const categoryDictionary = getAllCategories(allCategorizedLinks);
const orderedCategories = getOrderedCategories(mainCategories, categoryDictionary);
const showUngroupedNav =
disableGroupedNavSetting || navLinks.length < 7 || Object.keys(mainCategories).length === 1;
return (
<EuiNavDrawer
ref={ref}
@ -96,73 +56,13 @@ function navDrawerRenderer(
basePath,
})}
<EuiHorizontalRule margin="none" />
{showUngroupedNav ? (
<EuiNavDrawerGroup
data-test-subj="navDrawerAppsMenu"
listItems={navLinks}
aria-label={i18n.translate('core.ui.primaryNavList.screenReaderLabel', {
defaultMessage: 'Primary navigation links',
})}
/>
) : (
<>
<EuiNavDrawerGroup
data-test-subj="navDrawerAppsMenu"
aria-label={i18n.translate('core.ui.primaryNavList.screenReaderLabel', {
defaultMessage: 'Primary navigation links',
})}
listItems={[
...orderedCategories.map(categoryName => {
const category = categoryDictionary[categoryName]!;
const links = mainCategories[categoryName];
if (links.length === 1) {
return {
...links[0],
label: category.label,
iconType: category.euiIconType || links[0].iconType,
};
}
return {
'data-test-subj': 'navDrawerCategory',
iconType: category.euiIconType,
label: category.label,
flyoutMenu: {
title: category.label,
listItems: sortBy(links, 'order').map(link => {
link['data-test-subj'] = 'navDrawerFlyoutLink';
return link;
}),
},
};
}),
...sortBy(unknowns, 'order'),
]}
/>
<EuiHorizontalRule margin="none" />
<EuiNavDrawerGroup
data-test-subj="navDrawerManagementMenu"
aria-label={i18n.translate('core.ui.managementNavList.screenReaderLabel', {
defaultMessage: 'Management navigation links',
})}
listItems={[
{
label: categoryDictionary.Management!.label,
iconType: categoryDictionary.Management!.euiIconType,
'data-test-subj': 'navDrawerCategory',
flyoutMenu: {
title: categoryDictionary.Management!.label,
listItems: sortBy(management, 'order').map(link => {
link['data-test-subj'] = 'navDrawerFlyoutLink';
return link;
}),
},
},
]}
/>
</>
)}
<EuiNavDrawerGroup
data-test-subj="navDrawerAppsMenu"
listItems={navLinks}
aria-label={i18n.translate('core.ui.primaryNavList.screenReaderLabel', {
defaultMessage: 'Primary navigation links',
})}
/>
</EuiNavDrawer>
);
}

View file

@ -115,7 +115,7 @@ export default function(kibana) {
{
id: 'kibana:stack_management',
title: i18n.translate('kbn.managementTitle', {
defaultMessage: 'Stack Management',
defaultMessage: 'Management',
}),
order: 9003,
url: `${kbnBaseUrl}#/management`,

View file

@ -131,7 +131,7 @@ describe('home', () => {
test('should not render directory entry when showOnHomePage is false', async () => {
const directoryEntry = {
id: 'stack-management',
title: 'Stack Management',
title: 'Management',
description: 'Your center console for managing the Elastic Stack.',
icon: 'managementApp',
path: 'management_landing_page',

View file

@ -69,7 +69,7 @@ export function updateLandingPage(version) {
<h1>
<FormattedMessage
id="kbn.management.landing.header"
defaultMessage="Welcome to Stack Management {version}"
defaultMessage="Kibana {version} management"
values={{ version }}
/>
</h1>

View file

@ -1174,24 +1174,5 @@ export function getUiSettingDefaults() {
category: ['accessibility'],
requiresPageReload: true,
},
pageNavigation: {
name: i18n.translate('kbn.advancedSettings.pageNavigationName', {
defaultMessage: 'Side nav style',
}),
value: 'grouped',
description: i18n.translate('kbn.advancedSettings.pageNavigationDesc', {
defaultMessage: 'Change the style of navigation',
}),
type: 'select',
options: ['grouped', 'individual'],
optionLabels: {
grouped: i18n.translate('kbn.advancedSettings.pageNavigationGrouped', {
defaultMessage: 'Grouped',
}),
individual: i18n.translate('kbn.advancedSettings.pageNavigationIndividual', {
defaultMessage: 'Individual',
}),
},
},
};
}

View file

@ -21,7 +21,7 @@ import { i18n } from '@kbn/i18n';
export const MANAGEMENT_BREADCRUMB = Object.freeze({
text: i18n.translate('common.ui.stackManagement.breadcrumb', {
defaultMessage: 'Stack Management',
defaultMessage: 'Management',
}),
href: '#/management',
});

View file

@ -168,8 +168,7 @@ export class ManagementSidebarNav extends React.Component<
<EuiScreenReaderOnly>
<h2 id={HEADER_ID}>
{i18n.translate('management.nav.label', {
// todo
defaultMessage: 'Stack Management',
defaultMessage: 'Management',
})}
</h2>
</EuiScreenReaderOnly>

View file

@ -27,8 +27,7 @@ export class LegacyManagementAdapter {
'management',
{
display: i18n.translate('management.displayName', {
// todo
defaultMessage: 'Stack Management',
defaultMessage: 'Management',
}),
},
capabilities
@ -36,7 +35,6 @@ export class LegacyManagementAdapter {
this.main.register('data', {
display: i18n.translate('management.connectDataDisplayName', {
// todo
defaultMessage: 'Connect Data',
}),
order: 0,

View file

@ -64,8 +64,7 @@ export class ManagementApp {
coreStart.chrome.setBreadcrumbs([
{
text: i18n.translate('management.breadcrumb', {
// todo
defaultMessage: 'Stack Management',
defaultMessage: 'Management',
}),
href: '#/management',
},

View file

@ -36,8 +36,8 @@ export class ManagementPlugin implements Plugin<ManagementSetup, ManagementStart
) {
home.featureCatalogue.register({
id: 'stack-management',
title: i18n.translate('management.stackManagement.managementLabel', {
defaultMessage: 'Stack Management',
title: i18n.translate('management.displayName', {
defaultMessage: 'Management',
}),
description: i18n.translate('management.stackManagement.managementDescription', {
defaultMessage: 'Your center console for managing the Elastic Stack.',

View file

@ -34,7 +34,6 @@ export default function({ getService, getPageObjects }) {
await esArchiver.load('dashboard/current/kibana');
await kibanaServer.uiSettings.replace({
defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c',
pageNavigation: 'individual',
});
await PageObjects.common.navigateToApp('dashboard');
await PageObjects.dashboard.preserveCrossAppState();

View file

@ -27,7 +27,7 @@ export default function({ getService, getPageObjects }) {
describe('index pattern filter', function describeIndexTests() {
before(async function() {
// delete .kibana index and then wait for Kibana to re-create it
await kibanaServer.uiSettings.replace({ pageNavigation: 'individual' });
await kibanaServer.uiSettings.replace({});
await PageObjects.settings.navigateTo();
await PageObjects.settings.clickKibanaIndexPatterns();
});

View file

@ -60,7 +60,7 @@ export function HeaderPageProvider({ getService, getPageObjects }) {
}
async clickStackManagement() {
await appsMenu.clickLink('Stack Management');
await appsMenu.clickLink('Management');
await this.awaitGlobalLoadingIndicatorHidden();
}

View file

@ -19,7 +19,6 @@
import { map as mapAsync } from 'bluebird';
import expect from '@kbn/expect';
import { NavSetting } from '../../../src/core/public/chrome/ui/header/';
import { FtrProviderContext } from '../ftr_provider_context';
export function SettingsPageProvider({ getService, getPageObjects }: FtrProviderContext) {
@ -733,12 +732,6 @@ export function SettingsPageProvider({ getService, getPageObjects }: FtrProvider
await checkBox.click();
return await this.canSavedObjectsBeDeleted();
}
async setNavType(navType: NavSetting) {
await PageObjects.common.navigateToApp('settings');
await this.clickKibanaSettings();
await this.setAdvancedSettingsSelect('pageNavigation', navType);
}
}
return new SettingsPage();

View file

@ -28,7 +28,7 @@ import '../../plugins/core_app_status/public/types';
// eslint-disable-next-line import/no-default-export
export default function({ getService, getPageObjects }: PluginFunctionalProviderContext) {
const PageObjects = getPageObjects(['common', 'settings']);
const PageObjects = getPageObjects(['common']);
const browser = getService('browser');
const appsMenu = getService('appsMenu');
const testSubjects = getService('testSubjects');
@ -48,10 +48,6 @@ export default function({ getService, getPageObjects }: PluginFunctionalProvider
};
describe('application status management', () => {
before(async () => {
await PageObjects.settings.setNavType('individual');
});
beforeEach(async () => {
await PageObjects.common.navigateToApp('app_status_start');
});

View file

@ -122,7 +122,7 @@ export default function({ getService, getPageObjects }: PluginFunctionalProvider
});
it('can navigate from NP apps to legacy apps', async () => {
await appsMenu.clickLink('Stack Management');
await appsMenu.clickLink('Management');
await loadingScreenShown();
await testSubjects.existOrFail('managementNav');
});

View file

@ -1449,7 +1449,6 @@
"kbn.management.indexPatterns.listBreadcrumb": "インデックスパターン",
"kbn.management.indexPatternTable.createBtn": "インデックスパターンの作成",
"kbn.management.indexPatternTable.title": "インデックスパターン",
"kbn.management.landing.header": "Kibana {version} 管理",
"kbn.management.landing.subhead": "インデックス、インデックスパターン、保存されたオブジェクト、Kibana の設定、その他を管理します。",
"kbn.management.landing.text": "すべてのツールの一覧は、左のメニューにあります。",
"kbn.management.objects.confirmModalOptions.deleteButtonLabel": "削除",

View file

@ -1449,7 +1449,6 @@
"kbn.management.indexPatterns.listBreadcrumb": "索引模式",
"kbn.management.indexPatternTable.createBtn": "创建索引模式",
"kbn.management.indexPatternTable.title": "索引模式",
"kbn.management.landing.header": "Kibana {version} 管理",
"kbn.management.landing.subhead": "管理您的索引、索引模式、已保存对象、Kibana 设置等等。",
"kbn.management.landing.text": "在左侧菜单中可找到完整工具列表",
"kbn.management.objects.confirmModalOptions.deleteButtonLabel": "删除",

View file

@ -55,7 +55,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
expectSpaceSelector: false,
}
);
await kibanaServer.uiSettings.replace({ pageNavigation: 'individual' });
await kibanaServer.uiSettings.replace({});
await PageObjects.settings.navigateTo();
});
@ -69,7 +69,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Stack Management']);
expect(navLinks).to.eql(['Management']);
});
it(`allows settings to be changed`, async () => {
@ -125,7 +125,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows Management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Stack Management']);
expect(navLinks).to.eql(['Management']);
});
it(`does not allow settings to be changed`, async () => {
@ -176,7 +176,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows Management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Discover', 'Stack Management']);
expect(navLinks).to.eql(['Discover', 'Management']);
});
it(`does not allow navigation to advanced settings; redirects to management home`, async () => {

View file

@ -41,9 +41,8 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Stack Management');
expect(navLinks).to.contain('Management');
});
it(`allows settings to be changed`, async () => {

View file

@ -60,7 +60,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows apm navlink', async () => {
const navLinks = await appsMenu.readLinks();
expect(navLinks.map(link => link.text)).to.eql(['APM', 'Stack Management']);
expect(navLinks.map(link => link.text)).to.eql(['APM', 'Management']);
});
it('can navigate to APM app', async () => {
@ -109,7 +109,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows apm navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['APM', 'Stack Management']);
expect(navLinks).to.eql(['APM', 'Management']);
});
it('can navigate to APM app', async () => {

View file

@ -8,7 +8,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const spacesService = getService('spaces');
const PageObjects = getPageObjects(['common', 'error', 'timePicker', 'security', 'settings']);
const PageObjects = getPageObjects(['common', 'error', 'timePicker', 'security']);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -30,7 +30,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('APM');
});

View file

@ -66,7 +66,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows canvas navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Canvas', 'Stack Management']);
expect(navLinks).to.eql(['Canvas', 'Management']);
});
it(`landing page shows "Create new workpad" button`, async () => {
@ -142,7 +142,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows canvas navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Canvas', 'Stack Management']);
expect(navLinks).to.eql(['Canvas', 'Management']);
});
it(`landing page shows disabled "Create new workpad" button`, async () => {

View file

@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects(['common', 'canvas', 'security', 'spaceSelector', 'settings']);
const PageObjects = getPageObjects(['common', 'canvas', 'security', 'spaceSelector']);
const appsMenu = getService('appsMenu');
describe('spaces feature controls', function() {
@ -40,7 +40,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Canvas');
});

View file

@ -77,7 +77,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows dashboard navlink', async () => {
const navLinks = await appsMenu.readLinks();
expect(navLinks.map(link => link.text)).to.eql(['Dashboard', 'Stack Management']);
expect(navLinks.map(link => link.text)).to.eql(['Dashboard', 'Management']);
});
it(`landing page shows "Create new Dashboard" button`, async () => {
@ -261,7 +261,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows dashboard navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Dashboard', 'Stack Management']);
expect(navLinks).to.eql(['Dashboard', 'Management']);
});
it(`landing page doesn't show "Create new Dashboard" button`, async () => {

View file

@ -14,13 +14,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const config = getService('config');
const spacesService = getService('spaces');
const PageObjects = getPageObjects([
'common',
'dashboard',
'security',
'spaceSelector',
'settings',
]);
const PageObjects = getPageObjects(['common', 'dashboard', 'security', 'spaceSelector']);
const appsMenu = getService('appsMenu');
const testSubjects = getService('testSubjects');
@ -50,7 +44,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Dashboard');
});

View file

@ -37,10 +37,7 @@ export default function({ getService, getPageObjects }) {
log.debug('Dashboard View Mode:initTests');
await esArchiver.loadIfNeeded('logstash_functional');
await esArchiver.load('dashboard_view_mode');
await kibanaServer.uiSettings.replace({
defaultIndex: 'logstash-*',
pageNavigation: 'individual',
});
await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' });
await browser.setWindowSize(1600, 1000);
await PageObjects.common.navigateToApp('discover');
@ -200,7 +197,7 @@ export default function({ getService, getPageObjects }) {
await PageObjects.security.forceLogout();
await PageObjects.security.login('mixeduser', '123456');
if (await appsMenu.linkExists('Stack Management')) {
if (await appsMenu.linkExists('Management')) {
throw new Error('Expected management nav link to not be shown');
}
});
@ -209,7 +206,7 @@ export default function({ getService, getPageObjects }) {
await PageObjects.security.forceLogout();
await PageObjects.security.login('mysuperuser', '123456');
if (!(await appsMenu.linkExists('Stack Management'))) {
if (!(await appsMenu.linkExists('Management'))) {
throw new Error('Expected management nav link to be shown');
}
});

View file

@ -64,7 +64,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows Dev Tools navlink', async () => {
const navLinks = await appsMenu.readLinks();
expect(navLinks.map(link => link.text)).to.eql(['Dev Tools', 'Stack Management']);
expect(navLinks.map(link => link.text)).to.eql(['Dev Tools', 'Management']);
});
describe('console', () => {
@ -145,7 +145,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it(`shows 'Dev Tools' navlink`, async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Dev Tools', 'Stack Management']);
expect(navLinks).to.eql(['Dev Tools', 'Management']);
});
describe('console', () => {

View file

@ -10,13 +10,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const config = getService('config');
const spacesService = getService('spaces');
const PageObjects = getPageObjects([
'common',
'dashboard',
'security',
'spaceSelector',
'settings',
]);
const PageObjects = getPageObjects(['common', 'dashboard', 'security', 'spaceSelector']);
const appsMenu = getService('appsMenu');
const testSubjects = getService('testSubjects');
const grokDebugger = getService('grokDebugger');
@ -47,7 +41,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Dev Tools');
});

View file

@ -83,7 +83,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows discover navlink', async () => {
const navLinks = await appsMenu.readLinks();
expect(navLinks.map(link => link.text)).to.eql(['Discover', 'Stack Management']);
expect(navLinks.map(link => link.text)).to.eql(['Discover', 'Management']);
});
it('shows save button', async () => {
@ -170,7 +170,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows discover navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Discover', 'Stack Management']);
expect(navLinks).to.eql(['Discover', 'Management']);
});
it(`doesn't show save button`, async () => {

View file

@ -16,7 +16,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
'timePicker',
'security',
'spaceSelector',
'settings',
]);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -51,7 +50,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Discover');
});

View file

@ -64,7 +64,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows graph navlink', async () => {
const navLinks = await appsMenu.readLinks();
expect(navLinks.map(link => link.text)).to.eql(['Graph', 'Stack Management']);
expect(navLinks.map(link => link.text)).to.eql(['Graph', 'Management']);
});
it('landing page shows "Create new graph" button', async () => {
@ -127,7 +127,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows graph navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Graph', 'Stack Management']);
expect(navLinks).to.eql(['Graph', 'Management']);
});
it('does not show a "Create new Workspace" button', async () => {

View file

@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects(['common', 'graph', 'security', 'error', 'settings']);
const PageObjects = getPageObjects(['common', 'graph', 'security', 'error']);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -34,7 +34,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Graph');
});

View file

@ -71,7 +71,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Stack Management']);
expect(navLinks).to.eql(['Management']);
});
it(`index pattern listing shows create button`, async () => {
@ -114,7 +114,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
}
);
await kibanaServer.uiSettings.replace({ pageNavigation: 'individual' });
await kibanaServer.uiSettings.replace({});
await PageObjects.settings.navigateTo();
});
@ -125,7 +125,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Stack Management']);
expect(navLinks).to.eql(['Management']);
});
it(`index pattern listing doesn't show create button`, async () => {
@ -177,7 +177,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows Management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Discover', 'Stack Management']);
expect(navLinks).to.eql(['Discover', 'Management']);
});
it(`doesn't show Index Patterns in management side-nav`, async () => {

View file

@ -41,9 +41,8 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Stack Management');
expect(navLinks).to.contain('Management');
});
it(`index pattern listing shows create button`, async () => {

View file

@ -61,7 +61,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows metrics navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Metrics', 'Stack Management']);
expect(navLinks).to.eql(['Metrics', 'Management']);
});
describe('infrastructure landing page without data', () => {
@ -177,7 +177,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows metrics navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Metrics', 'Stack Management']);
expect(navLinks).to.eql(['Metrics', 'Management']);
});
describe('infrastructure landing page without data', () => {

View file

@ -9,13 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects([
'common',
'infraHome',
'security',
'spaceSelector',
'settings',
]);
const PageObjects = getPageObjects(['common', 'infraHome', 'security', 'spaceSelector']);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -47,7 +41,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Metrics');
});

View file

@ -58,7 +58,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows logs navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Logs', 'Stack Management']);
expect(navLinks).to.eql(['Logs', 'Management']);
});
describe('logs landing page without data', () => {
@ -121,7 +121,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows logs navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Logs', 'Stack Management']);
expect(navLinks).to.eql(['Logs', 'Management']);
});
describe('logs landing page without data', () => {

View file

@ -9,13 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects([
'common',
'infraHome',
'security',
'spaceSelector',
'settings',
]);
const PageObjects = getPageObjects(['common', 'infraHome', 'security', 'spaceSelector']);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -42,7 +36,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Logs');
});

View file

@ -10,7 +10,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const security = getService('security');
const appsMenu = getService('appsMenu');
const PageObjects = getPageObjects(['common', 'security', 'settings']);
const PageObjects = getPageObjects(['common', 'security']);
describe('security', () => {
before(async () => {
@ -94,7 +94,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
});
await PageObjects.security.login('machine_learning_user', 'machine_learning_user-password');
await PageObjects.settings.setNavType('individual');
});
after(async () => {

View file

@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects(['common', 'dashboard', 'security', 'error', 'settings']);
const PageObjects = getPageObjects(['common', 'dashboard', 'security', 'error']);
const appsMenu = getService('appsMenu');
const testSubjects = getService('testSubjects');
@ -39,7 +39,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Machine Learning');
});

View file

@ -66,7 +66,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows maps navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Maps', 'Stack Management']);
expect(navLinks).to.eql(['Maps', 'Management']);
});
it(`allows a map to be created`, async () => {
@ -153,7 +153,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows Maps navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Maps', 'Stack Management']);
expect(navLinks).to.eql(['Maps', 'Management']);
});
it(`does not show create new button`, async () => {
@ -248,7 +248,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('does not show Maps navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Discover', 'Stack Management']);
expect(navLinks).to.eql(['Discover', 'Management']);
});
it(`returns a 404`, async () => {

View file

@ -10,7 +10,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const security = getService('security');
const appsMenu = getService('appsMenu');
const PageObjects = getPageObjects(['common', 'security', 'settings']);
const PageObjects = getPageObjects(['common', 'security']);
describe('security', () => {
before(async () => {
@ -97,7 +97,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
});
it('shows monitoring navlink', async () => {
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Stack Monitoring');
});

View file

@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects(['common', 'dashboard', 'security', 'error', 'settings']);
const PageObjects = getPageObjects(['common', 'dashboard', 'security', 'error']);
const appsMenu = getService('appsMenu');
const find = getService('find');
@ -41,7 +41,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Stack Monitoring');
});

View file

@ -16,7 +16,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
describe('security feature controls', () => {
before(async () => {
await esArchiver.load('empty_kibana');
await PageObjects.settings.setNavType('individual');
});
after(async () => {
@ -57,7 +56,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Stack Management');
expect(navLinks).to.contain('Management');
});
it(`displays Spaces management section`, async () => {
@ -135,7 +134,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows management navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Stack Management');
expect(navLinks).to.contain('Management');
});
it(`doesn't display Spaces management section`, async () => {

View file

@ -60,7 +60,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows timelion navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Timelion', 'Stack Management']);
expect(navLinks).to.eql(['Timelion', 'Management']);
});
it(`allows a timelion sheet to be created`, async () => {
@ -112,7 +112,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows timelion navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Timelion', 'Stack Management']);
expect(navLinks).to.eql(['Timelion', 'Management']);
});
it(`does not allow a timelion sheet to be created`, async () => {

View file

@ -9,13 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const spacesService = getService('spaces');
const PageObjects = getPageObjects([
'common',
'timelion',
'security',
'spaceSelector',
'settings',
]);
const PageObjects = getPageObjects(['common', 'timelion', 'security', 'spaceSelector']);
const appsMenu = getService('appsMenu');
describe('timelion', () => {
@ -44,7 +38,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Timelion');
});

View file

@ -64,7 +64,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows uptime navlink', async () => {
const navLinks = await appsMenu.readLinks();
expect(navLinks.map(link => link.text)).to.eql(['Uptime', 'Stack Management']);
expect(navLinks.map(link => link.text)).to.eql(['Uptime', 'Management']);
});
it('can navigate to Uptime app', async () => {
@ -115,7 +115,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows uptime navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Uptime', 'Stack Management']);
expect(navLinks).to.eql(['Uptime', 'Management']);
});
it('can navigate to Uptime app', async () => {

View file

@ -8,7 +8,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {
const spacesService = getService('spaces');
const PageObjects = getPageObjects(['common', 'error', 'timePicker', 'security', 'settings']);
const PageObjects = getPageObjects(['common', 'error', 'timePicker', 'security']);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -30,7 +30,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Uptime');
});

View file

@ -76,7 +76,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows visualize navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Visualize', 'Stack Management']);
expect(navLinks).to.eql(['Visualize', 'Management']);
});
it(`landing page shows "Create new Visualization" button`, async () => {
@ -200,7 +200,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
it('shows visualize navlink', async () => {
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.eql(['Visualize', 'Stack Management']);
expect(navLinks).to.eql(['Visualize', 'Management']);
});
it(`landing page shows "Create new Visualization" button`, async () => {

View file

@ -11,13 +11,7 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const config = getService('config');
const spacesService = getService('spaces');
const PageObjects = getPageObjects([
'common',
'visualize',
'security',
'spaceSelector',
'settings',
]);
const PageObjects = getPageObjects(['common', 'visualize', 'security', 'spaceSelector']);
const testSubjects = getService('testSubjects');
const appsMenu = getService('appsMenu');
@ -47,7 +41,6 @@ export default function({ getPageObjects, getService }: FtrProviderContext) {
await PageObjects.common.navigateToApp('home', {
basePath: '/s/custom_space',
});
await PageObjects.settings.setNavType('individual');
const navLinks = (await appsMenu.readLinks()).map(link => link.text);
expect(navLinks).to.contain('Visualize');
});