Skip to content

Commit

Permalink
[workspace]Add cypress for breadcrumbs (#1642) (#1650)
Browse files Browse the repository at this point in the history
* imporve link verification to support version

Signed-off-by: Hailong Cui <[email protected]>

* imporve link verification to support version

Signed-off-by: Hailong Cui <[email protected]>

* add breadcrumbs test

Signed-off-by: Hailong Cui <[email protected]>

* add breadcrumbs test

Signed-off-by: Hailong Cui <[email protected]>

* fix link with version

Signed-off-by: Hailong Cui <[email protected]>

* fix test failure

Signed-off-by: Hailong Cui <[email protected]>

* fix lint

Signed-off-by: Hailong Cui <[email protected]>

* fix test

Signed-off-by: Hailong Cui <[email protected]>

* wait for page load complete

Signed-off-by: Hailong Cui <[email protected]>

---------

Signed-off-by: Hailong Cui <[email protected]>
(cherry picked from commit bd7a18f)

Co-authored-by: Hailong Cui <[email protected]>
  • Loading branch information
opensearch-trigger-bot[bot] and Hailong-am authored Nov 18, 2024
1 parent 1970290 commit 068bda7
Show file tree
Hide file tree
Showing 4 changed files with 209 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -118,34 +118,38 @@ if (Cypress.env('WORKSPACE_ENABLED')) {
cy.get('.euiLink')
.contains('Quickstart guide')
.should('be.visible')
.and(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/quickstart/'
);
.and('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/quickstart\/$/
);
});
cy.get('.euiLink')
.contains('Building data visualizations')
.should('be.visible')
.and(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/visualize/viz-index/'
);
.and('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/visualize\/viz-index\/$/
);
});
cy.get('.euiLink')
.contains('Creating dashboards')
.should('be.visible')
.and(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/dashboard/index/'
);
.and('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/dashboard\/index\/$/
);
});
cy.contains('Learn more in Documentation')
.should('be.visible')
.and(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/index/'
);
.and('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/index\/$/
);
});
});
});
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import { MiscUtils } from '@opensearch-dashboards-test/opensearch-dashboards-test-library';

const miscUtils = new MiscUtils(cy);
const workspaceName = `test_workspace_analytics_${Math.random()
.toString(36)
.substring(7)}`;
let workspaceDescription = 'This is a analytics workspace description.';
let workspaceId;
let workspaceFeatures = ['use-case-all'];

