Skip to content

Commit

Permalink
[TESTID-125,126,127,128,129] Saved Query Test Scope (#9229) (#9286)
Browse files Browse the repository at this point in the history
* add spec for old ui



* Add comment about cleaning up saved queries



* Add data-test-subj for save query new ui



* Add data-test-subj for save query button for new ui



* Add data-test-subj for open query button in query management popover



* Add new ui spec to test list saved queries



* Fix DataSource url



* Changeset file for PR #9166 created/updated

* Address Justin's comments.



* Remove final force.



* Fix final force.



* Move utils to Suchit's suggested location, fix comments



* Rename specs, change cypress workflow to use new save query ui, merge old ui and new ui commands



* fix import



* Load query



* Complete load query popover and flyout



* Modularize view and load query popover and flyout



* Complete valid Saved Queries shown across Visualize Pages



* Complete Popover delete saved query



* Add data-test-subj for flyoutbody and delete button.



* Complete flyout delete saved query



* Add data-test-subj for saveAsNewQueryCheckbox



* Complete Flyout Update Saved Query



* Complete Flyout Save as New Saved Query



* Complete Popout Save as New Saved Query



* Changeset file for PR #9229 created/updated

* Fix merge



* Move data-test-subj changes to another PR.



* Remove savedQueriesNewUI



* Address all comments.



* Fix cypress command namespacing.



* Rename saved queries spec.



* Remove references to flyout



* Refactor tests to work with beforeEach and afterEach



* Add force to click when loading saved query.

This removes delay when waiting for toast to disperse.



* Fix test issue. Thank you @angle943 for finding a solution.

Issue was caused by Cypress being too fast for the date picker to appear.



---------




(cherry picked from commit 969114f)

Signed-off-by: Argus Li <contactme@chunkeili.com>
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Co-authored-by: Anan Zhuang <ananzh@amazon.com>
  • Loading branch information
4 people authored Jan 29, 2025
1 parent 1f27288 commit 5bd7a85
Show file tree
Hide file tree
Showing 11 changed files with 642 additions and 225 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/9229.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
test:
- Add cypress integration test for the old and new UI view saved queries. ([#9229](/~https://github.com/opensearch-project/OpenSearch-Dashboards/pull/9229))
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import {
INDEX_PATTERN_WITH_TIME,
INDEX_WITH_TIME_1,
INDEX_WITH_TIME_2,
SECONDARY_ENGINE,
} from '../../../../../utils/constants';

import {
verifyDiscoverPageState,
verifyQueryDoesNotExistInSavedQueries,
setQueryConfigurations,
updateAndVerifySavedQuery,
SAVE_AS_NEW_QUERY_SUFFIX,
validateSaveAsNewQueryMatchingNameHasError,
} from '../../../../../utils/apps/query_enhancements/saved_queries';

import {
getRandomizedWorkspaceName,
getRandomizedDatasourceName,
setDatePickerDatesAndSearchIfRelevant,
generateAllTestConfigurations,
} from '../../../../../utils/apps/query_enhancements/shared';

import { generateSavedTestConfiguration } from '../../../../../utils/apps/query_enhancements/saved';

const workspaceName = getRandomizedWorkspaceName();
const datasourceName = getRandomizedDatasourceName();

const createSavedQuery = (config) => {
cy.navigateToWorkSpaceSpecificPage({
workspaceName,
page: 'discover',
isEnhancement: true,
});

cy.setDataset(config.dataset, datasourceName, config.datasetType);

cy.setQueryLanguage(config.language);
setDatePickerDatesAndSearchIfRelevant(config.language);

setQueryConfigurations(config);
verifyDiscoverPageState(config);

cy.saveQuery(config.saveName, ' ', true, true);
};

const loadSavedQuery = (config) => {
cy.navigateToWorkSpaceSpecificPage({
workspaceName,
page: 'discover',
isEnhancement: true,
});

cy.getElementByTestId('discoverNewButton').click();
cy.setDataset(config.dataset, datasourceName, config.datasetType);
cy.setQueryLanguage(config.language);
setDatePickerDatesAndSearchIfRelevant(
config.language,
'Aug 29, 2020 @ 00:00:00.000',
'Aug 30, 2020 @ 00:00:00.000'
);

cy.loadSaveQuery(config.saveName);
// wait for saved queries to load.
cy.getElementByTestId('docTable').should('be.visible');
verifyDiscoverPageState(config);
};

const modifyAndVerifySavedQuery = (config, saveAsNewQueryName) => {
if (config.filters) {
cy.deleteAllFilters();
}
setDatePickerDatesAndSearchIfRelevant(config.language);

setQueryConfigurations(config);
verifyDiscoverPageState(config);
validateSaveAsNewQueryMatchingNameHasError(config.saveName);
cy.updateSaveQuery(saveAsNewQueryName, true, true, true);

cy.reload();
cy.loadSaveQuery(saveAsNewQueryName);
// wait for saved query to load
cy.getElementByTestId('docTable').should('be.visible');
verifyDiscoverPageState(config);
};

const deleteSavedQuery = (saveAsNewQueryName) => {
cy.navigateToWorkSpaceSpecificPage({
workspaceName,
page: 'discover',
isEnhancement: true,
});

cy.deleteSaveQuery(saveAsNewQueryName);
verifyQueryDoesNotExistInSavedQueries(saveAsNewQueryName);
};

// This spec assumes data.savedQueriesNewUI.enabled is true.
export const runSavedQueriesUITests = () => {
describe('saved queries UI', () => {
beforeEach(() => {
// Load test data
cy.setupTestData(
SECONDARY_ENGINE.url,
[
`cypress/fixtures/query_enhancements/data_logs_1/${INDEX_WITH_TIME_1}.mapping.json`,
`cypress/fixtures/query_enhancements/data_logs_2/${INDEX_WITH_TIME_2}.mapping.json`,
],
[
`cypress/fixtures/query_enhancements/data_logs_1/${INDEX_WITH_TIME_1}.data.ndjson`,
`cypress/fixtures/query_enhancements/data_logs_2/${INDEX_WITH_TIME_2}.data.ndjson`,
]
);
// Add data source
cy.addDataSource({
name: datasourceName,
url: SECONDARY_ENGINE.url,
authType: 'no_auth',
});

// Create workspace
cy.deleteWorkspaceByName(workspaceName);
cy.visit('/app/home');
cy.osd.createInitialWorkspaceWithDataSource(datasourceName, workspaceName);
cy.createWorkspaceIndexPatterns({
workspaceName: workspaceName,
indexPattern: INDEX_PATTERN_WITH_TIME.replace('*', ''),
timefieldName: 'timestamp',
dataSource: datasourceName,
isEnhancement: true,
});
});

afterEach(() => {
// No need to explicitly delete all saved queries as deleting the workspace will delete associated saved queries
cy.deleteWorkspaceByName(workspaceName);
// // TODO: Modify deleteIndex to handle an array of index and remove hard code
cy.deleteDataSourceByName(datasourceName);
cy.deleteIndex(INDEX_WITH_TIME_1);
cy.deleteIndex(INDEX_WITH_TIME_2);
});

const testConfigurations = generateAllTestConfigurations(generateSavedTestConfiguration);

testConfigurations.forEach((config) => {
it(`should create, load, update, modify and delete the saved query: ${config.testName}`, () => {
createSavedQuery(config);
loadSavedQuery(config);
updateAndVerifySavedQuery(config);

const saveAsNewQueryName = config.testName + SAVE_AS_NEW_QUERY_SUFFIX;
modifyAndVerifySavedQuery(config, saveAsNewQueryName);
deleteSavedQuery(saveAsNewQueryName);
});
});
});
};

runSavedQueriesUITests();

This file was deleted.

This file was deleted.

Loading

0 comments on commit 5bd7a85

Please sign in to comment.