From 33bdfc1abe8f018ee73b092b52d5e2fc47385e37 Mon Sep 17 00:00:00 2001 From: Lin Wang Date: Wed, 12 Jun 2024 17:28:25 +0800 Subject: [PATCH] [Workspace]Add workspace import sample data cases (#1357) * Add workspace import sample data cases Signed-off-by: Lin Wang * Add back data source title Signed-off-by: Lin Wang --------- Signed-off-by: Lin Wang (cherry picked from commit 8f24bfdac104689970ef627704251f9d68f9848f) --- ...ds_workspace_import_sample_data_to.spec.js | 141 ++++++++++++++++++ cypress/utils/commands.js | 5 +- 2 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 cypress/integration/core-opensearch-dashboards/opensearch-dashboards/workspace-plugin/mds_workspace_import_sample_data_to.spec.js diff --git a/cypress/integration/core-opensearch-dashboards/opensearch-dashboards/workspace-plugin/mds_workspace_import_sample_data_to.spec.js b/cypress/integration/core-opensearch-dashboards/opensearch-dashboards/workspace-plugin/mds_workspace_import_sample_data_to.spec.js new file mode 100644 index 000000000..0486c799b --- /dev/null +++ b/cypress/integration/core-opensearch-dashboards/opensearch-dashboards/workspace-plugin/mds_workspace_import_sample_data_to.spec.js @@ -0,0 +1,141 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +const MDSEnabled = Cypress.env('DATASOURCE_MANAGEMENT_ENABLED'); + +if (Cypress.env('WORKSPACE_ENABLED')) { + describe('import sample data to workspace', () => { + let workspaceId; + let dataSourceId; + let dataSourceTitle; + const workspaceName = `workspace-${new Date().getTime()}`; + + const getTitleWithDataSource = (title) => { + if (!dataSourceTitle) { + return title; + } + return `${title}_${dataSourceTitle}`; + }; + + before(() => { + if (MDSEnabled) { + cy.createDataSourceNoAuth().then((result) => { + dataSourceId = result[0]; + dataSourceTitle = result[1]; + }); + } + cy.createWorkspace({ name: workspaceName }).then((id) => { + workspaceId = id; + }); + }); + + after(() => { + if (workspaceId) { + cy.deleteWorkspaceById(workspaceId); + } + if (dataSourceId) { + cy.deleteDataSource(dataSourceId); + } + }); + + beforeEach(() => { + cy.visit(`/w/${workspaceId}/app/import_sample_data`); + cy.waitForLoader(); + if (MDSEnabled) { + cy.selectFromDataSourceSelector(dataSourceTitle, dataSourceId); + } + }); + + it('should show Add data buttons if sample data not installed', () => { + cy.getElementByTestId('addSampleDataSetecommerce').should('be.visible'); + cy.getElementByTestId('addSampleDataSetflights').should('be.visible'); + cy.getElementByTestId('addSampleDataSetlogs').should('be.visible'); + }); + + it('should show remove buttons after sample data installed', () => { + cy.getElementByTestId('addSampleDataSetecommerce').click(); + cy.getElementByTestId('addSampleDataSetflights').click(); + cy.getElementByTestId('addSampleDataSetlogs').click(); + + cy.getElementByTestId('removeSampleDataSetecommerce').should( + 'be.visible' + ); + cy.getElementByTestId('removeSampleDataSetflights').should('be.visible'); + cy.getElementByTestId('removeSampleDataSetlogs').should('be.visible'); + + cy.getElementByTestId('removeSampleDataSetecommerce').click(); + cy.getElementByTestId('removeSampleDataSetflights').click(); + cy.getElementByTestId('removeSampleDataSetlogs').click(); + }); + + it('should be able to visit ecommerce dashboard', () => { + cy.getElementByTestId('addSampleDataSetecommerce').click(); + + cy.getElementByTestId('launchSampleDataSetecommerce') + .should('be.visible') + .click(); + + cy.location('href').should('include', `/w/${workspaceId}/app/dashboards`); + cy.getElementByTestId('breadcrumb last') + .contains(getTitleWithDataSource('[eCommerce] Revenue Dashboard')) + .should('be.visible'); + cy.get( + `[data-title="${getTitleWithDataSource('[eCommerce] Total Revenue')}"]` + ).should('not.contain', 'No results found'); + cy.visit(`/w/${workspaceId}/app/import_sample_data`); + + if (MDSEnabled) { + cy.selectFromDataSourceSelector(dataSourceTitle, dataSourceId); + } + cy.getElementByTestId('removeSampleDataSetecommerce').click(); + }); + + it('should be able to visit flights dashboards', () => { + cy.getElementByTestId('addSampleDataSetflights').click(); + + cy.getElementByTestId('launchSampleDataSetflights') + .should('be.visible') + .click(); + + cy.location('href').should('include', `/w/${workspaceId}/app/dashboards`); + cy.getElementByTestId('breadcrumb last').contains( + getTitleWithDataSource('[Flights] Global Flight Dashboard') + ); + cy.get( + `[data-title="${getTitleWithDataSource('[Flights] Flight Delays')}"]` + ).should('not.contain', 'No results found'); + cy.visit(`/w/${workspaceId}/app/import_sample_data`); + + if (MDSEnabled) { + cy.selectFromDataSourceSelector(dataSourceTitle, dataSourceId); + } + cy.getElementByTestId('removeSampleDataSetflights').click(); + }); + + it('should be able to visit logs dashboards', () => { + cy.getElementByTestId('addSampleDataSetlogs').click(); + + cy.getElementByTestId('launchSampleDataSetlogs') + .should('be.visible') + .click(); + + cy.location('href').should('include', `/w/${workspaceId}/app/dashboards`); + cy.getElementByTestId('breadcrumb last').contains( + getTitleWithDataSource('[Logs] Web Traffic') + ); + cy.get( + `[data-title="${getTitleWithDataSource( + '[Logs] Unique Visitors vs. Average Bytes' + )}"]` + ).should('not.contain', 'No results found'); + cy.visit(`/w/${workspaceId}/app/import_sample_data`); + + if (MDSEnabled) { + cy.selectFromDataSourceSelector(dataSourceTitle, dataSourceId); + } + cy.getElementByTestId('removeSampleDataSetlogs').click(); + }); + }); +} diff --git a/cypress/utils/commands.js b/cypress/utils/commands.js index c0595251a..96d8dfc1d 100644 --- a/cypress/utils/commands.js +++ b/cypress/utils/commands.js @@ -591,9 +591,12 @@ Cypress.Commands.add( }); cy.getElementByTestId('dataSourceSelectorComboBox') .find('input') - .clear('{backspace}') + .clear('{backspace}'); + cy.getElementByTestId('dataSourceSelectorComboBox') + .find('input') .type(dataSourceTitle); cy.wait(1000); + let dataSourceElement; if (dataSourceId) { dataSourceElement = cy.get(`#${dataSourceId}`);