Skip to content

Commit

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Add comment about cleaning up saved queries

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Add new ui spec to test list saved queries

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Fix DataSource url

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Changeset file for PR #9166 created/updated

* Address Justin's comments.

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Remove final force.

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Fix final force.

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

* fix import

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Load query

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete load query popover and flyout

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Modularize view and load query popover and flyout

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete valid Saved Queries shown across Visualize Pages

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete Popover delete saved query

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete flyout delete saved query

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Add data-test-subj for saveAsNewQueryCheckbox

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete Flyout Update Saved Query

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete Flyout Save as New Saved Query

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Complete Popout Save as New Saved Query

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Changeset file for PR #9229 created/updated

* Fix merge

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Remove savedQueriesNewUI

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Address all comments.

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Fix cypress command namespacing.

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Rename saved queries spec.

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Remove references to flyout

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Refactor tests to work with beforeEach and afterEach

Signed-off-by: Argus Li <contactme@chunkeili.com>

* Add force to click when loading saved query.

This removes delay when waiting for toast to disperse.

Signed-off-by: Argus Li <contactme@chunkeili.com>

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

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

Signed-off-by: Argus Li <contactme@chunkeili.com>

---------

Signed-off-by: Argus Li <contactme@chunkeili.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
3 people authored Jan 28, 2025
1 parent 57c4424 commit 969114f
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 969114f

Please sign in to comment.