From 73a744dd078935c0abb1a53f06c093f2dd1edc73 Mon Sep 17 00:00:00 2001 From: Anan Zhuang Date: Thu, 14 Oct 2021 15:40:56 +0000 Subject: [PATCH] Add bwc sample tests tests include the following cases: verify default page work verify advanced savings work verify filter and query work Particailly Resolved: https://github.com/opensearch-project/opensearch-build/issues/705 Signed-off-by: Anan Zhuang --- .../bundled-osd/check_advanced_settings.js | 70 ++++++++++ .../bundled-osd/check_default_page.js | 55 ++++++++ .../bundled-osd/check_filter_and_query.js | 132 ++++++++++++++++++ cypress/plugins/index.js | 48 +++++++ cypress/support/commands.js | 51 +++++++ cypress/support/index.js | 54 +++++++ 6 files changed, 410 insertions(+) create mode 100644 cypress/integration/bundled-osd/check_advanced_settings.js create mode 100644 cypress/integration/bundled-osd/check_default_page.js create mode 100644 cypress/integration/bundled-osd/check_filter_and_query.js create mode 100644 cypress/plugins/index.js create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/index.js diff --git a/cypress/integration/bundled-osd/check_advanced_settings.js b/cypress/integration/bundled-osd/check_advanced_settings.js new file mode 100644 index 000000000000..8ede63d27ea0 --- /dev/null +++ b/cypress/integration/bundled-osd/check_advanced_settings.js @@ -0,0 +1,70 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +import { + MiscUtils, + LoginPage, +} from '@opensearch-dashboards-test/opensearch-dashboards-test-library'; + +const miscUtils = new MiscUtils(cy); +const loginPage = new LoginPage(cy); + +describe('verify the advanced settings are saved', () => { + beforeEach(() => { + miscUtils.visitPage('app/management/opensearch-dashboards/settings'); + loginPage.enterUserName('admin'); + loginPage.enterPassword('admin'); + loginPage.submit(); + }); + + it('the dark mode is on', () => { + cy.get('[data-test-subj="advancedSetting-editField-theme:darkMode"]') + .invoke('attr', 'aria-checked') + .should('eq', 'true'); + }); + + it('the Timeline default columns field is set to 4', () => { + cy.get('[data-test-subj="advancedSetting-editField-timeline:default_columns"]').should( + 'have.value', + 4 + ); + }); + + it('the Timeline Maximum buckets field is set to 4', () => { + cy.get('[data-test-subj="advancedSetting-editField-timeline:max_buckets"]').should( + 'have.value', + 4 + ); + }); +}); diff --git a/cypress/integration/bundled-osd/check_default_page.js b/cypress/integration/bundled-osd/check_default_page.js new file mode 100644 index 000000000000..c65be3f3777c --- /dev/null +++ b/cypress/integration/bundled-osd/check_default_page.js @@ -0,0 +1,55 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +import { + MiscUtils, + LoginPage, +} from '@opensearch-dashboards-test/opensearch-dashboards-test-library'; + +const miscUtils = new MiscUtils(cy); +const loginPage = new LoginPage(cy); + +describe('verify default landing page work for bwc', () => { + beforeEach(() => { + miscUtils.visitPage(''); + loginPage.enterUserName('admin'); + loginPage.enterPassword('admin'); + loginPage.submit(); + }); + + it('the overview page is set as the default landing pag', () => { + cy.url().should('include', '/app/opensearch_dashboards_overview#/'); + cy.contains('Display a different page on log in'); + }); +}); diff --git a/cypress/integration/bundled-osd/check_filter_and_query.js b/cypress/integration/bundled-osd/check_filter_and_query.js new file mode 100644 index 000000000000..bda0b0871eb7 --- /dev/null +++ b/cypress/integration/bundled-osd/check_filter_and_query.js @@ -0,0 +1,132 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +import { + MiscUtils, + CommonUI, + LoginPage, +} from '@opensearch-dashboards-test/opensearch-dashboards-test-library'; + +const commonUI = new CommonUI(cy); +const miscUtils = new MiscUtils(cy); +const loginPage = new LoginPage(cy); + +describe('verify dashboards filter and query work properly for bwc', () => { + beforeEach(() => { + miscUtils.visitPage('app/dashboards#'); + loginPage.enterUserName('admin'); + loginPage.enterPassword('admin'); + loginPage.submit(); + }); + + afterEach(() => { + cy.clearCookies(); + }); + + it('tenant-switch-modal page should show and be clicked', () => { + cy.get('[data-test-subj="tenant-switch-modal"]'); + cy.get('[data-test-subj="confirm"]').click(); + }); + + describe('osx filter and query should work in [Logs] Web Traffic dashboards', () => { + beforeEach(() => { + cy.get('[data-test-subj="dashboardListingTitleLink-[Logs]-Web-Traffic"]').click(); + cy.get('[data-test-subj="breadcrumb last"]') + .invoke('attr', 'title') + .should('eq', '[Logs] Web Traffic'); + }); + + it('osx filter and query should exist and be named correctly', () => { + cy.get('[data-test-subj="saved-query-management-popover-button"]').click(); + cy.get('[data-test-subj="saved-query-management-popover"]') + .find('[class="osdSavedQueryListItem__labelText"]') + .should('have.text', 'test-query') + .click(); + cy.get('[data-test-subj="queryInput"]').should('have.text', 'resp=200'); + cy.get( + '[data-test-subj="filter filter-enabled filter-key-machine.os filter-value-osx filter-unpinned "]' + ) + .should('have.text', 'osx filter') + .click(); + cy.get('[data-test-subj="editFilter"]').click(); + cy.get('[data-test-subj="filterFieldSuggestionList"]') + .find('[data-test-subj="comboBoxInput"]') + .should('have.text', 'machine.os'); + cy.get('[data-test-subj="filterOperatorList"]') + .find('[data-test-subj="comboBoxInput"]') + .should('have.text', 'is'); + cy.get('[data-test-subj="filterParams"]').find('input').should('have.value', 'osx'); + }); + + it('osx filter and query should function correctly', () => { + commonUI.setDateRange('Oct 10, 2021 @ 00:00:00.000', 'Oct 4, 2021 @ 00:00:00.000'); + cy.get('[data-test-subj="saved-query-management-popover-button"]').click(); + cy.get('[data-test-subj="saved-query-management-popover"]') + .find('[class="osdSavedQueryListItem__labelText"]') + .should('have.text', 'test-query') + .click(); + cy.get('[data-test-subj="dashboardPanel"]').each((item) => { + const vsLoader = item.get('[data-test-subj="visualizationLoader"]'); + //[Logs] unique visitors should be 211 + if ( + vsLoader && + vsLoader + .get('[data-test-subj="visualizationLoader"]') + .find('[class="chart-title"]') + .should('have.text', 'Unique Visitors') + ) { + vsLoader.should('have.class', 'chart-label').should('have.text', '211'); + } + //[Logs] vistor chart should show osx 100% + if ( + vsLoader && + vsLoader.get('[data-test-subj="visualizationLoader"]').invoke('css', 'data-title') === + '[Logs] Visitors by OS' + ) { + vsLoader.should('have.class', 'label').should('have.text', 'osx (100%)'); + } + //[Logs] Response chart should show 200 label + if ( + vsLoader && + vsLoader.get('[data-test-subj="visualizationLoader"]').invoke('css', 'data-title') === + '[Logs] Response Codes Over Time + Annotations' + ) { + vsLoader + .should('have.class', 'echLegendItem__label echLegendItem__label--clickable') + .should('have.text', '200'); + } + }); + }); + }); +}); diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js new file mode 100644 index 000000000000..fcc23557b3e7 --- /dev/null +++ b/cypress/plugins/index.js @@ -0,0 +1,48 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +// eslint-disable-next-line no-unused-vars +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +}; diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 000000000000..685474731025 --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,51 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) diff --git a/cypress/support/index.js b/cypress/support/index.js new file mode 100644 index 000000000000..849d6dca3329 --- /dev/null +++ b/cypress/support/index.js @@ -0,0 +1,54 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + * Modifications Copyright OpenSearch Contributors. See + * GitHub history for details. + */ + +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; + +// Alternatively you can use CommonJS syntax: +// require('./commands') + +const resizeObserverLoopErrRe = /^[^(ResizeObserver loop limit exceeded)]/; +Cypress.on('uncaught:exception', (err) => { + /* returning false here prevents Cypress from failing the test */ + if (resizeObserverLoopErrRe.test(err.message)) { + return false; + } +});