if (Cypress.env('WORKSPACE_ENABLED')) {
const createWorkspace = () => {
cy.createWorkspace({
name: workspaceName,
description: workspaceDescription,
features: workspaceFeatures,
settings: {
permissions: {
library_write: { users: ['%me%'] },
write: { users: ['%me%'] },
},
},
}).then((value) => {
workspaceId = value;
});
};

describe('Breadcrumbs in workspace', () => {
before(() => {
cy.deleteWorkspaceByName(workspaceName);
createWorkspace();
});

after(() => {
if (workspaceId) {
cy.deleteWorkspaceById(workspaceId);
}
});

it('should show workspace name in breadcrumbs', () => {
miscUtils.visitPage(`w/${workspaceId}/app/objects`);

// get div with class newTopNavHeader
cy.get('.newTopNavHeader').within(() => {
cy.getElementByTestId('breadcrumb first')
.should('exist')
.within(() => {
// Check for the icon
cy.getElementByTestId(`${workspaceId}-icon`).should('exist');
// Check for the workspace name
cy.contains(workspaceName).should('exist').click();
// click on breadcrumbs goes to overview page
cy.url().should('include', `w/${workspaceId}/app/all_overview`);
});
});
});

it('should show breadcrumbs in recent popover', () => {
miscUtils.visitPage(`w/${workspaceId}/app/workspace_detail`);
// wait for page load
cy.contains('h1', 'Workspace details');
// waiting for page load completely
cy.getElementByTestId('recentItemsSectionButton').should(
'not.have.class',
'headerRecentItemsButton--loadingIndicator',
{
timeout: 10000,
}
);
cy.wait(1000);
cy.getElementByTestId('recentItemsSectionButton').click({ force: true });

cy.get('.euiPopover__panel').within(() => {
cy.getElementByTestId('breadcrumbs').within(() => {
// Check for the icon
cy.getElementByTestId(`${workspaceId}-icon`).should('exist');
// Check for the workspace name
cy.contains(workspaceName).should('exist');
// page title exists in breadcrumbs
cy.contains('Workspace details');
});
});
});
});

describe('Breadcrumbs out of workspace', () => {
it('breadcrumbs display correctly in settings and setup', () => {
miscUtils.visitPage('app/workspace_list');
cy.contains('h1', 'Workspaces');

cy.get('.newTopNavHeader').within(() => {
cy.getElementByTestId('breadcrumb first')
.should('exist')
.within(() => {
// Check for the use case name
cy.contains('Settings and setup').click();
cy.url().should('include', 'app/settings_landing');
});
});

// check breadcrumbs in recent popover
cy.getElementByTestId('recentItemsSectionButton').should(
'not.have.class',
'headerRecentItemsButton--loadingIndicator',
{
timeout: 10000,
}
);
cy.wait(1000);
cy.getElementByTestId('recentItemsSectionButton').click({ force: true });

cy.get('.euiPopover__panel').within(() => {
cy.getElementByTestId('breadcrumbs').within(() => {
cy.contains('Settings and setup');
cy.contains('Settings and setup overview');
});
});
});

it('breadcrumbs display correctly in data administration', () => {
miscUtils.visitPage('app/data_administration_landing');
cy.contains('h1', 'Data administration overview');

cy.get('.newTopNavHeader').within(() => {
cy.getElementByTestId('breadcrumb first')
.should('exist')
.within(() => {
// Check for the use case name
cy.contains('Data administration');
});
});

// check breadcrumbs in recent popover
cy.getElementByTestId('recentItemsSectionButton').should(
'not.have.class',
'headerRecentItemsButton--loadingIndicator',
{
timeout: 10000,
}
);
cy.wait(1000);
cy.getElementByTestId('recentItemsSectionButton').click({ force: true });

cy.get('.euiPopover__panel').within(() => {
cy.getElementByTestId('breadcrumbs').within(() => {
cy.contains('Data administration');
cy.contains('Data administration overview');
});
});
});
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -127,27 +127,30 @@ if (Cypress.env('WORKSPACE_ENABLED')) {
// get a link with text as Quickstart guide
cy.get('a')
.contains('Quickstart guide')
.should(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/quickstart/'
);
.should('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/^https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/quickstart\/$/
);
});

cy.get('a')
.contains('Building data visualizations')
.should(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/visualize/viz-index/'
);
.should('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/^https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/visualize\/viz-index\/$/
);
});

cy.get('a')
.contains('Creating dashboards')
.should(
'have.attr',
'href',
'https://opensearch.org/docs/latest/dashboards/dashboard/index/'
);
.should('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/^https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/dashboards\/dashboard\/index\/$/
);
});
});
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,16 @@ if (Cypress.env('WORKSPACE_ENABLED')) {
).should('not.exist');

// Contain correct link
cy.contains('a', 'Learn more from documentation').should('exist');
cy.get(
'a[href="https://opensearch.org/docs/latest/opensearch/index/"]'
).should('have.attr', 'target', '_blank');
cy.contains('a', 'Learn more from documentation')
.should('exist')
.should('have.attr', 'target', '_blank')
.and('have.attr', 'href')
.and((href) => {
expect(href).to.match(
/https:\/\/opensearch.org\/docs\/(latest|(\d.)+)\/opensearch\/index\/$/
);
});

cy.contains(
'a',
'Explore live demo environment at playground.opensearch.org'
Expand Down

0 comments on commit 068bda7

Please sign in to comment.