diff --git a/.cypress/integration/7_app_analytics.spec.js b/.cypress/integration/7_app_analytics.spec.js index e3a41a49b..d3ee0ef8f 100644 --- a/.cypress/integration/7_app_analytics.spec.js +++ b/.cypress/integration/7_app_analytics.spec.js @@ -4,6 +4,7 @@ */ /// +import { suppressResizeObserverIssue } from '../utils/constants'; import { delay, @@ -33,13 +34,14 @@ import { TYPING_DELAY, timeoutDelay } from '../utils/app_constants'; -import { suppressResizeObserverIssue } from '../utils/constants'; + +suppressResizeObserverIssue();//needs to be in file once describe('Creating application', () => { beforeEach(() => { moveToCreatePage(); }); - + it('Suggests correct autocompletion', () => { cy.get('[data-test-subj="logSourceAccordion"]').trigger('mouseover').click(); cy.get('[data-test-subj="searchAutocompleteTextArea"]').click(); @@ -85,7 +87,7 @@ describe('Creating application', () => { cy.get('[data-test-subj="createButton"]').should('not.be.disabled'); cy.get('[data-test-subj="createAndSetButton"]').should('be.disabled'); expectMessageOnHover('createAndSetButton', 'Log source is required to set availability.'); - cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(baseQuery, {delay: TYPING_DELAY}); + cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(' ' + baseQuery); cy.get('[data-test-subj="traceGroupsAccordion"]').trigger('mouseover').click(); cy.get('[data-test-subj="traceGroupsComboBox"]').scrollIntoView().type('http'); cy.get('.euiFilterSelectItem').contains(trace_one).trigger('click'); @@ -93,7 +95,7 @@ describe('Creating application', () => { cy.get('[data-test-subj="traceGroupsCountBadge"]').should('contain', '2'); cy.get('[data-test-subj="createButton"]').should('not.be.disabled'); cy.get('[data-test-subj="createButton"]').click(); - cy.wait(delay * 3); + cy.get('.euiTableRow').should('have.length.lessThan', 2);//Replaces Wait cy.get('[data-test-subj="applicationTitle"]').should('contain', nameOne); cy.get('[data-test-subj="app-analytics-panelTab"]').click(); cy.get('[data-test-subj="addFirstVisualizationText"]').should('exist'); @@ -112,10 +114,12 @@ describe('Creating application', () => { cy .get('[data-test-subj="searchAutocompleteTextArea"]') .focus() - .type(baseQuery, {delay: TYPING_DELAY}); + .type(' ' + baseQuery); cy.get('[data-test-subj="servicesEntitiesAccordion"]').trigger('mouseover').click(); cy.get('[data-test-subj="servicesEntitiesComboBox"]').scrollIntoView(); + cy.wait(delay*3); cy.get('[data-test-subj="servicesEntitiesComboBox"]').trigger('mouseover').click(); + cy.wait(delay*3);//Dropdown menu needs to work properly cy.get('.euiFilterSelectItem').contains(service_one).click({ force: true }); cy.get('[data-test-subj="servicesEntitiesCountBadge"]').should('contain', '1'); cy.get('[data-test-subj="traceGroupsAccordion"]').trigger('mouseover').click(); @@ -124,7 +128,6 @@ describe('Creating application', () => { cy.get('.euiFilterSelectItem').contains(trace_two).trigger('click'); cy.get('[data-test-subj="traceGroupsCountBadge"]').should('contain', '2'); cy.reload(); - cy.wait(delay); cy.get('[data-test-subj="nameFormRow"]').find('.euiFieldText').should('contain.value', nameOne); cy.get('[data-test-subj="descriptionFormRow"]').find('.euiFieldText').should('contain.value', description); cy.get('[data-test-subj="logSourceAccordion"]').trigger('mouseover').click(); @@ -136,7 +139,7 @@ describe('Creating application', () => { it('Shows clear modals before clearing', () => { cy.get('[data-test-subj="logSourceAccordion"]').trigger('mouseover').click(); cy.get('[data-test-subj="clearLogSourceButton"]').should('be.disabled'); - cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(baseQuery, {delay: TYPING_DELAY}); + cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(' ' + baseQuery); cy.get('[data-test-subj="clearLogSourceButton"]').click(); cy.get('.euiButton--danger').contains('Clear').click(); cy.get('[data-test-subj="searchAutocompleteTextArea"]').should('contain.value', ''); @@ -159,25 +162,31 @@ describe('Creating application', () => { }); it('Saves time range for each application', () => { + cy.wait(delay);//Fail to load without cy.get('[data-test-subj="nameFormRow"]').type(nameTwo); cy.get('[data-test-subj="logSourceAccordion"]').trigger('mouseover').click(); - cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(baseQuery, {delay: TYPING_DELAY}); + cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(' ' +baseQuery); cy.get('[data-test-subj="createButton"]').should('not.be.disabled'); cy.get('[data-test-subj="createButton"]').click(); + cy.get('.euiTableRow').should('have.length.lessThan', 1); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameTwo); changeTimeTo24('weeks'); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 weeks'); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); - cy.wait(delay); + cy.get('.euiBreadcrumb[href="#/"]').click(); + cy.get('.euiTableRow').should('have.length.greaterThan', 1); cy.get(`[data-test-subj="${nameOne}ApplicationLink"]`).click(); + cy.wait(delay*3); + cy.get('.euiTableRow').should('have.length.lessThan', 1); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameOne); changeTimeTo24('months'); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 months'); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); + cy.get('.euiBreadcrumb[href="#/"]').click(); + cy.get('.euiTableRow').should('have.length.greaterThan', 1); cy.get(`[data-test-subj="${nameTwo}ApplicationLink"]`).click(); + cy.get('.euiTableRow').should('have.length.lessThan', 1); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameTwo); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 weeks'); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); + cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-applications#/`); cy.get(`[data-test-subj="${nameOne}ApplicationLink"]`).click(); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameOne); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 months'); @@ -190,18 +199,20 @@ describe('Setting availability', () => { cy.get('[data-test-subj="nameFormRow"]').type(nameThree); cy.get('[data-test-subj="logSourceAccordion"]').trigger('mouseover').click(); cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus(); - cy.focused().type('source = ', { delay: TYPING_DELAY }); + cy.focused().type(' source = ',); cy.focused().type('{enter}'); - cy.get('[data-test-subj="createAndSetButton"]').click(); + cy.wait(delay);//needed for page to create correctly + cy.get('[data-test-subj="createAndSetButton"]').click({ force: true }); + cy.get('.euiTableRow').should('have.length.lessThan', 1); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameThree); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); + cy.get('.euiBreadcrumb[href="#/"]').click(); cy.get('[data-test-subj="setAvailabilityHomePageLink"]').first().click(); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameThree); cy.get('.euiTab-isSelected[id="app-analytics-log"]').should('exist', { timeout: timeoutDelay }); cy.get('[data-test-subj="searchAutocompleteTextArea"]').should('contain.value', availability_default); cy.get('[id="explorerPlotComponent"]').should('exist'); cy.get('.euiTab-isSelected[id="availability-panel"]').should('exist'); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); + cy.get('.euiBreadcrumb[href="#/"]').click(); cy.get(`[data-test-subj="${nameThree}ApplicationLink"]`).click(); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameThree); cy.get('[data-test-subj="app-analytics-configTab"]').click(); @@ -219,12 +230,13 @@ describe('Viewing application', () => { }); it('Has working breadcrumbs', () => { + cy.wait(delay);//List not loading without cy.get('.euiBreadcrumb').contains(nameOne).click(); cy.get('[data-test-subj="applicationTitle"]').should('contain', nameOne); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); + cy.get('.euiBreadcrumb[href="#/"]').click(); cy.get('[data-test-subj="applicationHomePageTitle"]').should('contain', 'Applications'); - cy.get('.euiBreadcrumb[href="observability-dashboards#/"]').click(); - cy.get('[data-test-subj="eventHomePageTitle"]').should('contain', 'Event analytics'); + cy.get('.euiBreadcrumb[href="observability-logs#/"]').click(); + cy.get('[data-test-subj="eventHomePageTitle"]').should('contain', 'Logs'); }); it('Shares time range among tabs', () => { @@ -233,7 +245,6 @@ describe('Viewing application', () => { cy.get('[data-test-subj="app-analytics-serviceTab"]').click(); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 months'); cy.get('[data-test-subj="app-analytics-traceTab"]').click(); - suppressResizeObserverIssue(); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 months'); cy.get('[data-test-subj="app-analytics-logTab"]').click(); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 months'); @@ -249,6 +260,7 @@ describe('Viewing application', () => { }); it('Adds filter when Trace group name is clicked', () => { + cy.wait(delay);//List not loading without cy.get('[data-test-subj="app-analytics-overviewTab"]').click(); cy.get('[data-test-subj="dashboard-table-trace-group-name-button"]').contains('client_create_order').click(); cy.get('.euiTableRow').should('have.length', 1, { timeout: timeoutDelay }); @@ -260,9 +272,7 @@ describe('Viewing application', () => { it('Opens service detail flyout when Service Name is clicked', () => { cy.get('[data-test-subj="app-analytics-serviceTab"]').click(); - cy.wait(delay); cy.get('.euiLink').contains('authentication').click(); - suppressResizeObserverIssue(); cy.get('[data-test-subj="serviceDetailFlyoutTitle"]').should('be.visible'); cy.get('[data-test-subj="serviceDetailFlyout"]').within(($flyout) => { cy.get('[data-test-subj="Number of connected servicesDescriptionList"]').should('contain', '3'); @@ -273,34 +283,29 @@ describe('Viewing application', () => { cy.get('[data-test-subj="spanDetailFlyout"]').contains('Span detail').should('be.visible'); cy.get('[data-test-subj="ServiceDescriptionList"]').should('contain', 'authentication'); cy.get('[data-test-subj="euiFlyoutCloseButton"]').click(); - cy.get('[data-test-subj="serviceDetailFlyout"]').should('not.be.visible'); - cy.get('[data-test-subj="spanDetailFlyout"]').should('not.be.visible'); + cy.get('[data-test-subj="serviceDetailFlyout"]').should('not.exist'); + cy.get('[data-test-subj="spanDetailFlyout"]').should('not.exist'); }); it('Opens trace detail flyout when Trace ID is clicked', () => { cy.get('[data-test-subj="app-analytics-traceTab"]').click(); - suppressResizeObserverIssue(); - cy.wait(delay); cy.get('[title="03f9c770db5ee2f1caac0afc36db49ba"]').click(); cy.get('[data-test-subj="traceDetailFlyoutTitle"]').should('be.visible'); cy.get('[data-test-subj="traceDetailFlyout"]').within(($flyout) => { cy.get('[data-test-subj="LatencyDescriptionList"]').should('contain', '224.99'); }); cy.get('[data-test-subj="euiFlyoutCloseButton"]').click(); - cy.wait(delay); - cy.get('[data-test-subj="traceDetailFlyout"]').should('not.be.visible'); + cy.get('[data-test-subj="traceDetailFlyout"]').should('not.exist'); cy.get('[title="03f9c770db5ee2f1caac0afc36db49ba"]').click(); cy.get('[data-text="Span list"]').click(); - cy.wait(delay); cy.get('[data-test-subj="dataGridRowCell"] button').contains('d67c5bb617ba9203').click(); cy.get('[data-test-subj="spanDetailFlyout"]').should('be.visible'); cy.get('[data-test-subj="euiFlyoutCloseButton"]').click(); - cy.get('[data-test-subj="spanDetailFlyout"]').should('not.be.visible'); + cy.get('[data-test-subj="spanDetailFlyout"]').should('not.exist'); }); it('Opens span detail flyout when Span ID is clicked', () => { cy.get('[data-test-subj="app-analytics-traceTab"]').click(); - suppressResizeObserverIssue(); cy.wait(delay); cy.get('[data-test-subj="dataGridRowCell"]').contains('5ff3516909562c60').click(); cy.get('[data-test-subj="spanDetailFlyout"]').should('be.visible'); @@ -326,18 +331,14 @@ describe('Viewing application', () => { it('Saves visualization #1 to panel', () => { cy.get('[data-test-subj="app-analytics-panelTab"]').click(); cy.get('[data-test-subj="addVisualizationButton"]').first().click(); - cy.wait(delay); cy.get('[id="explorerPlotComponent"]').should('exist'); cy.get('[data-test-subj="searchAutocompleteTextArea"]').click(); cy.get('.aa-List').find('.aa-Item').should('have.length', 11); cy.get('[data-test-subj="searchAutocompleteTextArea"]').focus().type(query_one, {delay: TYPING_DELAY}); changeTimeTo24('months'); - cy.wait(delay * 2); cy.get('[data-test-subj="main-content-visTab"]').click(); - suppressResizeObserverIssue(); cy.get('[data-test-subj="eventExplorer__saveManagementPopover"]').click(); cy.get('[data-test-subj="eventExplorer__querySaveName"]').click().type(visOneName); - cy.wait(delay); cy.get('[data-test-subj="eventExplorer__querySaveConfirm"]').click(); cy.wait(delay); cy.get('[data-test-subj="app-analytics-panelTab"]').click(); @@ -351,12 +352,14 @@ describe('Viewing application', () => { cy.get('[data-test-subj="app-analytics-panelTab"]').click(); cy.get('[aria-label="actionMenuButton"]').click(); cy.get('[data-test-subj="editVizContextMenuItem"]').click(); - suppressResizeObserverIssue(); cy.get('[data-test-subj="superDatePickerShowDatesButton"]').should('contain', 'Last 24 months'); cy.get('.euiTab[id="availability-panel"]').click(); - cy.get('[title="Bar"]').click(); - cy.focused().type('{downArrow}'); + + cy.wait(delay); + cy.get('[data-test-subj="comboBoxInput"]').click(); + cy.get('[data-test-subj="comboBoxOptionsList "] button span').contains('Time series').click({ force: true }); cy.focused().type('{enter}'); + cy.get('[data-test-subj="addAvailabilityButton"]').click(); cy.get('[data-test-subj="euiColorPickerAnchor"]').click(); cy.get('[aria-label="Select #54B399 as the color"]').click(); @@ -376,7 +379,7 @@ describe('Viewing application', () => { cy.get('[id="explorerPlotComponent"]').should('exist'); cy.get('[class="lines"]').should('exist'); cy.get('.textpoint').contains('Available').should('exist'); - cy.get('.euiBreadcrumb[href="#/application_analytics"]').click(); + cy.get('.euiBreadcrumb[href="#/"]').click(); cy.get('[data-test-subj="AvailableAvailabilityBadge"]').should('contain', 'Available'); cy.get('[data-test-subj="AvailableAvailabilityBadge"][style="background-color: rgb(84, 179, 153); color: rgb(0, 0, 0);"]').should('exist'); }); @@ -389,12 +392,10 @@ describe('Viewing application', () => { cy.get('[data-test-subj="superDatePickerApplyTimeButton"]').click(); cy.wait(delay); cy.get('[data-test-subj="main-content-visTab"]').click(); - suppressResizeObserverIssue(); cy.get('.euiTab[id="availability-panel"]').click(); - cy.get('[title="Bar"]').click(); - cy.focused().type('{downArrow}'); - cy.focused().type('{enter}'); cy.wait(delay); + cy.get('[data-test-subj="comboBoxInput"]').click(); + cy.get('[data-test-subj="comboBoxOptionsList "] button span').contains('Time series').click({ force: true }); cy.get('[data-test-subj="addAvailabilityButton"]').click(); cy.get('[data-test-subj="euiColorPickerAnchor"]').click(); cy.get('[aria-label="Select #9170B8 as the color"]').click(); @@ -483,7 +484,7 @@ describe('Separate from other plugins', () => { it('Hides application visualizations in Operational Panels', () => { cy.visit( - `${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/operational_panels/` + `${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/` ); cy.get('[data-test-subj="operationalPanelsActionsButton"]', { timeout: timeoutDelay }).click(); cy.get('[data-test-subj="addSampleContextMenuItem"]', { timeout: timeoutDelay }).click(); @@ -499,7 +500,7 @@ describe('Separate from other plugins', () => { it('Hides application panels in Operational Panels', () => { cy.visit( - `${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/operational_panels/` + `${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/` ); cy.get('[data-test-subj="operationalPanelSearchBar"]', { timeout: timeoutDelay }).type(`${nameOne}'s Panel`, {delay: TYPING_DELAY}); cy.get('.euiTableCellContent__text').contains('No items found').should('exist'); @@ -589,7 +590,6 @@ describe('Application Analytics home page', () => { cy.get('[data-test-subj="deleteApplicationContextMenuItem"]').click(); cy.get('[data-test-subj="popoverModal__deleteTextInput"]').type('delete'); cy.get('[data-test-subj="popoverModal__deleteButton"').click(); - cy.wait(delay); cy.get('.euiToast').contains(`Applications successfully deleted!`); cy.get(`[data-test-subj="${newName}ApplicationLink"]`).should('not.exist'); }); diff --git a/.cypress/utils/app_constants.js b/.cypress/utils/app_constants.js index 4d20359f4..1ea09e351 100644 --- a/.cypress/utils/app_constants.js +++ b/.cypress/utils/app_constants.js @@ -3,31 +3,27 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { suppressResizeObserverIssue } from './constants'; - export const delay = 1000; export const timeoutDelay = 30000; -export const TYPING_DELAY = 500; +export const TYPING_DELAY = 150; export const moveToHomePage = () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/application_analytics/`); + cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-applications#/`); cy.wait(delay * 3); cy.get('.euiTitle').contains('Applications').should('exist'); }; export const moveToCreatePage = () => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/application_analytics/`); - cy.get('.euiButton[href="#/application_analytics/create"]').eq(0).click(); - suppressResizeObserverIssue(); + cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-applications#/`); + cy.get('.euiButton[href="#/create"]').eq(0).click(); cy.get('[data-test-subj="createPageTitle"]').should('contain', 'Create application'); }; export const moveToApplication = (name) => { - cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-dashboards#/application_analytics/`); - suppressResizeObserverIssue(); - cy.wait(delay * 6); + cy.visit(`${Cypress.env('opensearchDashboards')}/app/observability-applications#/`); + cy.get('.euiTableRow').should('have.length.greaterThan', 0);//Replaces Wait cy.get(`[data-test-subj="${name}ApplicationLink"]`).click(); - cy.wait(delay); + cy.get('.euiTableRow').should('have.length.lessThan', 1);//Replaces Wait cy.get('[data-test-subj="applicationTitle"]').should('contain', name); changeTimeTo24('years'); }; @@ -36,17 +32,14 @@ export const moveToEditPage = () => { moveToApplication(nameOne); cy.get('[data-test-subj="app-analytics-configTab"]').click(); cy.get('[data-test-subj="editApplicationButton"]').click(); - suppressResizeObserverIssue(); cy.wait(delay); cy.get('[data-test-subj="createPageTitle"]').should('contain', 'Edit application'); }; export const changeTimeTo24 = (timeUnit) => { cy.get('[data-test-subj="superDatePickerToggleQuickMenuButton"]').trigger('mouseover').click(); - cy.wait(delay); cy.get('[aria-label="Time unit"]').select(timeUnit); cy.get('.euiButton').contains('Apply').click(); - cy.wait(delay); cy.get('[data-test-subj="superDatePickerApplyTimeButton"]').click(); };