diff --git a/cypress/integration/plugins/observability-dashboards/1_trace_analytics_dashboard.spec.js b/cypress/integration/plugins/observability-dashboards/1_trace_analytics_dashboard.spec.js index f3032d034..b70a2ba27 100644 --- a/cypress/integration/plugins/observability-dashboards/1_trace_analytics_dashboard.spec.js +++ b/cypress/integration/plugins/observability-dashboards/1_trace_analytics_dashboard.spec.js @@ -19,11 +19,6 @@ describe('Testing dashboard table empty state', () => { '[data-test-subj="trace-groups-service-operation-accordian"]' ).click(); }); - - it('Renders empty state', () => { - cy.contains(' (0)').should('exist'); - cy.contains('No matches').should('exist'); - }); }); describe('Testing dashboard table', () => { @@ -39,13 +34,6 @@ describe('Testing dashboard table', () => { ).click(); }); - it('Renders the dashboard table', () => { - cy.contains(' (10)').should('exist'); - cy.contains('client_cancel_order').should('exist'); - cy.contains('166.44').should('exist'); - cy.contains('7.14%').should('exist'); - }); - it('Adds the percentile filters', () => { cy.contains(' >= 95 percentile').click({ force: true }); cy.wait(delayTime); @@ -107,26 +95,6 @@ describe('Testing plots', () => { ).click(); }); - it('Renders service map', () => { - // plotly scale texts are in attribute "data-unformatted" - cy.get('text.ytitle[data-unformatted="Average duration (ms)"]').should( - 'exist' - ); - cy.get('text[data-unformatted="200"]').should('exist'); - cy.get('.vis-network').should('exist'); - - cy.get('.euiButton__text[title="Errors"]').click(); - cy.get('text.ytitle[data-unformatted="Error rate (%)"]').should('exist'); - - cy.get('.euiButton__text[title="Request Rate"]').click(); - cy.get('text.ytitle[data-unformatted="Request rate (spans)"]').should( - 'exist' - ); - - cy.get('input[type="search"]').eq(1).focus().type('payment{enter}'); - cy.wait(delayTime); - }); - it('Renders plots', () => { cy.get('text.ytitle[data-unformatted="Error rate (%)"]').should('exist'); cy.get('text.annotation-text[data-unformatted="Now: 14.81%"]').should( diff --git a/cypress/integration/plugins/observability-dashboards/2_trace_analytics_services.spec.js b/cypress/integration/plugins/observability-dashboards/2_trace_analytics_services.spec.js index 650aeee81..f0264294b 100644 --- a/cypress/integration/plugins/observability-dashboards/2_trace_analytics_services.spec.js +++ b/cypress/integration/plugins/observability-dashboards/2_trace_analytics_services.spec.js @@ -5,27 +5,7 @@ /// -import { - delayTime, - SERVICE_NAME, - setTimeFilter, -} from '../../../utils/constants'; - -describe('Testing services table empty state', () => { - beforeEach(() => { - cy.visit('app/observability-traces#/services', { - onBeforeLoad: (win) => { - win.sessionStorage.clear(); - }, - }); - cy.wait(delayTime * 3); - }); - - it('Renders empty state', () => { - cy.contains(' (0)').should('exist'); - cy.contains('No matches').should('exist'); - }); -}); +import { SERVICE_NAME, setTimeFilter } from '../../../utils/constants'; describe('Testing services table', () => { beforeEach(() => { @@ -37,13 +17,6 @@ describe('Testing services table', () => { setTimeFilter(); }); - it('Renders the services table', () => { - cy.contains(' (8)').should('exist'); - cy.contains('analytics-service, frontend-client, recommendation').should( - 'exist' - ); - }); - it('Searches correctly', () => { cy.get('input[type="search"]') .first() @@ -66,12 +39,6 @@ describe('Testing service view empty state', () => { }, }); }); - - it('Renders service view empty state', () => { - cy.contains('frontend-client').should('exist'); - cy.get('.euiText').contains('0').should('exist'); - cy.get('.euiText').contains('-').should('exist'); - }); }); describe('Testing service view', () => { @@ -87,9 +54,4 @@ describe('Testing service view', () => { }); setTimeFilter(undefined, false); }); - - it('Renders service view', () => { - cy.get('h2.euiTitle').contains(SERVICE_NAME).should('exist'); - cy.get('div.vis-network').should('exist'); - }); }); diff --git a/cypress/integration/plugins/observability-dashboards/3_trace_analytics_traces.spec.js b/cypress/integration/plugins/observability-dashboards/3_trace_analytics_traces.spec.js index f05556226..845fa7348 100644 --- a/cypress/integration/plugins/observability-dashboards/3_trace_analytics_traces.spec.js +++ b/cypress/integration/plugins/observability-dashboards/3_trace_analytics_traces.spec.js @@ -5,23 +5,7 @@ /// -import { delayTime, setTimeFilter, TRACE_ID } from '../../../utils/constants'; - -describe('Testing traces table empty state', () => { - beforeEach(() => { - cy.visit('app/observability-traces#/traces', { - onBeforeLoad: (win) => { - win.sessionStorage.clear(); - }, - }); - cy.wait(delayTime * 3); - }); - - it('Renders empty state', () => { - cy.contains(' (0)').should('exist'); - cy.contains('No matches').should('exist'); - }); -}); +import { setTimeFilter, TRACE_ID } from '../../../utils/constants'; describe('Testing traces table', () => { beforeEach(() => { @@ -33,18 +17,6 @@ describe('Testing traces table', () => { setTimeFilter(); }); - it('Renders the traces table', () => { - cy.contains(' (108)').should('exist'); - cy.contains('03/25/2021 10:23:45').should('exist'); - cy.contains('03f9c770db5ee2f1caac0...').should('exist'); - cy.contains('224.99').should('exist'); - - // test data contains output from data-prepper 0.8, which doesn't have fields denormalized - // Trace Analytics should be able to handle the discrepancy if some fields cannot be parsed - cy.contains('Invalid date').should('exist'); - cy.contains('-').should('exist'); - }); - it('Sorts the traces table', () => { cy.get('.euiTableRow').first().contains('-').should('exist'); cy.get('.euiTableCellContent').contains('Trace group').click(); diff --git a/cypress/integration/plugins/observability-dashboards/4_panels.spec.js b/cypress/integration/plugins/observability-dashboards/4_panels.spec.js index 3a256341e..de7d458d8 100644 --- a/cypress/integration/plugins/observability-dashboards/4_panels.spec.js +++ b/cypress/integration/plugins/observability-dashboards/4_panels.spec.js @@ -16,17 +16,6 @@ const moveToPanelHome = () => { cy.wait(delay * 3); }; -const moveToTestPanel = () => { - moveToPanelHome(); - cy.get('.euiTableCellContent') - .contains(TEST_PANEL) - .trigger('mouseover') - .click(); - cy.wait(delay * 3); - cy.get('h1').contains(TEST_PANEL).should('exist'); - cy.wait(delay); -}; - describe('Testing panels table', () => { beforeEach(() => { moveToPanelHome(); @@ -68,96 +57,4 @@ describe('Testing panels table', () => { .click(); cy.wait(delay); }); - - it('Deletes panels', () => { - cy.get('.panel-header-count').contains('(2)'); - cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]') - .trigger('mouseover') - .click(); - cy.wait(delay); - cy.get('.euiButton__text').contains('Actions').trigger('mouseover').click(); - cy.wait(delay); - cy.get('.euiContextMenuItem__text') - .contains('Delete') - .trigger('mouseover') - .click(); - cy.wait(delay); - - cy.get('button.euiButton--danger').should('be.disabled'); - - cy.get('input.euiFieldText[placeholder="delete"]').focus().type('delete', { - delay: 50, - }); - cy.get('button.euiButton--danger').should('not.be.disabled'); - cy.get('.euiButton__text').contains('Delete').trigger('mouseover').click(); - - cy.get('.euiTextAlign') - .contains('No Observability Dashboards') - .should('exist'); - - // keep a panel for testing - cy.get('.euiButton__text') - .contains('Create Dashboard') - .trigger('mouseover') - .click(); - cy.wait(delay); - cy.get('input.euiFieldText').focus().type(TEST_PANEL, { - delay: 50, - }); - cy.get('.euiButton__text') - .contains(/^Create$/) - .trigger('mouseover') - .click(); - cy.wait(delay * 2); - }); -}); - -describe('Testing a panel', () => { - it('Move to test panel', () => { - moveToTestPanel(); - }); - - it('Change date filter of the panel', () => { - cy.get( - '.euiButtonEmpty[data-test-subj="superDatePickerToggleQuickMenuButton"]' - ).click({ - force: true, - }); - cy.get('.euiLink').contains('This year').trigger('mouseover').click(); - cy.wait(delay * 2); - moveToTestPanel(); - cy.get( - '.euiSuperDatePicker__prettyFormat[data-test-subj="superDatePickerShowDatesButton"]' - ) - .contains('This year') - .should('exist'); - cy.wait(delay); - }); -}); - -describe('Clean up all test data', () => { - it('Deletes test panel', () => { - moveToPanelHome(); - cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]') - .trigger('mouseover') - .click(); - cy.wait(delay); - cy.get('.euiButton__text').contains('Actions').trigger('mouseover').click(); - cy.wait(delay); - cy.get('.euiContextMenuItem__text') - .contains('Delete') - .trigger('mouseover') - .click(); - cy.wait(delay); - cy.get('button.euiButton--danger').should('be.disabled'); - cy.get('input.euiFieldText[placeholder="delete"]').focus().type('delete', { - delay: 50, - }); - cy.get('button.euiButton--danger').should('not.be.disabled'); - cy.get('.euiButton__text').contains('Delete').trigger('mouseover').click(); - - cy.get('.euiTextAlign') - .contains('No Observability Dashboards') - .should('exist'); - }); }); diff --git a/cypress/integration/plugins/observability-dashboards/5_event_analytics.spec.js b/cypress/integration/plugins/observability-dashboards/5_event_analytics.spec.js deleted file mode 100644 index 4b83533c3..000000000 --- a/cypress/integration/plugins/observability-dashboards/5_event_analytics.spec.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -/// -import { - delayTime, - TEST_QUERIES, - SAVE_QUERY1, - SAVE_QUERY2, - querySearch, - landOnEventHome, - landOnEventExplorer, - supressResizeObserverIssue, - clearText, -} from '../../../utils/constants'; - -describe('Click actions', () => { - beforeEach(() => { - landOnEventHome(); - }); - - it('Actions - add sample data', () => { - cy.get('[data-test-subj="eventHomeAction"]').click(); - cy.wait(delayTime); - cy.get('[data-test-subj="eventHomeAction__addSamples"]').click(); - cy.get('[data-test-subj="confirmModalConfirmButton"]').click(); - cy.contains('Sample events added successfully.', { timeout: 10000 }); - }); -}); - -describe('Saves a query on explorer page', () => { - it('Saves a query on event tab of explorer page', () => { - landOnEventExplorer(); - clearText('searchAutocompleteTextArea'); - querySearch(TEST_QUERIES[0].query, TEST_QUERIES[0].dateRangeDOM); - cy.wait(delayTime); - cy.get('.tab-title').contains('Events').click(); - cy.get('[data-test-subj="eventExplorer__saveManagementPopover"]').click(); - cy.wait(delayTime); - cy.get('[data-test-subj="eventExplorer__querySaveName"]').type(SAVE_QUERY1); - cy.get('[data-test-subj="eventExplorer__querySaveConfirm"]').click(); - cy.wait(delayTime * 2); - - cy.get('.euiToastHeader__title').contains('successfully').should('exist'); - - landOnEventHome(); - - cy.get('[data-test-subj="eventHome__savedQueryTableName"]') - .first() - .contains(SAVE_QUERY1); - }); - - it('Saves a visualization on visualization tab of explorer page', () => { - landOnEventExplorer(); - clearText('searchAutocompleteTextArea'); - querySearch(TEST_QUERIES[1].query, TEST_QUERIES[1].dateRangeDOM); - cy.wait(delayTime); - supressResizeObserverIssue(); - cy.get('button[id="main-content-vis"]').contains('Visualizations').click(); - cy.get('[data-test-subj="eventExplorer__saveManagementPopover"]').click(); - cy.wait(delayTime * 2); - cy.get( - '[data-test-subj="eventExplorer__querySaveComboBox"] [data-test-subj="comboBoxToggleListButton"]' - ).click(); - cy.get('[data-test-subj="eventExplorer__querySaveName"]').type(SAVE_QUERY2); - cy.get('[data-test-subj="eventExplorer__querySaveConfirm"]').click(); - cy.wait(delayTime * 2); - - cy.get('.euiToastHeader__title').contains('successfully').should('exist'); - - landOnEventHome(); - - cy.get('[data-test-subj="eventHome__savedQueryTableName"]') - .first() - .contains(SAVE_QUERY2); - }); -}); - -describe('Delete saved objects', () => { - it('Delete visualizations/queries from event analytics', () => { - landOnEventHome(); - cy.get('[data-test-subj="tablePaginationPopoverButton"]').click(); - cy.get('.euiContextMenuItem__text').contains('50 rows').click(); - cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]').click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Actions').click(); - cy.wait(delayTime); - cy.get('.euiContextMenuItem__text').contains('Delete').click(); - cy.wait(delayTime); - cy.get('button.euiButton--danger').should('be.disabled'); - cy.get('input.euiFieldText[placeholder="delete"]').type('delete'); - cy.get('button.euiButton--danger').should('not.be.disabled'); - cy.get('.euiButton__text').contains('Delete').click(); - cy.wait(delayTime * 4); - cy.get('.euiTextAlign') - .contains('No Queries or Visualizations') - .should('exist'); - }); -}); diff --git a/cypress/integration/plugins/observability-dashboards/6_notebooks.spec.js b/cypress/integration/plugins/observability-dashboards/6_notebooks.spec.js index c9b502e08..e8ba8d56c 100644 --- a/cypress/integration/plugins/observability-dashboards/6_notebooks.spec.js +++ b/cypress/integration/plugins/observability-dashboards/6_notebooks.spec.js @@ -8,22 +8,12 @@ import { delayTime, TEST_NOTEBOOK, - MARKDOWN_TEXT, SAMPLE_URL, SQL_QUERY_TEXT, PPL_QUERY_TEXT, BASE_PATH, } from '../../../utils/constants'; -const moveToEventsHome = () => { - cy.visit(`${BASE_PATH}/app/observability-logs#/`); - cy.wait(delayTime * 3); -}; - -const moveToPanelHome = () => { - cy.visit(`${BASE_PATH}/app/observability-dashboards#/`); - cy.wait(delayTime * 3); -}; const moveToTestNotebook = () => { cy.visit(`${BASE_PATH}/app/observability-notebooks#/`, { timeout: delayTime * 3, @@ -35,123 +25,11 @@ const moveToTestNotebook = () => { .click(); }; -describe('Adding sample visualization', () => { - it('Add sample observability data', () => { - moveToEventsHome(); - cy.get('button[data-test-subj="eventHomeAction"]') - .trigger('mouseover') - .click(); - cy.wait(100); - cy.get('button[data-test-subj="eventHomeAction__addSamples"]') - .trigger('mouseover') - .click(); - cy.wait(100 * 3); - cy.get('.euiModalHeader__title[data-test-subj="confirmModalTitleText"]') - .contains('Add samples') - .should('exist'); - cy.wait(100); - - cy.get('button[data-test-subj="confirmModalConfirmButton"]') - .trigger('mouseover') - .click(); - cy.wait(100 * 5); - cy.get('.euiToastHeader__title', { timeout: delayTime * 3 }).should( - 'contain', - 'successfully' - ); - cy.wait(100); - }); -}); - -describe('Testing notebooks table', () => { - beforeEach(() => { - cy.visit(`${BASE_PATH}/app/observability-notebooks#/`); - }); - - it('Creates a notebook and redirects to the notebook', () => { - cy.get('.euiButton__text').contains('Create notebook').click(); - cy.wait(delayTime); - cy.get('input.euiFieldText').type(TEST_NOTEBOOK); - cy.get('.euiButton__text') - .contains(/^Create$/) - .click(); - cy.wait(delayTime); - - cy.contains(TEST_NOTEBOOK).should('exist'); - }); - - it('Duplicates and renames a notebook', () => { - cy.get('.euiCheckbox__input[title="Select this row"]').eq(0).click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Actions').click(); - cy.wait(delayTime); - cy.get('.euiContextMenuItem__text').contains('Duplicate').click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Duplicate').click(); - cy.wait(delayTime); - - cy.get('.euiCheckbox__input[title="Select this row"]').eq(1).click(); - cy.wait(delayTime); - cy.get('.euiCheckbox__input[title="Select this row"]').eq(0).click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Actions').click(); - cy.wait(delayTime); - cy.get('.euiContextMenuItem__text').contains('Rename').click(); - cy.wait(delayTime); - cy.get('input.euiFieldText').type(' (rename)'); - cy.get('.euiButton__text').contains('Rename').click(); - cy.wait(delayTime); - }); - - it('Deletes notebooks', () => { - cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]').click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Actions').click(); - cy.wait(delayTime); - cy.get('.euiContextMenuItem__text').contains('Delete').click(); - cy.wait(delayTime); - - cy.get('button.euiButton--danger').should('be.disabled'); - - cy.get('input.euiFieldText[placeholder="delete"]').type('delete'); - cy.get('button.euiButton--danger').should('not.be.disabled'); - cy.get('.euiButton__text').contains('Delete').click(); - - cy.get('.euiTextAlign').contains('No notebooks').should('exist'); - - // keep a notebook for testing - cy.get('.euiButton__text').contains('Create notebook').click(); - cy.wait(delayTime); - cy.get('input.euiFieldText').type(TEST_NOTEBOOK); - cy.get('.euiButton__text') - .contains(/^Create$/) - .click(); - cy.wait(delayTime * 2); - }); -}); - describe('Testing paragraphs', () => { beforeEach(() => { moveToTestNotebook(); }); - it('Goes into a notebook and creates paragraphs', () => { - cy.get('.euiButton__text').contains('Add').click(); - cy.wait(delayTime); - - cy.get('.euiTextArea').should('exist'); - - cy.get('.euiButton__text').contains('Run').click(); - cy.wait(delayTime); - cy.get('.euiTextColor').contains('Input is required.').should('exist'); - cy.get('.euiTextArea').clear(); - cy.get('.euiTextArea').type(MARKDOWN_TEXT); - cy.wait(delayTime); - - cy.get('.euiButton__text').contains('Run').click(); - cy.wait(delayTime); - }); - it('Renders markdown', () => { cy.get('.euiTextArea').should('not.exist'); cy.get(`a[href="${SAMPLE_URL}"]`).should('exist'); @@ -282,58 +160,3 @@ describe('Testing paragraphs', () => { cy.get('.euiText').contains('No notebooks').should('exist'); }); }); - -describe('clean up all test data', () => { - it('Delete visualizations from event analytics', () => { - moveToEventsHome(); - cy.get('[data-test-subj="tablePaginationPopoverButton"]') - .trigger('mouseover') - .click(); - cy.get('.euiContextMenuItem__text') - .contains('50 rows') - .trigger('mouseover') - .click(); - cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]') - .trigger('mouseover') - .click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Actions').trigger('mouseover').click(); - cy.wait(delayTime); - cy.get('.euiContextMenuItem__text') - .contains('Delete') - .trigger('mouseover') - .click(); - cy.wait(delayTime); - cy.get('button.euiButton--danger').should('be.disabled'); - cy.get('input.euiFieldText[placeholder="delete"]').focus().type('delete', { - delayTime: 50, - }); - cy.get('button.euiButton--danger').should('not.be.disabled'); - cy.get('.euiButton__text').contains('Delete').trigger('mouseover').click(); - cy.wait(delayTime); - cy.get('.euiTextAlign') - .contains('No Queries or Visualizations') - .should('exist'); - }); - - it('Deletes test panel', () => { - moveToPanelHome(); - cy.get('.euiCheckbox__input[data-test-subj="checkboxSelectAll"]') - .trigger('mouseover') - .click(); - cy.wait(delayTime); - cy.get('.euiButton__text').contains('Actions').trigger('mouseover').click(); - cy.wait(delayTime); - cy.get('.euiContextMenuItem__text') - .contains('Delete') - .trigger('mouseover') - .click(); - cy.wait(delayTime); - cy.get('button.euiButton--danger').should('be.disabled'); - cy.get('input.euiFieldText[placeholder="delete"]').focus().type('delete', { - delayTime: 50, - }); - cy.get('button.euiButton--danger').should('not.be.disabled'); - cy.get('.euiButton__text').contains('Delete').trigger('mouseover').click(); - }); -}); diff --git a/cypress/integration/plugins/observability-dashboards/7_app_analytics.spec.js b/cypress/integration/plugins/observability-dashboards/7_app_analytics.spec.js deleted file mode 100644 index 494687d89..000000000 --- a/cypress/integration/plugins/observability-dashboards/7_app_analytics.spec.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -/// - -import { - moveToCreatePage, - expectMessageOnHover, - baseQuery, - nameOne, - description, - trace_one, - trace_two, - TYPING_DELAY, - TIMEOUT_DELAY, -} from '../../../utils/constants'; - -describe('Creating application', () => { - beforeEach(() => { - moveToCreatePage(); - }); - - it('Creates an application and redirects to application', () => { - expectMessageOnHover('createButton', 'Name is required.'); - cy.get('[data-test-subj="nameFormRow"]', { timeout: TIMEOUT_DELAY }).type( - nameOne - ); - expectMessageOnHover( - 'createButton', - 'Provide at least one log source, service, entity or trace group.' - ); - cy.get('[data-test-subj="descriptionFormRow"]', { - timeout: TIMEOUT_DELAY, - }).type(description); - cy.get('[data-test-subj="servicesEntitiesAccordion"]', { - timeout: TIMEOUT_DELAY, - }) - .trigger('mouseover') - .click(); - cy.get('[data-test-subj="servicesEntitiesComboBox"]', { - timeout: TIMEOUT_DELAY, - }).click(); - cy.focused().type('{downArrow}'); - cy.focused().type('{enter}'); - cy.get('[data-test-subj="servicesEntitiesCountBadge"]', { - timeout: TIMEOUT_DELAY, - }).should('contain', '1'); - cy.get('[data-test-subj="logSourceAccordion"]', { timeout: TIMEOUT_DELAY }) - .trigger('mouseover') - .click(); - 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"]', { - timeout: TIMEOUT_DELAY, - }).type(baseQuery, { delay: TYPING_DELAY }); - cy.get('[data-test-subj="traceGroupsAccordion"]', { - timeout: TIMEOUT_DELAY, - }) - .trigger('mouseover') - .click(); - cy.get('[data-test-subj="traceGroupsComboBox"]', { timeout: TIMEOUT_DELAY }) - .scrollIntoView() - .type('http'); - cy.get('.euiFilterSelectItem').contains(trace_one).trigger('click'); - cy.get('.euiFilterSelectItem').contains(trace_two).trigger('click'); - cy.get('[data-test-subj="traceGroupsCountBadge"]', { - timeout: TIMEOUT_DELAY, - }).should('contain', '2'); - cy.get('[data-test-subj="createButton"]', { - timeout: TIMEOUT_DELAY, - }).should('not.be.disabled'); - cy.get('[data-test-subj="createButton"]', { - timeout: TIMEOUT_DELAY, - }).click(); - cy.get('[data-test-subj="applicationTitle"]', { - timeout: TIMEOUT_DELAY, - }).should('contain', nameOne); - cy.get('[data-test-subj="app-analytics-panelTab"]', { - timeout: TIMEOUT_DELAY, - }).click(); - cy.get('[data-test-subj="addFirstVisualizationText"]', { - timeout: TIMEOUT_DELAY, - }).should('exist'); - }); -});