Skip to content

Commit

Permalink
update FTR
Browse files Browse the repository at this point in the history
  • Loading branch information
saarikabhasi committed Feb 4, 2025
1 parent e47735c commit 42e6684
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import { IndexTable } from './index_table';
export const IndexList: React.FunctionComponent<RouteComponentProps> = ({ history }) => {
const {
core: { executionContext, chrome },
services: { extensionsService },
plugins: { cloud },
} = useAppContext();

Expand Down
5 changes: 5 additions & 0 deletions x-pack/test/functional/page_objects/index_management_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,11 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext)
) {
await testSubjects.click(tab);
},
async expectBreadcrumbNavigationToHaveBreadcrumb(breadcrumbName: string) {
await testSubjects.existOrFail('euiBreadcrumb');
expect(await testSubjects.getVisibleText('breadcrumb first')).to.contain("Stack Management");
expect(await testSubjects.getVisibleText('breadcrumb last')).to.contain(breadcrumbName);
},
},
async clickCreateIndexButton() {
await testSubjects.click('createIndexButton');
Expand Down
21 changes: 13 additions & 8 deletions x-pack/test/functional/page_objects/search_navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import expect from '@kbn/expect';
import type { FtrProviderContext } from '../ftr_provider_context';

export function SearchNavigationProvider({ getService, getPageObjects }: FtrProviderContext) {
const retry = getService('retry');
const { common, indexManagement, header } = getPageObjects([
const { common, indexManagement, header, solutionNavigation, searchIndexDetailsPage } = getPageObjects([
'common',
'indexManagement',
'header',
'solutionNavigation',
'searchIndexDetailsPage'
]);
const testSubjects = getService('testSubjects');

Expand All @@ -35,13 +37,16 @@ export function SearchNavigationProvider({ getService, getPageObjects }: FtrProv
}
});
},
async navigateToIndexDetailPage(indexName: string) {
await retry.tryForTime(60 * 1000, async () => {
await common.navigateToApp(`elasticsearch/indices/index_details/${indexName}`, {
shouldLoginIfPrompted: false,
});

async navigateToIndexDetailPage(indexName: string, spaceId?:number) {
await solutionNavigation.sidenav.expectLinkExists({ text: 'Index Management' });
await solutionNavigation.sidenav.clickLink({
deepLinkId: 'management:index_management',
});
await testSubjects.existOrFail('searchIndicesDetailsPage', { timeout: 2000 });
await searchIndexDetailsPage.openIndicesDetailFromIndexManagementIndicesListTable(
0
);
await testSubjects.existOrFail('searchIndicesDetailsPage', { timeout: 10000 });
},
async navigateToInferenceManagementPage(expectRedirect: boolean = false) {
await common.navigateToApp('searchInferenceEndpoints', {
Expand Down
138 changes: 68 additions & 70 deletions x-pack/test/functional_search/tests/search_index_details.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
'common',
'indexManagement',
'searchNavigation',
'solutionNavigation',
]);
const es = getService('es');
const browser = getService('browser');
Expand All @@ -27,7 +28,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {

describe('Search index details page', function () {
describe('Solution Nav - Search', function () {
let cleanUp: () => Promise<unknown>;
let cleanUpSpace: () => Promise<unknown>;
let spaceCreated: { id: string } = { id: '' };

before(async () => {
Expand All @@ -37,28 +38,70 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});

// Create a space with the search solution and navigate to its home page
({ cleanUp, space: spaceCreated } = await spaces.create({
name: 'search-ftr',
({ cleanUp: cleanUpSpace, space: spaceCreated } = await spaces.create({
name: 'search-index-details-ftr',
solution: 'es',
}));

await pageObjects.searchApiKeys.deleteAPIKeys();
await es.indices.create({ index: indexName });
});

after(async () => {
// Clean up space created
await cleanUp();
await cleanUpSpace();
await esDeleteAllIndices(indexName);
});
describe('index management index list page', () => {
beforeEach(async () => {
// Navigate to search solution space
await browser.navigateTo(spaces.getRootUrl(spaceCreated.id));
// Navigate to index management app
await pageObjects.common.navigateToApp('indexManagement', {
basePath: `s/${spaceCreated.id}`,
});
// Navigate to the indices tab
await pageObjects.indexManagement.changeTabs('indicesTab');
await pageObjects.header.waitUntilLoadingHasFinished();
});
describe('manage index action', () => {
beforeEach(async () => {
await pageObjects.indexManagement.manageIndex(indexName);
await pageObjects.indexManagement.manageIndexContextMenuExists();
});
it('navigates to overview tab', async () => {
await pageObjects.indexManagement.changeManageIndexTab('showOverviewIndexMenuButton');
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectUrlShouldChangeTo('data');
});

it('navigates to settings tab', async () => {
await pageObjects.indexManagement.changeManageIndexTab('showSettingsIndexMenuButton');
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectUrlShouldChangeTo('settings');
});
it('navigates to mappings tab', async () => {
await pageObjects.indexManagement.changeManageIndexTab('showMappingsIndexMenuButton');
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectUrlShouldChangeTo('mappings');
});
});
describe('can view search index details', function () {
it('renders search index details with no documents', async () => {
await pageObjects.searchIndexDetailsPage.openIndicesDetailFromIndexManagementIndicesListTable(
0
);
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectSearchIndexDetailsTabsExists();
await pageObjects.searchIndexDetailsPage.expectAPIReferenceDocLinkExists();
});
});
});
describe('search index details page', () => {
before(async () => {
// Navigate to the spaces management page which will log us in Kibana
await pageObjects.searchApiKeys.deleteAPIKeys();
await browser.navigateTo(spaces.getRootUrl(spaceCreated.id));
await es.indices.create({ index: indexName });
await pageObjects.searchNavigation.navigateToIndexDetailPage(indexName);
});
after(async () => {
await esDeleteAllIndices(indexName);
await pageObjects.searchNavigation.navigateToIndexDetailPage(indexName, spaceCreated?.id);
});
it('can load index detail page', async () => {
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
Expand Down Expand Up @@ -130,6 +173,12 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
await pageObjects.searchIndexDetailsPage.expectQuickStatsAIMappingsToHaveVectorFields();
});

it('should have breadcrumb navigation', async () => {
await pageObjects.searchIndexDetailsPage.expectBreadcrumbNavigationWithIndexName(
indexName
);
});

it('should show code examples for adding documents', async () => {
await pageObjects.searchIndexDetailsPage.expectAddDocumentCodeExamples();
await pageObjects.searchIndexDetailsPage.expectSelectedLanguage('python');
Expand Down Expand Up @@ -264,61 +313,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});
});

describe('index management index list page', () => {
before(async () => {
await esDeleteAllIndices(indexName);
await es.indices.create({ index: indexName });
});
beforeEach(async () => {
// Navigate to search solution space
await browser.navigateTo(spaces.getRootUrl(spaceCreated.id));
// Navigate to index management app
await pageObjects.common.navigateToApp('indexManagement', {
basePath: `s/${spaceCreated.id}`,
});
// Navigate to the indices tab
await pageObjects.indexManagement.changeTabs('indicesTab');
await pageObjects.header.waitUntilLoadingHasFinished();
});
after(async () => {
await esDeleteAllIndices(indexName);
});
describe('manage index action', () => {
beforeEach(async () => {
await pageObjects.indexManagement.manageIndex(indexName);
await pageObjects.indexManagement.manageIndexContextMenuExists();
});
it('navigates to overview tab', async () => {
await pageObjects.indexManagement.changeManageIndexTab('showOverviewIndexMenuButton');
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectUrlShouldChangeTo('data');
});

it('navigates to settings tab', async () => {
await pageObjects.indexManagement.changeManageIndexTab('showSettingsIndexMenuButton');
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectUrlShouldChangeTo('settings');
});
it('navigates to mappings tab', async () => {
await pageObjects.indexManagement.changeManageIndexTab('showMappingsIndexMenuButton');
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectUrlShouldChangeTo('mappings');
});
});
describe('can view search index details', function () {
it('renders search index details with no documents', async () => {
await pageObjects.searchIndexDetailsPage.openIndicesDetailFromIndexManagementIndicesListTable(
0
);
await pageObjects.searchIndexDetailsPage.expectIndexDetailPageHeader();
await pageObjects.searchIndexDetailsPage.expectSearchIndexDetailsTabsExists();
await pageObjects.searchIndexDetailsPage.expectAPIReferenceDocLinkExists();
});
});
});
});
describe('Classic Nav', function () {
let cleanUp: () => Promise<unknown>;
let cleanUpSpace: () => Promise<unknown>;
let spaceCreated: { id: string } = { id: '' };

before(async () => {
Expand All @@ -327,24 +325,21 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
shouldUseHashForSubUrl: false,
});

// Create a space with the search solution and navigate to its home page
({ cleanUp, space: spaceCreated } = await spaces.create({
name: 'classic-nav',
// Create a space with the classic nav solution and navigate to its home page
({ cleanUp: cleanUpSpace, space: spaceCreated } = await spaces.create({
name: 'search-index-details-classic-nav-ftr',
solution: 'classic',
}));
await pageObjects.searchApiKeys.deleteAPIKeys();
await es.indices.create({ index: indexName });
});

after(async () => {
// Clean up space created
await cleanUp();
await cleanUpSpace();
await esDeleteAllIndices(indexName);
});
describe('index management index list page', () => {
before(async () => {
await esDeleteAllIndices(indexName);
await es.indices.create({ index: indexName });
});
beforeEach(async () => {
// Navigate to search solution space
await browser.navigateTo(spaces.getRootUrl(spaceCreated.id));
Expand Down Expand Up @@ -388,6 +383,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
// click the first index in the table and wait for the index details page
await pageObjects.indexManagement.indexDetailsPage.openIndexDetailsPage(0);
await pageObjects.indexManagement.indexDetailsPage.expectIndexDetailsPageIsLoaded();
await pageObjects.indexManagement.indexDetailsPage.expectBreadcrumbNavigationToHaveBreadcrumb(
'Overview'
);
});
});
});
Expand Down

0 comments on commit 42e6684

Please sign in to comment.