From 712798eaa7b0cb2fee5a51c95066649606fface2 Mon Sep 17 00:00:00 2001 From: Jeramy Soucy Date: Mon, 1 Aug 2022 17:15:32 -0400 Subject: [PATCH] Replaced use of any with ExclusiveUnion for search props of EuiSelectable. Resolved flaky test for spaces nav. --- .../nav_control/components/spaces_menu.tsx | 47 ++++++++++++------- .../apps/spaces/spaces_selection.ts | 8 ++-- .../page_objects/space_selector_page.ts | 4 +- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx b/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx index b60a0f0e2ae1a..1d54c639d84d8 100644 --- a/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx +++ b/x-pack/plugins/spaces/public/nav_control/components/spaces_menu.tsx @@ -7,6 +7,7 @@ import './spaces_menu.scss'; +import type { ExclusiveUnion } from '@elastic/eui'; import { EuiLoadingSpinner, EuiPopoverFooter, @@ -15,7 +16,10 @@ import { EuiText, } from '@elastic/eui'; import type { EuiSelectableOption } from '@elastic/eui/src/components/selectable'; -import type { EuiSelectableOnChangeEvent } from '@elastic/eui/src/components/selectable/selectable'; +import type { + EuiSelectableOnChangeEvent, + EuiSelectableSearchableSearchProps, +} from '@elastic/eui/src/components/selectable/selectable'; import React, { Component, lazy, Suspense } from 'react'; import type { ApplicationStart, Capabilities } from '@kbn/core/public'; @@ -56,6 +60,30 @@ class SpacesMenuUI extends Component { ); + // In the future this could be replaced by EuiSelectableSearchableProps, but at this time is is not exported from EUI + const searchableProps: ExclusiveUnion< + { searchable: true; searchProps: EuiSelectableSearchableSearchProps<{}> }, + { searchable: false } + > = + this.props.spaces.length >= SPACE_SEARCH_COUNT_THRESHOLD + ? { + searchable: true, + searchProps: { + placeholder: i18n.translate( + 'xpack.spaces.navControl.spacesMenu.findSpacePlaceholder', + { + defaultMessage: 'Find a space', + } + ), + compressed: true, + isClearable: true, + id: 'headerSpacesMenuListSearch', + }, + } + : { + searchable: false, + }; + return ( <> { title={i18n.translate('xpack.spaces.navControl.spacesMenu.changeCurrentSpaceTitle', { defaultMessage: 'Change current space', })} - searchable={this.props.spaces.length >= SPACE_SEARCH_COUNT_THRESHOLD} - searchProps={ - this.props.spaces.length >= SPACE_SEARCH_COUNT_THRESHOLD - ? ({ - placeholder: i18n.translate( - 'xpack.spaces.navControl.spacesMenu.findSpacePlaceholder', - { - defaultMessage: 'Find a space', - } - ), - compressed: true, - isClearable: true, - id: 'headerSpacesMenuListSearch', - } as any) - : undefined - } + {...searchableProps} noMatchesMessage={noSpacesMessage} options={spaceOptions} singleSelection={'always'} diff --git a/x-pack/test/functional/apps/spaces/spaces_selection.ts b/x-pack/test/functional/apps/spaces/spaces_selection.ts index 4b45524defb88..65fa1c9f00146 100644 --- a/x-pack/test/functional/apps/spaces/spaces_selection.ts +++ b/x-pack/test/functional/apps/spaces/spaces_selection.ts @@ -84,13 +84,13 @@ export default function spaceSelectorFunctionalTests({ await PageObjects.spaceSelector.goToSpecificSpace(space5Id); await PageObjects.spaceSelector.expectHomePage(space5Id); - // await PageObjects.spaceSelector.openSpacesNav(); - // await PageObjects.spaceSelector.goToSpecificSpace(defaultSpaceId); - // await PageObjects.spaceSelector.expectHomePage(defaultSpaceId); - await PageObjects.spaceSelector.openSpacesNav(); await PageObjects.spaceSelector.goToSpecificSpace(anotherSpaceId); await PageObjects.spaceSelector.expectHomePage(anotherSpaceId); + + await PageObjects.spaceSelector.openSpacesNav(); + await PageObjects.spaceSelector.goToSpecificSpace(defaultSpaceId); + await PageObjects.spaceSelector.expectHomePage(defaultSpaceId); }); }); diff --git a/x-pack/test/functional/page_objects/space_selector_page.ts b/x-pack/test/functional/page_objects/space_selector_page.ts index 18f8a933166f0..26ea65e26a9cd 100644 --- a/x-pack/test/functional/page_objects/space_selector_page.ts +++ b/x-pack/test/functional/page_objects/space_selector_page.ts @@ -203,9 +203,7 @@ export class SpaceSelectorPageObject extends FtrService { async goToSpecificSpace(spaceId: string) { return await this.retry.try(async () => { this.log.info(`SpaceSelectorPage:goToSpecificSpace(${spaceId})`); - // await this.testSubjects.click(`${spaceId}-selectableSpaceItem`); - const spaceOption = await this.testSubjects.find(`${spaceId}-selectableSpaceItem`); - await spaceOption?.click(); + await this.testSubjects.click(`${spaceId}-selectableSpaceItem`); await this.common.sleep(1000); }); }