Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[workspace]Add cypress for breadcrumbs #1642

Merged
merged 10 commits into from
Nov 18, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,6 @@ const testFixtureHandler = new TestFixtureHandler(
Cypress.env('openSearchUrl')
);

const indexSet = [
'logstash-2015.09.22',
'logstash-2015.09.21',
'logstash-2015.09.20',
];

describe('query enhancement queries', { scrollBehavior: false }, () => {
before(() => {
CURRENT_TENANT.newTenant = 'global';
Expand Down
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
4 changes: 1 addition & 3 deletions cypress/utils/dashboards/query_enhancement/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ Cypress.Commands.add('setSingleLineQueryEditor', (value, submit = true) => {
}
});

Cypress.Commands.add('setQueryLanguage', (value, submit = true) => {
const opts = { log: false };

Cypress.Commands.add('setQueryLanguage', (value) => {
Cypress.log({
name: 'setQueryLanguage',
displayName: 'set language',
Expand Down
Loading