Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -489,31 +489,22 @@ export class DashboardApp {
return Number(attribute);
}

async getPanelGroupOrder(): Promise<string[]> {
const panelGroups = await this.panelSelectionFlyout
async getAddPanelFlyoutGroups(): Promise<string[]> {
const groupElements = await this.panelSelectionFlyout
.locator('[data-test-subj*="dashboardEditorMenu-"]')
.all();

const panelGroupData = await Promise.all(
panelGroups.map(async (panelGroup) => {
const order = await panelGroup.getAttribute('data-group-sort-order');
const testSubj = await panelGroup.getAttribute('data-test-subj');
return await Promise.all(
groupElements.map(async (groupElement) => {
const testSubj = await groupElement.getAttribute('data-test-subj');
// remove prefix so strings like 'dashboardEditorMenu-visualizationsGroup' become 'visualizationsGroup'
const match = testSubj?.match(/dashboardEditorMenu-(.*)/);
return { order, groupTitle: match?.[1] };
return match?.[1] ?? '';
})
);

const panelGroupByOrder = new Map<string, string>();
panelGroupData
.filter((item): item is { order: string; groupTitle: string } =>
Boolean(item.order && item.groupTitle)
)
.forEach((item) => panelGroupByOrder.set(item.order, item.groupTitle));

return [...panelGroupByOrder.values()];
}

async getPanelTypeCount(): Promise<number> {
async getAddPanelFlyoutPanelTypesCount(): Promise<number> {
return this.panelSelectionFlyout.locator('[data-test-subj*="create-action-"]').count();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,64 @@
* License v3.0 only", or the "Server Side Public License, v 1".
*/

import type { ScoutTestConfig } from '@kbn/scout';
import { spaceTest, tags } from '@kbn/scout';
import { expect } from '@kbn/scout/ui';
import { DASHBOARD_DEFAULT_INDEX_TITLE, DASHBOARD_SAVED_SEARCH_ARCHIVE } from '../constants';

// may include "observabilityGroup" panel group (and other panel groups)
const DASHBOARD_PANEL_GROUP_ORDER = [
'visualizationsGroup',
'controlsGroup',
'annotation-and-navigationGroup',
'mlGroup',
'legacyGroup',
];
const getExpected = (config: ScoutTestConfig) => {
if (config.projectType === 'es' || config.projectType === 'security') {
return {
groups: [
'visualizationsGroup',
'controlsGroup',
'annotation-and-navigationGroup',
'mlGroup',
'logs-aiopsGroup',
'legacyGroup',
],
count: 20,
};
}

const DASHBOARD_PANEL_TYPE_COUNT = 19;
return {
groups: [
'visualizationsGroup',
'controlsGroup',
'annotation-and-navigationGroup',
'mlGroup',
'logs-aiopsGroup',
'observabilityGroup',
'legacyGroup',
],
count: 27,
};
};

// Failing: See https://github.com/elastic/kibana/issues/259443
spaceTest.describe.skip(
'Dashboard panel listing',
/**
* Dashboard's add panel menu is populated
* by ui_actions trigger ADD_PANEL_TRIGGER.
* This test exists to ensures additions to menu
* notify our team and can be reviewed by design.
*/
spaceTest.describe(
'Dashboard add panel flyout',
{
tag: [
...tags.stateful.classic,
...tags.serverless.search,
...tags.serverless.security.complete,
...tags.serverless.observability.complete,
],
},
() => {
spaceTest.beforeAll(async ({ scoutSpace }) => {
let expectedCount: number;
let expectedGroups: string[];

spaceTest.beforeAll(async ({ scoutSpace, config }) => {
const expected = getExpected(config);
expectedCount = expected.count;
expectedGroups = expected.groups;
await scoutSpace.savedObjects.cleanStandardList();
await scoutSpace.savedObjects.load(DASHBOARD_SAVED_SEARCH_ARCHIVE);
await scoutSpace.uiSettings.setDefaultIndex(DASHBOARD_DEFAULT_INDEX_TITLE);
Expand All @@ -48,22 +79,19 @@ spaceTest.describe.skip(
await scoutSpace.savedObjects.cleanStandardList();
});

spaceTest('renders panel groups and panel count', async ({ pageObjects }) => {
spaceTest('renders add panel flyout', async ({ pageObjects }) => {
await spaceTest.step('open new dashboard and add panel flyout', async () => {
await pageObjects.dashboard.openNewDashboard();
await pageObjects.dashboard.openAddPanelFlyout();
});

await spaceTest.step('verify panel groups order', async () => {
const panelGroupOrder = await pageObjects.dashboard.getPanelGroupOrder();
expect(panelGroupOrder.length).toBeGreaterThanOrEqual(DASHBOARD_PANEL_GROUP_ORDER.length);
expect(panelGroupOrder).toStrictEqual(expect.arrayContaining(DASHBOARD_PANEL_GROUP_ORDER));
await spaceTest.step('verify panel groups', async () => {
const groups = await pageObjects.dashboard.getAddPanelFlyoutGroups();
expect(groups).toStrictEqual(expectedGroups);
});

await spaceTest.step('verify total panel count', async () => {
expect(await pageObjects.dashboard.getPanelTypeCount()).toBeGreaterThanOrEqual(
DASHBOARD_PANEL_TYPE_COUNT
);
expect(await pageObjects.dashboard.getAddPanelFlyoutPanelTypesCount()).toBe(expectedCount);
});
});
}
Expand Down

This file was deleted.

Loading