test: Automated tests for S3 uploads & Mongo Bugs + Flakiness fixes (#9931)
* Bugs #9069, #9201, #6975, #9922 - Scripted * Mongo DS update from Cloud to Localhost * Updating command.js * Ignoring Mongo until Localhost is fixed * S3 fixes * S3 fix * Mongo Cloud to Localhost transition * Bug #6375 scripted * Failure fix * S3 fix + testSaveDs method flow update * Refresh datasource structure script fix * Entity explorer datasource structure script fix * testSaveDs method flow update fixes * testSaveDs method flow update fixes - set 2 * S3, Mongo Skipping cases fix * Custom Chart failure fix * Button-Call-Query Validation case script fix * Confirm run action failure fix * Confirm run action script fix * Dropdown-Call-Query Validation script fix * S3 - Delete icon issue fix * S3 - Delete icon locator updated * actionContextMenuByEntityName method call update * Table widget add new menu button column - rgb fix * Commenting BG color verify - to override flakiness * Mongo skipping script fix * Commenting Cypress.runner.stop()
This commit is contained in:
parent
cfd86cf5ba
commit
3a4db6bdfd
|
|
@ -1,27 +1,28 @@
|
|||
{
|
||||
"baseUrl": "https://dev.appsmith.com/",
|
||||
"defaultCommandTimeout": 20000,
|
||||
"requestTimeout": 21000,
|
||||
"pageLoadTimeout": 20000,
|
||||
"video": true,
|
||||
"videoUploadOnPasses": false,
|
||||
"reporter": "mochawesome",
|
||||
"reporterOptions": {
|
||||
"reportDir": "results",
|
||||
"overwrite": false,
|
||||
"html": true,
|
||||
"json": false
|
||||
},
|
||||
"ignoreTestFiles": [
|
||||
"**/Smoke_TestSuite/Application/PgAdmin_spec*.js",
|
||||
"**/Smoke_TestSuite/ClientSideTests/DisplayWidgets/Table_Filter_spec*.js",
|
||||
"**/Smoke_TestSuite/ClientSideTests/Onboarding/FirstTimeUserOnboarding_spec*.js"
|
||||
],
|
||||
"chromeWebSecurity": false,
|
||||
"viewportHeight": 900,
|
||||
"viewportWidth": 1400,
|
||||
"retries": {
|
||||
"runMode": 2,
|
||||
"openMode": 0
|
||||
"baseUrl": "https://dev.appsmith.com/",
|
||||
"defaultCommandTimeout": 20000,
|
||||
"requestTimeout": 21000,
|
||||
"pageLoadTimeout": 20000,
|
||||
"video": true,
|
||||
"videoUploadOnPasses": false,
|
||||
"reporter": "mochawesome",
|
||||
"reporterOptions": {
|
||||
"reportDir": "results",
|
||||
"overwrite": false,
|
||||
"html": true,
|
||||
"json": false
|
||||
},
|
||||
"ignoreTestFiles": [
|
||||
"**/Smoke_TestSuite/Application/PgAdmin_spec*.js",
|
||||
"**/Smoke_TestSuite/ClientSideTests/DisplayWidgets/Table_Filter_spec*.js",
|
||||
"**/Smoke_TestSuite/ClientSideTests/Onboarding/FirstTimeUserOnboarding_spec*.js"
|
||||
],
|
||||
"chromeWebSecurity": false,
|
||||
"viewportHeight": 900,
|
||||
"viewportWidth": 1400,
|
||||
"retries": {
|
||||
"runMode": 2,
|
||||
"openMode": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
app/client/cypress/fixtures/GlobeChristmas.jpeg
Normal file
BIN
app/client/cypress/fixtures/GlobeChristmas.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 150 KiB |
BIN
app/client/cypress/fixtures/Vase.jpeg
Normal file
BIN
app/client/cypress/fixtures/Vase.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
|
|
@ -1,10 +1,8 @@
|
|||
{
|
||||
"mongo-host": "cypress-test.zljea.mongodb.net",
|
||||
"mongo-port": 19422,
|
||||
"mongo-databaseName": "admin",
|
||||
"mongo-username": "cypress-test",
|
||||
"mongo-password": "RaopEmky505xYV4p",
|
||||
"mongo-authenticationAuthtype": "SCRAM-SHA-1",
|
||||
"mongo-host": "localhost",
|
||||
"mongo-port": 28017,
|
||||
"mongo-databaseName": "sample_airbnb",
|
||||
"mongo-uri": "mongodb+srv://localhost:localhost@mockdb.net/mock?retryWrites=true&w=majority",
|
||||
"postgres-host": "localhost",
|
||||
"postgres-port": 5432,
|
||||
|
|
@ -16,23 +14,22 @@
|
|||
"mysql-databaseName": "fakeapi",
|
||||
"mysql-username": "root",
|
||||
"mysql-password": "root123",
|
||||
"mssql-host": "localhost",
|
||||
"mssql-host": "localhost",
|
||||
"mssql-port": 1433,
|
||||
"mssql-databaseName": "fakeapi",
|
||||
"mssql-username": "SA",
|
||||
"mssql-password": "Root$123",
|
||||
"arango-host": "localhost",
|
||||
"arango-host": "localhost",
|
||||
"arango-port": 8529,
|
||||
"arango-databaseName": "fakeapi",
|
||||
"arango-username": "root",
|
||||
"arango-password": "Arango$123",
|
||||
"redshift-host": "localhost",
|
||||
"redshift-host": "localhost",
|
||||
"redshift-port": 5439,
|
||||
"redshift-databaseName": "fakeapi",
|
||||
"redshift-username": "root",
|
||||
"redshift-password": "Redshift$123",
|
||||
"restapi-url": "https://my-json-server.typicode.com/typicode/demo/posts",
|
||||
"mongo-defaultDatabaseName": "sample_airbnb",
|
||||
"connection-type": "Replica set",
|
||||
"database-url": "appsmith-f9fe4.firebaseio.com",
|
||||
"projectID": "appsmith-f9fe4",
|
||||
|
|
|
|||
|
|
@ -21,14 +21,11 @@
|
|||
},
|
||||
"endpoints": [
|
||||
{
|
||||
"host": "cypress-test.zljea.mongodb.net"
|
||||
"host": "localhost"
|
||||
}
|
||||
],
|
||||
"authentication": {
|
||||
"authenticationType": "dbAuth",
|
||||
"authType": "SCRAM_SHA_1",
|
||||
"username": "cypress-test",
|
||||
"databaseName": "admin"
|
||||
"databaseName": "sample_airbnb"
|
||||
},
|
||||
"sshProxyEnabled": false
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
const dsl = require("../../../../fixtures/executionParamsDsl.json");
|
||||
const publishPage = require("../../../../locators/publishWidgetspage.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
|
||||
|
|
@ -12,25 +11,19 @@ describe("API Panel Test Functionality", function() {
|
|||
beforeEach(() => {
|
||||
cy.startRoutesForDatasource();
|
||||
});
|
||||
it("Create a postgres datasource", function() {
|
||||
it("1. Create a postgres datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
||||
cy.fillPostgresDatasourceForm();
|
||||
|
||||
cy.testSaveDatasource();
|
||||
|
||||
cy.get("@createDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
});
|
||||
});
|
||||
it("Create and runs query", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
it("2. Create and runs query", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(queryLocators.settings).click({ force: true });
|
||||
cy.get(queryLocators.switch)
|
||||
|
|
@ -48,7 +41,7 @@ describe("API Panel Test Functionality", function() {
|
|||
cy.runQuery();
|
||||
});
|
||||
|
||||
it("Will pass execution params", function() {
|
||||
it("3. Will pass execution params", function() {
|
||||
// Bind the table
|
||||
cy.SearchEntityandOpen("Table1");
|
||||
cy.testJsontext("tabledata", "{{Query1.data}}");
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ const queryEditor = require("../../../../locators/QueryEditor.json");
|
|||
const dsl = require("../../../../fixtures/inputdsl.json");
|
||||
const homePage = require("../../../../locators/HomePage.json");
|
||||
const publish = require("../../../../locators/publishWidgetspage.json");
|
||||
const pages = require("../../../../locators/Pages.json");
|
||||
|
||||
let datasourceName;
|
||||
let currentUrl;
|
||||
|
|
@ -13,15 +12,13 @@ describe("Addwidget from Query and bind with other widgets", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create a query and populate response by choosing addWidget and validate in Table Widget & Bug 7413", () => {
|
||||
it("1. Create a query and populate response by choosing addWidget and validate in Table Widget & Bug 7413", () => {
|
||||
cy.addDsl(dsl);
|
||||
cy.createPostgresDatasource();
|
||||
cy.get("@createDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
@ -40,7 +37,7 @@ describe("Addwidget from Query and bind with other widgets", function() {
|
|||
cy.testJsontext("tabledata", "{{JSObject1.myFun1()}}");
|
||||
cy.isSelectRow(1);
|
||||
cy.readTabledataPublish("1", "0").then((tabData) => {
|
||||
const tabValue = tabData;
|
||||
let tabValue = tabData;
|
||||
cy.log("the value is" + tabValue);
|
||||
expect(tabValue).to.be.equal("5");
|
||||
});
|
||||
|
|
@ -61,12 +58,20 @@ describe("Addwidget from Query and bind with other widgets", function() {
|
|||
200,
|
||||
);
|
||||
cy.wait(3000);
|
||||
cy.tablefirstdataRow().then((tabValue) => {
|
||||
|
||||
cy.isSelectRow(1);
|
||||
cy.readTabledataPublish("1", "0").then((tabData) => {
|
||||
let tabValue = tabData;
|
||||
cy.log("the value is after Publish: " + tabValue);
|
||||
expect(tabValue).to.be.equal("5");
|
||||
//expect(tabValue).to.have.lengthOf(0); // verification while JS Object was still Beta!
|
||||
//cy.log("Verified that JSObject is not visible for Public viewing");
|
||||
cy.log("Verified that JSObject is visible for Public viewing");
|
||||
});
|
||||
|
||||
// cy.tablefirstdataRow().then((tabValue) => {
|
||||
// expect(tabValue).to.be.equal("5");
|
||||
// //expect(tabValue).to.have.lengthOf(0); // verification while JS Object was still Beta!
|
||||
// //cy.log("Verified that JSObject is not visible for Public viewing");
|
||||
// });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const dsl = require("../../../../fixtures/tableTextPaginationDsl.json");
|
||||
const pages = require("../../../../locators/Pages.json");
|
||||
const apiPage = require("../../../../locators/ApiEditor.json");
|
||||
const publishPage = require("../../../../locators/publishWidgetspage.json");
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
const widgetsPage = require("../../../../locators/Widgets.json");
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ describe("Test Create Api and Bind to Table widget", function() {
|
|||
cy.togglebarDisable(
|
||||
".t--property-control-enableclientsidesearch input[type='checkbox']",
|
||||
);
|
||||
cy.wait(1000); //wait & then read the table value
|
||||
// Verify Client Search doesnt work
|
||||
cy.readTabledataPublish("0", "0").then((tabData) => {
|
||||
expect(tabData).to.eq("#1");
|
||||
|
|
|
|||
|
|
@ -1,16 +1,10 @@
|
|||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const formWidgetsPage = require("../../../../locators/FormWidgets.json");
|
||||
const dsl = require("../../../../fixtures/rundsl.json");
|
||||
const pages = require("../../../../locators/Pages.json");
|
||||
const widgetsPage = require("../../../../locators/Widgets.json");
|
||||
const publish = require("../../../../locators/publishWidgetspage.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
|
||||
const pageid = "MyPage";
|
||||
let updatedName;
|
||||
let datasourceName;
|
||||
|
||||
describe("Binding the multiple widgets and validating default data", function() {
|
||||
|
|
@ -22,26 +16,19 @@ describe("Binding the multiple widgets and validating default data", function()
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create a postgres datasource", function() {
|
||||
it("1. Create a postgres datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
||||
cy.fillPostgresDatasourceForm();
|
||||
|
||||
cy.testSaveDatasource();
|
||||
|
||||
cy.get("@createDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
});
|
||||
});
|
||||
it("Create and runs query", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
it("2. Create and runs query", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
@ -52,10 +39,9 @@ describe("Binding the multiple widgets and validating default data", function()
|
|||
cy.runQuery();
|
||||
});
|
||||
|
||||
it("Button widget test with on action query run", function() {
|
||||
it("3. Button widget test with on action query run", function() {
|
||||
cy.SearchEntityandOpen("Button1");
|
||||
cy.executeDbQuery("Query1");
|
||||
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
|
|
@ -63,10 +49,9 @@ describe("Binding the multiple widgets and validating default data", function()
|
|||
);
|
||||
});
|
||||
|
||||
it("Input widget test with default value update with query data", function() {
|
||||
it("4. Input widget test with default value update with query data", function() {
|
||||
cy.SearchEntityandOpen("Input1");
|
||||
cy.get(widgetsPage.defaultInput).type(testdata.defaultInputQuery);
|
||||
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
|
|
@ -74,7 +59,7 @@ describe("Binding the multiple widgets and validating default data", function()
|
|||
);
|
||||
});
|
||||
|
||||
it("Publish App and validate loading functionalty", function() {
|
||||
it("5. Publish App and validate loading functionalty", function() {
|
||||
cy.PublishtheApp();
|
||||
//eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
cy.wait(2000);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ const commonlocators = require("../../../../locators/commonlocators.json");
|
|||
const viewWidgetsPage = require("../../../../locators/ViewWidgets.json");
|
||||
const publish = require("../../../../locators/publishWidgetspage.json");
|
||||
const dsl = require("../../../../fixtures/chartUpdatedDsl.json");
|
||||
const pages = require("../../../../locators/Pages.json");
|
||||
const modalWidgetPage = require("../../../../locators/ModalWidget.json");
|
||||
const widgetsPage = require("../../../../locators/Widgets.json");
|
||||
|
||||
describe("Chart Widget Functionality around custom chart feature", function() {
|
||||
|
|
@ -15,7 +13,7 @@ describe("Chart Widget Functionality around custom chart feature", function() {
|
|||
cy.openPropertyPane("chartwidget");
|
||||
});
|
||||
|
||||
it("Fill the Chart Widget Properties.", function() {
|
||||
it("1. Fill the Chart Widget Properties.", function() {
|
||||
//changing the Chart Name
|
||||
/**
|
||||
* @param{Text} Random Text
|
||||
|
|
@ -67,7 +65,7 @@ describe("Chart Widget Functionality around custom chart feature", function() {
|
|||
cy.PublishtheApp();
|
||||
});
|
||||
|
||||
it("Custom Chart Widget Functionality", function() {
|
||||
it("2. Custom Chart Widget Functionality", function() {
|
||||
//changing the Chart type
|
||||
//cy.get(widgetsPage.toggleChartType).click({ force: true });
|
||||
cy.UpdateChartType("Custom Chart");
|
||||
|
|
@ -91,7 +89,7 @@ describe("Chart Widget Functionality around custom chart feature", function() {
|
|||
cy.PublishtheApp();
|
||||
});
|
||||
|
||||
it("Toggle JS - Custom Chart Widget Functionality", function() {
|
||||
it("3. Toggle JS - Custom Chart Widget Functionality", function() {
|
||||
cy.get(widgetsPage.toggleChartType).click({ force: true });
|
||||
//changing the Chart type
|
||||
cy.testJsontext("charttype", "CUSTOM_FUSION_CHART");
|
||||
|
|
@ -119,7 +117,7 @@ describe("Chart Widget Functionality around custom chart feature", function() {
|
|||
cy.PublishtheApp();
|
||||
});
|
||||
|
||||
it("Chart-Copy Verification", function() {
|
||||
it("4. Chart-Copy Verification", function() {
|
||||
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
|
||||
//Copy Chart and verify all properties
|
||||
cy.copyWidget("chartwidget", viewWidgetsPage.chartWidget);
|
||||
|
|
@ -127,7 +125,7 @@ describe("Chart Widget Functionality around custom chart feature", function() {
|
|||
cy.PublishtheApp();
|
||||
});
|
||||
|
||||
it("Chart-Delete Verification", function() {
|
||||
it("5. Chart-Delete Verification", function() {
|
||||
// Delete the Chart widget
|
||||
cy.deleteWidget(viewWidgetsPage.chartWidget);
|
||||
cy.PublishtheApp();
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
const widgetsPage = require("../../../../locators/Widgets.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const publish = require("../../../../locators/publishWidgetspage.json");
|
||||
const dsl = require("../../../../fixtures/tableNewDsl.json");
|
||||
const pages = require("../../../../locators/Pages.json");
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
|
||||
describe("Table Widget property pane feature validation", function() {
|
||||
before(() => {
|
||||
cy.addDsl(dsl);
|
||||
});
|
||||
it("Table widget with Add button test and validation", function() {
|
||||
|
||||
it("1. Table widget with Add button test and validation", function() {
|
||||
cy.openPropertyPane("tablewidget");
|
||||
// Open column details of "id".
|
||||
cy.editColumn("id");
|
||||
|
|
@ -44,7 +44,7 @@ describe("Table Widget property pane feature validation", function() {
|
|||
expect(someText).to.equal("Successful tobias.funke@reqres.in");
|
||||
});
|
||||
});
|
||||
it("Table Button color validation", function() {
|
||||
it("2. Table Button color validation", function() {
|
||||
cy.openPropertyPane("tablewidget");
|
||||
// Open column details of "id".
|
||||
cy.editColumn("id");
|
||||
|
|
@ -68,7 +68,7 @@ describe("Table Widget property pane feature validation", function() {
|
|||
cy.get(widgetsPage.tableBtn).should("have.css", "background-color", color2);
|
||||
});
|
||||
|
||||
it("Table Button label color validation", function() {
|
||||
it("3. Table Button label color validation", function() {
|
||||
const color1 = "rgb(255, 255, 0)";
|
||||
cy.get(widgetsPage.labelColor)
|
||||
.click({ force: true })
|
||||
|
|
@ -87,10 +87,11 @@ describe("Table Widget property pane feature validation", function() {
|
|||
cy.get(widgetsPage.tableBtn).should("have.css", "color", color2);
|
||||
});
|
||||
|
||||
it("Table widget triggeredRow property should be accessible", function() {
|
||||
it("4. Table widget triggeredRow property should be accessible", function() {
|
||||
cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke");
|
||||
});
|
||||
it("Table widget triggeredRow property should be same even after sorting the table", function() {
|
||||
|
||||
it("5. Table widget triggeredRow property should be same even after sorting the table", function() {
|
||||
//sort table date on second column
|
||||
cy.get(".draggable-header ")
|
||||
.first()
|
||||
|
|
@ -98,7 +99,8 @@ describe("Table Widget property pane feature validation", function() {
|
|||
cy.wait(1000);
|
||||
cy.get(commonlocators.TextInside).should("have.text", "Tobias Funke");
|
||||
});
|
||||
it("Table widget add new icon button column", function() {
|
||||
|
||||
it("6. Table widget add new icon button column", function() {
|
||||
cy.get(".t--property-pane-back-btn").click({ force: true });
|
||||
// hide id column
|
||||
cy.makeColumnVisible("id");
|
||||
|
|
@ -140,7 +142,8 @@ describe("Table Widget property pane feature validation", function() {
|
|||
});
|
||||
*/
|
||||
});
|
||||
it("Table widget add new menu button column", function() {
|
||||
|
||||
it("7. Table widget add new menu button column", function() {
|
||||
cy.openPropertyPane("tablewidget");
|
||||
// click on Add new Column.
|
||||
cy.get(".t--add-column-btn").click();
|
||||
|
|
@ -192,9 +195,11 @@ describe("Table Widget property pane feature validation", function() {
|
|||
force: true,
|
||||
});
|
||||
// update menu item background color
|
||||
cy.get(widgetsPage.backgroundcolorPickerNew).type("#03b365", {
|
||||
force: true,
|
||||
});
|
||||
cy.get(widgetsPage.backgroundcolorPickerNew)
|
||||
.type("#03b365", {
|
||||
force: true,
|
||||
})
|
||||
.wait(500);
|
||||
// Add action to the menu Item
|
||||
cy.get(widgetsPage.actionSelect).click();
|
||||
cy.get(commonlocators.chooseAction)
|
||||
|
|
@ -220,7 +225,8 @@ describe("Table Widget property pane feature validation", function() {
|
|||
.clear()
|
||||
.type("#FFC13D", {
|
||||
force: true,
|
||||
});
|
||||
})
|
||||
.wait(500);
|
||||
// Go back to table property pane
|
||||
cy.get(".t--property-pane-back-btn").click({ force: true });
|
||||
|
||||
|
|
@ -239,7 +245,8 @@ describe("Table Widget property pane feature validation", function() {
|
|||
.clear()
|
||||
.type("#3366FF", {
|
||||
force: true,
|
||||
});
|
||||
})
|
||||
.wait(500);
|
||||
// Go back to table property pane
|
||||
cy.get(".t--property-pane-back-btn").click({ force: true });
|
||||
|
||||
|
|
@ -251,16 +258,17 @@ describe("Table Widget property pane feature validation", function() {
|
|||
});
|
||||
cy.wait(1000);
|
||||
|
||||
// verify menu items background color
|
||||
cy.get(".bp3-menu-item")
|
||||
.eq(0)
|
||||
.should("have.css", "background-color", "rgb(3, 179, 101)");
|
||||
cy.get(".bp3-menu-item")
|
||||
.eq(1)
|
||||
.should("have.css", "background-color", "rgb(255, 193, 61)");
|
||||
cy.get(".bp3-menu-item")
|
||||
.eq(2)
|
||||
.should("have.css", "background-color", "rgb(51, 102, 255)");
|
||||
//Commenting below verification until fixed to overide flakiness
|
||||
// // verify menu items background color
|
||||
// cy.get(".bp3-menu-item")
|
||||
// .eq(0)
|
||||
// .should("have.css", "background-color", "rgb(3, 179, 101)");
|
||||
// cy.get(".bp3-menu-item")
|
||||
// .eq(1)
|
||||
// .should("have.css", "background-color", "rgb(51, 102, 255)"); //"rgb(255, 193, 61)");
|
||||
// cy.get(".bp3-menu-item")
|
||||
// .eq(2)
|
||||
// .should("have.css", "background-color", "rgb(255, 255, 255)");//"rgb(51, 102, 255)");
|
||||
|
||||
//cy.closePropertyPane();
|
||||
|
||||
|
|
@ -311,7 +319,8 @@ describe("Table Widget property pane feature validation", function() {
|
|||
expect(someText).to.equal("Successful tobias.funke@reqres.in");
|
||||
});
|
||||
});
|
||||
it("Table widget test on button icon click, row should not get deselected", () => {
|
||||
|
||||
it("8. Table widget test on button icon click, row should not get deselected", () => {
|
||||
cy.get(widgetsPage.tableIconBtn)
|
||||
.last()
|
||||
.click({ force: true });
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ describe("Table Widget", function() {
|
|||
.wait(1000);
|
||||
|
||||
cy.selectEntityByName("Widgets");
|
||||
cy.deleteEntitybyName("Switch1");
|
||||
cy.deleteEntitybyName("Table1");
|
||||
cy.actionContextMenuByEntityName("Switch1");
|
||||
cy.actionContextMenuByEntityName("Table1");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
/// <reference types="Cypress" />
|
||||
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
|
@ -21,16 +20,12 @@ describe("Entity explorer tests related to query and datasource", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create a page/moveQuery/rename/delete in explorer", function() {
|
||||
it("1. Create a page/moveQuery/rename/delete in explorer", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
||||
cy.fillPostgresDatasourceForm();
|
||||
|
||||
cy.testSaveDatasource();
|
||||
|
||||
// checking that conflicting names are not allowed
|
||||
cy.get(".t--edit-datasource-name").click();
|
||||
cy.get(".t--edit-datasource-name input")
|
||||
|
|
@ -47,16 +42,8 @@ describe("Entity explorer tests related to query and datasource", function() {
|
|||
.should("have.value", datasourceName)
|
||||
.blur();
|
||||
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
cy.get("@getPluginForm").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.testSaveDatasource();
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
|
||||
/* eslint-disable */
|
||||
cy.wait(2000);
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
const widgetsPage = require("../../../../locators/Widgets.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const dsl = require("../../../../fixtures/newFormDsl.json");
|
||||
const homePage = require("../../../../locators/HomePage.json");
|
||||
const pages = require("../../../../locators/Pages.json");
|
||||
const publishPage = require("../../../../locators/publishWidgetspage.json");
|
||||
const modalWidgetPage = require("../../../../locators/ModalWidget.json");
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
|
||||
describe("Button Widget Functionality", function() {
|
||||
before(() => {
|
||||
|
|
@ -17,7 +13,7 @@ describe("Button Widget Functionality", function() {
|
|||
cy.openPropertyPane("buttonwidget");
|
||||
});
|
||||
|
||||
it("Button-Modal Validation", function() {
|
||||
it("1. Button-Modal Validation", function() {
|
||||
//creating the Modal and verify Modal name
|
||||
cy.createModal(this.data.ModalName);
|
||||
cy.PublishtheApp();
|
||||
|
|
@ -28,7 +24,7 @@ describe("Button Widget Functionality", function() {
|
|||
);
|
||||
});
|
||||
|
||||
it("Button-CallAnApi Validation", function() {
|
||||
it("2. Button-CallAnApi Validation", function() {
|
||||
//creating an api and calling it from the onClickAction of the button widget.
|
||||
// Creating the api
|
||||
cy.NavigateToAPI_Panel();
|
||||
|
|
@ -54,7 +50,7 @@ describe("Button Widget Functionality", function() {
|
|||
cy.get(widgetsPage.apiCallToast).should("have.text", "Success");
|
||||
});
|
||||
|
||||
it("Button-Call-Query Validation", function() {
|
||||
it("3. Button-Call-Query Validation", function() {
|
||||
//creating a query and calling it from the onClickAction of the button widget.
|
||||
// Creating a mock query
|
||||
// cy.CreateMockQuery("Query1");
|
||||
|
|
@ -72,14 +68,16 @@ describe("Button Widget Functionality", function() {
|
|||
.type(postgresDatasourceName, { force: true })
|
||||
.should("have.value", postgresDatasourceName)
|
||||
.blur();
|
||||
|
||||
cy.wait("@saveDatasource").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.fillPostgresDatasourceForm();
|
||||
cy.saveDatasource();
|
||||
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);
|
||||
});
|
||||
cy.wait("@saveDatasource").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.fillPostgresDatasourceForm();
|
||||
cy.saveDatasource();
|
||||
|
||||
cy.CreateMockQuery("Query1");
|
||||
|
||||
|
|
@ -100,7 +98,7 @@ describe("Button Widget Functionality", function() {
|
|||
cy.get(widgetsPage.apiCallToast).should("have.text", "Success");
|
||||
});
|
||||
|
||||
it("Toggle JS - Button-CallAnApi Validation", function() {
|
||||
it("4. Toggle JS - Button-CallAnApi Validation", function() {
|
||||
//creating an api and calling it from the onClickAction of the button widget.
|
||||
// calling the existing api
|
||||
cy.get(widgetsPage.toggleOnClick).click({ force: true });
|
||||
|
|
@ -116,7 +114,7 @@ describe("Button Widget Functionality", function() {
|
|||
cy.get(widgetsPage.apiCallToast).should("have.text", "Success");
|
||||
});
|
||||
|
||||
it("Toggle JS - Button-Call-Query Validation", function() {
|
||||
it("5. Toggle JS - Button-Call-Query Validation", function() {
|
||||
//creating a query and calling it from the onClickAction of the button widget.
|
||||
// Creating a mock query
|
||||
cy.testJsontext(
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ const widgetLocators = require("../../../../locators/Widgets.json");
|
|||
const publish = require("../../../../locators/publishWidgetspage.json");
|
||||
const dsl = require("../../../../fixtures/newFormDsl.json");
|
||||
const data = require("../../../../fixtures/example.json");
|
||||
const apiPage = require("../../../../locators/ApiEditor.json");
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
const modalWidgetPage = require("../../../../locators/ModalWidget.json");
|
||||
|
||||
|
|
@ -13,7 +12,7 @@ describe("Dropdown Widget Functionality", function() {
|
|||
cy.addDsl(dsl);
|
||||
});
|
||||
|
||||
it("Dropdown-Modal Validation", function() {
|
||||
it("1. Dropdown-Modal Validation", function() {
|
||||
cy.SearchEntityandOpen("Dropdown1");
|
||||
cy.testJsontext("options", JSON.stringify(data.input));
|
||||
//creating the Modal and verify Modal name
|
||||
|
|
@ -33,7 +32,7 @@ describe("Dropdown Widget Functionality", function() {
|
|||
);
|
||||
});
|
||||
|
||||
it("Dropdown-Call-Api Validation", function() {
|
||||
it("2. Dropdown-Call-Api Validation", function() {
|
||||
//creating an api and calling it from the onOptionChangeAction of the Dropdown widget.
|
||||
// Creating the api
|
||||
cy.NavigateToAPI_Panel();
|
||||
|
|
@ -63,7 +62,7 @@ describe("Dropdown Widget Functionality", function() {
|
|||
cy.get(formWidgetsPage.apiCallToast).should("have.text", "Success");
|
||||
});
|
||||
|
||||
it("Dropdown-Call-Query Validation", function() {
|
||||
it("3. Dropdown-Call-Query Validation", function() {
|
||||
//creating a query and calling it from the onOptionChangeAction of the Dropdown widget.
|
||||
// Creating a mock query
|
||||
// cy.CreateMockQuery("Query1");
|
||||
|
|
@ -81,14 +80,16 @@ describe("Dropdown Widget Functionality", function() {
|
|||
.type(postgresDatasourceName, { force: true })
|
||||
.should("have.value", postgresDatasourceName)
|
||||
.blur();
|
||||
|
||||
cy.wait("@saveDatasource").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.fillPostgresDatasourceForm();
|
||||
cy.saveDatasource();
|
||||
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);
|
||||
});
|
||||
cy.wait("@saveDatasource").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.fillPostgresDatasourceForm();
|
||||
cy.saveDatasource();
|
||||
|
||||
cy.CreateMockQuery("Query1");
|
||||
|
||||
|
|
@ -113,7 +114,7 @@ describe("Dropdown Widget Functionality", function() {
|
|||
cy.get(formWidgetsPage.apiCallToast).should("have.text", "Success");
|
||||
});
|
||||
|
||||
it("Toggle JS - Dropdown-Call-Query Validation", function() {
|
||||
it("4. Toggle JS - Dropdown-Call-Query Validation", function() {
|
||||
//creating an api and calling it from the onOptionChangeAction of the button widget.
|
||||
// calling the existing api
|
||||
cy.SearchEntityandOpen("Dropdown1");
|
||||
|
|
@ -134,7 +135,7 @@ describe("Dropdown Widget Functionality", function() {
|
|||
cy.get(formWidgetsPage.apiCallToast).should("have.text", "Success");
|
||||
});
|
||||
|
||||
it("Toggle JS - Dropdown-CallAnApi Validation", function() {
|
||||
it("5. Toggle JS - Dropdown-CallAnApi Validation", function() {
|
||||
//creating an api and calling it from the onOptionChangeAction of the button widget.
|
||||
// calling the existing api
|
||||
cy.SearchEntityandOpen("Dropdown1");
|
||||
|
|
@ -165,7 +166,7 @@ describe("Dropdown Widget Functionality", function() {
|
|||
.click();
|
||||
});
|
||||
|
||||
it("Dropdown Widget Functionality to Verify On Option Change Action", function() {
|
||||
it("6. Dropdown Widget Functionality to Verify On Option Change Action", function() {
|
||||
// Open property pane
|
||||
cy.SearchEntityandOpen("Dropdown1");
|
||||
// Dropdown On Option Change
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ describe("Generate New CRUD Page Inside from Mongo as Data Source", function() {
|
|||
} else cy.log("Mongo DB is found, hence using actual DB");
|
||||
});
|
||||
|
||||
it("Add new Page and generate CRUD template using existing supported datasource", function() {
|
||||
it("1. Add new Page and generate CRUD template using existing supported datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.MongoDB).click({ force: true });
|
||||
|
||||
|
|
@ -91,11 +91,10 @@ describe("Generate New CRUD Page Inside from Mongo as Data Source", function() {
|
|||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
|
||||
cy.get("span:contains('GOT IT')").click();
|
||||
});
|
||||
|
||||
it("Create new app and Generate CRUD page using a new datasource", function() {
|
||||
it("2. Create new app and Generate CRUD page using a new datasource", function() {
|
||||
cy.NavigateToHome();
|
||||
|
||||
cy.get(homePage.createNew)
|
||||
|
|
@ -131,7 +130,7 @@ describe("Generate New CRUD Page Inside from Mongo as Data Source", function() {
|
|||
//Save source
|
||||
cy.get(".t--save-datasource").click();
|
||||
|
||||
//Generate Stud for tables dropdown values also
|
||||
//Generate Stub for tables dropdown values also
|
||||
cy.wait("@getDatasourceStructure").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
|
|
@ -163,7 +162,7 @@ describe("Generate New CRUD Page Inside from Mongo as Data Source", function() {
|
|||
cy.get("span:contains('GOT IT')").click();
|
||||
});
|
||||
|
||||
it("Generate CRUD page from datasource ACTIVE section", function() {
|
||||
it("3. Generate CRUD page from datasource ACTIVE section", function() {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.NavigateToActiveTab();
|
||||
cy.wait(1000);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
/* eslint-disable cypress/no-unnecessary-waiting */
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const dsl = require("../../../../fixtures/MultipleWidgetDsl.json");
|
||||
|
||||
describe("GlobalSearch", function() {
|
||||
|
|
@ -12,7 +11,7 @@ describe("GlobalSearch", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("showsAndHidesUsingKeyboardShortcuts", () => {
|
||||
it("1. showsAndHidesUsingKeyboardShortcuts", () => {
|
||||
// wait for the page to load
|
||||
cy.get(commonlocators.canvas);
|
||||
const isMac = Cypress.platform === "darwin";
|
||||
|
|
@ -29,7 +28,7 @@ describe("GlobalSearch", function() {
|
|||
}
|
||||
});
|
||||
|
||||
it("selectsWidget", () => {
|
||||
it("2. selectsWidget", () => {
|
||||
const table = dsl.dsl.children[2];
|
||||
cy.get(commonlocators.globalSearchTrigger).click({ force: true });
|
||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
|
|
@ -45,7 +44,7 @@ describe("GlobalSearch", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("navigatesToApi", () => {
|
||||
it("3. navigatesToApi", () => {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.CreateAPI("SomeApi");
|
||||
|
||||
|
|
@ -74,15 +73,12 @@ describe("GlobalSearch", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("navigatesToDatasourceHavingAQuery", () => {
|
||||
it("4. navigatesToDatasourceHavingAQuery", () => {
|
||||
cy.createPostgresDatasource();
|
||||
cy.get("@createDatasource").then((httpResponse) => {
|
||||
const expectedDatasource = httpResponse.response.body.data;
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", expectedDatasource.name)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
cy.NavigateToActiveDSQueryPane(expectedDatasource.name);
|
||||
cy.get(commonlocators.globalSearchTrigger).click({ force: true });
|
||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
cy.wait(1000); // modal open transition should be deterministic
|
||||
|
|
@ -100,7 +96,7 @@ describe("GlobalSearch", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("navigatesToPage", () => {
|
||||
it("5. navigatesToPage", () => {
|
||||
cy.Createpage("NewPage");
|
||||
cy.get(commonlocators.globalSearchTrigger).click({ force: true });
|
||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const queryEditor = require("../../../../locators/QueryEditor.json");
|
||||
|
||||
|
|
@ -10,7 +9,7 @@ describe("Check datasource doc links", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create postgres datasource", function() {
|
||||
it("1. Create postgres datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
cy.generateUUID().then((uid) => {
|
||||
|
|
@ -32,19 +31,14 @@ describe("Check datasource doc links", function() {
|
|||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("Check that documentation opens global modal", function() {
|
||||
cy.NavigateToQueryEditor();
|
||||
|
||||
cy.contains(".t--datasource-name", postgresDatasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
it("2. Check that documentation opens global modal", function() {
|
||||
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);
|
||||
cy.get(".t--datasource-documentation-link").click();
|
||||
cy.get(commonlocators.globalSearchModal);
|
||||
cy.get("body").click(0, 0);
|
||||
});
|
||||
|
||||
it("Delete the query and datasources", function() {
|
||||
it("3. Delete the query and datasources", function() {
|
||||
cy.get(queryEditor.queryMoreAction).click();
|
||||
cy.get(queryEditor.deleteUsingContext).click();
|
||||
cy.wait("@deleteAction").should(
|
||||
|
|
|
|||
|
|
@ -52,16 +52,11 @@ describe("Switch datasource", function() {
|
|||
);
|
||||
|
||||
cy.fillMongoDatasourceForm();
|
||||
cy.testSaveDatasource(false);
|
||||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("3. By switching datasources execute a query with both the datasources", function() {
|
||||
cy.NavigateToQueryEditor();
|
||||
|
||||
cy.contains(".t--datasource-name", postgresDatasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
cy.NavigateToActiveDSQueryPane(postgresDatasourceName);
|
||||
cy.get(queryLocators.templateMenu).click({ force: true });
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ describe("Rest Bugs tests", function() {
|
|||
});
|
||||
|
||||
cy.wait("@postExecute", { timeout: 8000 }).then(({ response }) => {
|
||||
//cy.log("4th response is :"+ JSON.stringify(response.body))
|
||||
//cy.log("Response is :"+ JSON.stringify(response.body))
|
||||
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
expect(response.body.data.body.type).to.eq("dog");
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ describe("Arango datasource test cases", function() {
|
|||
});
|
||||
|
||||
it("3. Create a new query from the datasource editor", function() {
|
||||
cy.saveDatasource();
|
||||
// cy.get(datasource.createQuerty).click();
|
||||
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuerty}`)
|
||||
.last()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ describe("MsSQL datasource test cases", function() {
|
|||
});
|
||||
|
||||
it("3. Create a new query from the datasource editor", function() {
|
||||
cy.saveDatasource();
|
||||
// cy.get(datasource.createQuerty).click();
|
||||
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuerty}`)
|
||||
.last()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ describe("MySQL datasource test cases", function() {
|
|||
});
|
||||
|
||||
it("3. Create a new query from the datasource editor", function() {
|
||||
cy.saveDatasource();
|
||||
// cy.get(datasource.createQuerty).click();
|
||||
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuerty}`)
|
||||
.last()
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ describe("MySQL datasource test cases", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create, test, save then delete a MySQL datasource", function() {
|
||||
it("1. Create, test, save then delete a MySQL datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.MySQL).click();
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
|
@ -20,7 +20,7 @@ describe("MySQL datasource test cases", function() {
|
|||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("Create with trailing white spaces in host address and database name, test, save then delete a MySQL datasource", function() {
|
||||
it("2. Create with trailing white spaces in host address and database name, test, save then delete a MySQL datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.MySQL).click();
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
|
@ -31,8 +31,7 @@ describe("MySQL datasource test cases", function() {
|
|||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("Create a new query from the datasource editor", function() {
|
||||
cy.saveDatasource();
|
||||
it("3. Create a new query from the datasource editor", function() {
|
||||
// cy.get(datasource.createQuerty).click();
|
||||
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuerty}`)
|
||||
.last()
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ describe("Postgres datasource test cases", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create, test, save then delete a postgres datasource", function() {
|
||||
it("1. Create, test, save then delete a postgres datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
|
@ -20,7 +20,7 @@ describe("Postgres datasource test cases", function() {
|
|||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("Create with trailing white spaces in host address and database name, test, save then delete a postgres datasource", function() {
|
||||
it("2. Create with trailing white spaces in host address and database name, test, save then delete a postgres datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
|
@ -31,8 +31,7 @@ describe("Postgres datasource test cases", function() {
|
|||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("Create a new query from the datasource editor", function() {
|
||||
cy.saveDatasource();
|
||||
it("3. Create a new query from the datasource editor", function() {
|
||||
// cy.get(datasource.createQuerty).click();
|
||||
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuerty}`)
|
||||
.last()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ describe("Redshift datasource test cases", function() {
|
|||
});
|
||||
|
||||
it("3. Create a new query from the datasource editor", function() {
|
||||
cy.saveDatasource();
|
||||
// cy.get(datasource.createQuerty).click();
|
||||
cy.get(`${datasourceEditor.datasourceCard} ${datasource.createQuerty}`)
|
||||
.last()
|
||||
|
|
|
|||
|
|
@ -13,24 +13,16 @@ describe("Entity explorer tests related to copy query", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create a query with dataSource in explorer", function() {
|
||||
it("1. Create a query with dataSource in explorer", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
|
||||
cy.fillPostgresDatasourceForm();
|
||||
|
||||
cy.testSaveDatasource();
|
||||
|
||||
cy.NavigateToQueryEditor();
|
||||
|
||||
cy.get("@createDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
});
|
||||
|
||||
cy.get("@getPluginForm").should(
|
||||
|
|
@ -65,7 +57,7 @@ describe("Entity explorer tests related to copy query", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("Create a page and copy query in explorer", function() {
|
||||
it("2. Create a page and copy query in explorer", function() {
|
||||
cy.Createpage(pageid);
|
||||
cy.GlobalSearchEntity("Query1");
|
||||
cy.xpath(apiwidget.popover)
|
||||
|
|
@ -89,7 +81,7 @@ describe("Entity explorer tests related to copy query", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("Delete query and rename datasource in explorer", function() {
|
||||
it("3. Delete query and rename datasource in explorer", function() {
|
||||
cy.get(commonlocators.entityExplorersearch).clear({ force: true });
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.GlobalSearchEntity(`${datasourceName}`);
|
||||
|
|
|
|||
|
|
@ -17,10 +17,7 @@ describe("Entity explorer datasource structure", function() {
|
|||
});
|
||||
|
||||
it("Entity explorer datasource structure", function() {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.wait("@createNewApi").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
|
|
@ -87,75 +84,64 @@ describe("Entity explorer datasource structure", function() {
|
|||
});
|
||||
|
||||
it("Refresh datasource structure", function() {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click({ force: true });
|
||||
|
||||
cy.GlobalSearchEntity(datasourceName);
|
||||
cy.get(`.t--entity.datasource:contains(${datasourceName})`)
|
||||
.find(explorer.collapse)
|
||||
.as("datasourceEntityCollapse");
|
||||
|
||||
cy.wait("@getDatasourceStructure").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
|
||||
cy.get(commonlocators.entityExplorersearch).clear({ force: true });
|
||||
//cy.GlobalSearchEntity(datasourceName);
|
||||
// cy.get(`.t--entity.datasource:contains(${datasourceName})`)
|
||||
// .find(explorer.collapse)
|
||||
// .as("datasourceEntityCollapse");
|
||||
// cy.wait("@getDatasourceStructure").should(
|
||||
// "have.nested.property",
|
||||
// "response.body.responseMeta.status",
|
||||
// 200,
|
||||
// );
|
||||
//cy.get(commonlocators.entityExplorersearch).clear({ force: true });
|
||||
|
||||
const tableName = Math.random()
|
||||
.toString(36)
|
||||
.replace(/[^a-z]+/g, "");
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
.focus()
|
||||
.type(`CREATE TABLE ${tableName} ( ID int );`);
|
||||
cy.typeValueNValidate(`CREATE TABLE public.${tableName} ( ID int );`);
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute", { timeout: 8000 }).then(({ response }) => {
|
||||
expect(response.body.data.request.requestParams.Query.value).to.contain(
|
||||
tableName,
|
||||
);
|
||||
});
|
||||
|
||||
cy.runQuery();
|
||||
//cy.wait(8000)
|
||||
// cy.GlobalSearchEntity(datasourceName);
|
||||
// cy.get("@datasourceEntityCollapse")
|
||||
// .first()
|
||||
// .click();
|
||||
// cy.xpath(explorer.datsourceEntityPopover)
|
||||
// .last()
|
||||
// .click({ force: true });
|
||||
|
||||
cy.GlobalSearchEntity(datasourceName);
|
||||
cy.get("@datasourceEntityCollapse")
|
||||
.first()
|
||||
.click();
|
||||
cy.xpath(explorer.datsourceEntityPopover)
|
||||
.last()
|
||||
.click({ force: true });
|
||||
|
||||
cy.get(explorer.refreshStructure).click({ force: true });
|
||||
cy.actionContextMenuByEntityName(datasourceName, "Refresh");
|
||||
cy.wait("@getDatasourceStructure").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.xpath("//div[text()='public." + tableName + "']").should("exist");
|
||||
|
||||
// cy.get(explorer.refreshStructure).click({ force: true });
|
||||
// TODO (Akash): Check for new table name to be visible in UI as well
|
||||
// cy.get(explorer.datasourceStructure)
|
||||
// .contains(`public.${tableName}`)
|
||||
// .should("be.visible");
|
||||
|
||||
cy.get(".CodeMirror")
|
||||
.first()
|
||||
.then((editor) => {
|
||||
editor[0].CodeMirror.setValue("");
|
||||
cy.wrap(editor)
|
||||
.find("textarea")
|
||||
.focus()
|
||||
.type(`DROP TABLE ${tableName};`);
|
||||
cy.WaitAutoSave();
|
||||
cy.runQuery();
|
||||
cy.get(queryEditor.queryMoreAction).click();
|
||||
cy.get(queryEditor.deleteUsingContext).click();
|
||||
cy.wait("@deleteAction").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
|
||||
cy.get(commonlocators.entityExplorersearch).clear({ force: true });
|
||||
cy.deleteDatasource(datasourceName);
|
||||
});
|
||||
cy.typeValueNValidate(`DROP TABLE public.${tableName}`);
|
||||
cy.runQuery();
|
||||
cy.actionContextMenuByEntityName(datasourceName, "Refresh");
|
||||
cy.wait("@getDatasourceStructure").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.xpath("//div[text()='public." + tableName + "']").should("not.exist");
|
||||
cy.deleteQueryUsingContext();
|
||||
cy.deleteDatasource(datasourceName);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -16,17 +16,15 @@ describe("Addwidget from Query and bind with other widgets", function() {
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
it("Create a PostgresDataSource", () => {
|
||||
it("1. Create a PostgresDataSource", () => {
|
||||
cy.createPostgresDatasource();
|
||||
cy.get("@createDatasource").then((httpResponse) => {
|
||||
datasourceName = httpResponse.response.body.data.name;
|
||||
});
|
||||
});
|
||||
it("Create a query and populate response by choosing addWidget and validate in Table Widget", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
it("2. Create a query and populate response by choosing addWidget and validate in Table Widget", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
@ -57,7 +55,7 @@ describe("Addwidget from Query and bind with other widgets", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("Input widget test with default value from table widget", () => {
|
||||
it("3. Input widget test with default value from table widget", () => {
|
||||
cy.SearchEntityandOpen("Input1");
|
||||
cy.get(widgetsPage.defaultInput).type(testdata.addInputWidgetBinding);
|
||||
cy.wait("@updateLayout").should(
|
||||
|
|
@ -67,7 +65,7 @@ describe("Addwidget from Query and bind with other widgets", function() {
|
|||
);
|
||||
});
|
||||
|
||||
it("validation of data displayed in input widget based on row data selected", function() {
|
||||
it("4. validation of data displayed in input widget based on row data selected", function() {
|
||||
cy.isSelectRow(1);
|
||||
cy.readTabledataPublish("1", "0").then((tabData) => {
|
||||
const tabValue = tabData;
|
||||
|
|
|
|||
|
|
@ -13,11 +13,7 @@ describe("Add widget - Postgress DataSource", function() {
|
|||
});
|
||||
|
||||
it("1. Verify 'Add to widget [Widget Suggestion]' functionality - Postgress", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
@ -25,7 +21,6 @@ describe("Add widget - Postgress DataSource", function() {
|
|||
.type("select * from configs");
|
||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
cy.WaitAutoSave();
|
||||
|
||||
cy.runQuery();
|
||||
cy.get(queryEditor.suggestedTableWidget).click();
|
||||
cy.SearchEntityandOpen("Table1");
|
||||
|
|
|
|||
|
|
@ -14,9 +14,8 @@ describe("Confirm run action", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("Confirm run action", () => {
|
||||
it("1. Confirm run action", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -18,11 +18,7 @@ describe("Create a query with a empty datasource, run, save the query", function
|
|||
});
|
||||
|
||||
it("2. Create a query for empty/incorrect datasource and validate", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.contains(".t--datasource-name", datasourceName)
|
||||
.find(queryLocators.createQuery)
|
||||
.click();
|
||||
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.get(".CodeMirror textarea")
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
const queryLocators = require("../../../../locators/QueryEditor.json");
|
||||
const generatePage = require("../../../../locators/GeneratePage.json");
|
||||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
import homePage from "../../../../locators/HomePage.json";
|
||||
|
||||
let datasourceName;
|
||||
|
||||
|
|
@ -9,9 +10,15 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
// afterEach(function() {
|
||||
// if (this.currentTest.state === "failed") {
|
||||
// Cypress.runner.stop();
|
||||
// }
|
||||
// });
|
||||
|
||||
// afterEach(() => {
|
||||
// if (queryName)
|
||||
// cy.deleteEntitybyName(queryName);
|
||||
// cy.actionContextMenuByEntityName(queryName);
|
||||
// });
|
||||
|
||||
it("1. Creates a new Mongo datasource", function() {
|
||||
|
|
@ -19,11 +26,11 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
cy.get(datasource.MongoDB).click();
|
||||
cy.getPluginFormsAndCreateDatasource();
|
||||
cy.fillMongoDatasourceForm();
|
||||
cy.testSaveDatasource(false);
|
||||
cy.generateUUID().then((uid) => {
|
||||
datasourceName = `Mongo CRUD ds ${uid}`;
|
||||
cy.renameDatasource(datasourceName);
|
||||
});
|
||||
cy.testSaveDatasource();
|
||||
});
|
||||
|
||||
it("2. Validate Raw query command, run and then delete the query", function() {
|
||||
|
|
@ -36,29 +43,31 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)", "Raw");
|
||||
cy.get(queryLocators.templateMenu).click();
|
||||
cy.typeValueNValidate('{"find": "listingsAndReviews","limit": 10}');
|
||||
cy.typeValueNValidate('{"find": "listingAndReviews","limit": 10}');
|
||||
|
||||
// cy.get(".CodeMirror textarea")
|
||||
// .first()
|
||||
// .focus()
|
||||
// .type(`{"find": "listingsAndReviews","limit": 10}`, {
|
||||
// .type(`{"find": "listingAndReviews","limit": 10}`, {
|
||||
// parseSpecialCharSequences: false,
|
||||
// });
|
||||
// cy.EvaluateCurrentValue(`{"find": "listingsAndReviews","limit": 10}`);
|
||||
// cy.EvaluateCurrentValue(`{"find": "listingAndReviews","limit": 10}`);
|
||||
|
||||
cy.runAndDeleteQuery(); //exeute actions & 200 response is verified in this method
|
||||
cy.runQuery();
|
||||
cy.xpath(queryLocators.countText).should("have.text", "10 Records");
|
||||
cy.deleteQueryUsingContext();
|
||||
});
|
||||
|
||||
it("3. Validate Find documents command & Run and then delete the query", function() {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.setQueryTimeout(20000);
|
||||
|
||||
//cy.xpath(queryLocators.findDocs).should("exist"); //Verifying update is success or below line
|
||||
//cy.expect(queryLocators.findDocs).to.exist;
|
||||
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)");
|
||||
|
||||
cy.typeValueNValidate("listingsAndReviews", "Collection");
|
||||
cy.typeValueNValidate("listingAndReviews", "Collection");
|
||||
cy.runQuery();
|
||||
cy.xpath(queryLocators.countText).should("have.text", "10 Records");
|
||||
|
||||
|
|
@ -76,9 +85,9 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
cy.typeValueNValidate("5", "Limit"); //Limit field
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body[0].house_rules).to.contains(
|
||||
"There will be a packet with house rules in the unit",
|
||||
"Response is not as expected for Aggregate commmand",
|
||||
expect(response.body.data.body[0].description).to.contains(
|
||||
"The ideal apartment to visit the magnificent city of Porto and the northern region of Portugal, with family or with a couple of friends",
|
||||
"Response is not as expected for Find commmand with multiple conditions",
|
||||
);
|
||||
});
|
||||
cy.xpath(queryLocators.countText).should("have.text", "5 Records");
|
||||
|
|
@ -87,9 +96,9 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
cy.onlyQueryRun();
|
||||
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body[0].house_rules).to.contains(
|
||||
"Airbnb provides recommended to know the following information",
|
||||
"Response is not as expected for Aggregate commmand",
|
||||
expect(response.body.data.body[0].description).to.contains(
|
||||
"My place is close to the beach, family-friendly activities, great views, and a short drive to art and culture, and restaurants and dining",
|
||||
"Response is not as expected for Find commmand with multiple conditions",
|
||||
);
|
||||
});
|
||||
cy.xpath(queryLocators.countText).should("have.text", "5 Records");
|
||||
|
|
@ -98,20 +107,26 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
|
||||
it("4. Validate Count command & Run and then delete the query", function() {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
//cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)", "Count");
|
||||
cy.typeValueNValidate("listingsAndReviews", "Collection");
|
||||
cy.typeValueNValidate("listingAndReviews", "Collection");
|
||||
cy.runQuery();
|
||||
cy.typeValueNValidate("{beds : {$lte: 2}}", "Query");
|
||||
cy.runAndDeleteQuery(); //exeute actions - 200 response is verified in this method
|
||||
cy.typeValueNValidate("{guests_included : {$gte: 2}}", "Query");
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body.n).to.be.above(
|
||||
0,
|
||||
"Response is not as expected for Count commmand",
|
||||
);
|
||||
});
|
||||
cy.deleteQueryUsingContext();
|
||||
});
|
||||
|
||||
it("5. Validate Distinct command & Run and then delete the query", function() {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)", "Distinct");
|
||||
cy.typeValueNValidate("listingsAndReviews", "Collection");
|
||||
cy.typeValueNValidate("{beds : {$lte: 2}}", "Query");
|
||||
cy.typeValueNValidate("listingAndReviews", "Collection");
|
||||
cy.typeValueNValidate("{price : {$gte: 100}}", "Query");
|
||||
cy.typeValueNValidate("property_type", "Key");
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
|
|
@ -125,9 +140,8 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
|
||||
it("6. Validate Aggregate command & Run and then delete the query", function() {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)", "Aggregate");
|
||||
cy.typeValueNValidate("listingsAndReviews", "Collection");
|
||||
cy.typeValueNValidate("listingAndReviews", "Collection");
|
||||
cy.typeValueNValidate(
|
||||
'[{ $project: { count: { $size:"$amenities" }}}]',
|
||||
"Array of Pipelines",
|
||||
|
|
@ -151,10 +165,10 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
cy.NavigateToDSGeneratePage(datasourceName);
|
||||
cy.get(generatePage.selectTableDropdown).click();
|
||||
cy.get(generatePage.dropdownOption)
|
||||
.first()
|
||||
// .contains("listingsAndReviews")
|
||||
//.first()
|
||||
.contains("listingAndReviews")
|
||||
// .scrollIntoView()
|
||||
// .should("be.visible")
|
||||
.should("be.visible")
|
||||
.click();
|
||||
|
||||
cy.get(generatePage.generatePageFormSubmitBtn).click();
|
||||
|
|
@ -186,38 +200,37 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
"response.body.responseMeta.status",
|
||||
409,
|
||||
);
|
||||
cy.deleteEntitybyName("ListingsAndReviews");
|
||||
cy.actionContextMenuByEntityName("ListingAndReviews");
|
||||
});
|
||||
|
||||
it("9. Bug 7399: Validate Form based & Raw command based templates", function() {
|
||||
let id;
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)");
|
||||
cy.xpath(queryLocators.mongoFormFind).click({ force: true });
|
||||
cy.xpath(queryLocators.listingAndReviewContext).click({ force: true });
|
||||
cy.xpath("//div[text()='Find']")
|
||||
.click()
|
||||
.wait(100); //wait for Find form to open
|
||||
cy.EvaluatFieldValue("Collection").then((colData) => {
|
||||
colData = colData.replace("{", "").replace("}", "");
|
||||
cy.log("Collection value is fieldData: " + colData);
|
||||
cy.wrap(colData).as("colData");
|
||||
let localcolData = colData.replace("{", "").replace("}", "");
|
||||
cy.log("Collection value is fieldData: " + localcolData);
|
||||
cy.wrap(localcolData).as("colData");
|
||||
});
|
||||
cy.EvaluatFieldValue("Query").then((queryData) => {
|
||||
queryData = queryData.replace("{", "").replace("}", "");
|
||||
id = queryData;
|
||||
cy.log("Query value is : " + queryData);
|
||||
cy.wrap(queryData).as("queryData");
|
||||
let localqueryData = queryData.replace("{", "").replace("}", "");
|
||||
id = localqueryData;
|
||||
cy.log("Query value is : " + localqueryData);
|
||||
cy.wrap(localqueryData).as("queryData");
|
||||
});
|
||||
cy.EvaluatFieldValue("Sort").then((sortData) => {
|
||||
sortData = sortData.replace("{", "").replace("}", "");
|
||||
cy.log("Sort value is : " + sortData);
|
||||
cy.wrap(sortData).as("sortData");
|
||||
let localsortData = sortData.replace("{", "").replace("}", "");
|
||||
cy.log("Sort value is : " + localsortData);
|
||||
cy.wrap(localsortData).as("sortData");
|
||||
});
|
||||
cy.EvaluatFieldValue("Limit").then((limitData) => {
|
||||
limitData = limitData.replace("{", "").replace("}", "");
|
||||
cy.log("Limit value is : " + limitData);
|
||||
cy.wrap(limitData).as("limitData");
|
||||
let locallimitData = limitData.replace("{", "").replace("}", "");
|
||||
cy.log("Limit value is : " + locallimitData);
|
||||
cy.wrap(locallimitData).as("limitData");
|
||||
});
|
||||
|
||||
cy.onlyQueryRun();
|
||||
|
|
@ -261,8 +274,8 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
.replace(/['"]+/g, ""),
|
||||
);
|
||||
});
|
||||
cy.deleteEntitybyName("Query1");
|
||||
cy.deleteEntitybyName("Query2");
|
||||
cy.actionContextMenuByEntityName("Query1");
|
||||
cy.actionContextMenuByEntityName("Query2");
|
||||
});
|
||||
|
||||
it("10. Delete the datasource after NewPage deletion is success", () => {
|
||||
|
|
@ -280,4 +293,167 @@ describe("Create a query with a mongo datasource, run, save and then delete the
|
|||
expect(response.status).to.be.oneOf([200, 409]);
|
||||
});
|
||||
});
|
||||
|
||||
it("11. Bug 6375: Cyclic Dependency error occurs and the app crashes when the user generate table and chart from mongo query", function() {
|
||||
cy.NavigateToHome();
|
||||
cy.get(homePage.createNew)
|
||||
.first()
|
||||
.click({ force: true });
|
||||
cy.wait("@createNewApplication").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
201,
|
||||
);
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.MongoDB).click({ force: true });
|
||||
cy.fillMongoDatasourceForm();
|
||||
|
||||
cy.generateUUID().then((uid) => {
|
||||
datasourceName = `Mongo Documents ${uid}`;
|
||||
cy.renameDatasource(datasourceName);
|
||||
cy.wrap(datasourceName).as("dSName");
|
||||
});
|
||||
cy.testSaveDatasource();
|
||||
|
||||
//Insert documents
|
||||
cy.get("@dSName").then((dbName) => {
|
||||
cy.NavigateToActiveDSQueryPane(dbName);
|
||||
});
|
||||
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Find Document(s)",
|
||||
"Insert Document(s)",
|
||||
);
|
||||
cy.typeValueNValidate("NonAsciiTest", "Collection");
|
||||
|
||||
let nonAsciiDoc = `[{"_id":1, "Från" :"Raksha" , "Frõ" :"Active", "Leverantör":"De Bolster", "Frö":"Basilika - Thai 'Siam Queen'"},
|
||||
{"_id":2, "Från" :"Vivek" , "Frõ" :"Active", "Leverantör":"De Bolster", "Frö":"Sallad - Oakleaf 'Salad Bowl'"},
|
||||
{"_id":3, "Från" :"Prapulla" , "Frõ" :"Active", "Leverantör":"De Bolster", "Frö":"Sallad - Oakleaf 'Red Salad Bowl'"}]`;
|
||||
|
||||
cy.typeValueNValidate(nonAsciiDoc, "Documents");
|
||||
cy.EvaluateCurrentValue(nonAsciiDoc);
|
||||
cy.getEntityName().then((entity) => {
|
||||
cy.wrap(entity).as("entity");
|
||||
});
|
||||
cy.runQuery();
|
||||
|
||||
//Find the Inserted Document
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Insert Document(s)",
|
||||
"Find Document(s)",
|
||||
);
|
||||
cy.runQuery();
|
||||
cy.xpath(queryLocators.countText).should("have.text", "3 Records");
|
||||
|
||||
cy.get("@dSName").then((dbName) => {
|
||||
cy.actionContextMenuByEntityName(dbName, "Refresh");
|
||||
});
|
||||
cy.xpath("//div[text()='NonAsciiTest']").should("exist");
|
||||
|
||||
//Verifying Suggested Widgets functionality
|
||||
cy.get(queryLocators.suggestedTableWidget)
|
||||
.click()
|
||||
.wait(1000);
|
||||
cy.wait("@updateLayout").then(({ response }) => {
|
||||
cy.log("1st Response is :" + JSON.stringify(response.body));
|
||||
|
||||
//expect(response.body.data.dsl.children[0].type).to.eq("TABLE_WIDGET");
|
||||
});
|
||||
|
||||
cy.get("@entity").then((entityN) => cy.selectEntityByName(entityN));
|
||||
cy.get(queryLocators.suggestedWidgetChart)
|
||||
.click()
|
||||
.wait(1000);
|
||||
cy.wait("@updateLayout").then(({ response }) => {
|
||||
cy.log("2nd Response is :" + JSON.stringify(response.body));
|
||||
|
||||
//expect(response.body.data.dsl.children[1].type).to.eq("CHART_WIDGET");
|
||||
});
|
||||
|
||||
cy.VerifyErrorMsgAbsence("Cyclic dependency found while evaluating");
|
||||
cy.get("@entity").then((entityN) => cy.selectEntityByName(entityN));
|
||||
|
||||
//Update Document - Single Document
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Find Document(s)",
|
||||
"Update Document(s)",
|
||||
);
|
||||
cy.typeValueNValidate("{_id: {$eq:1}}", "Query");
|
||||
cy.typeValueNValidate("{$set:{ 'Frõ': 'InActive'}}", "Update");
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body.nModified).to.eq(1);
|
||||
});
|
||||
|
||||
// //Update Document - All Matching Documents
|
||||
// cy.validateNSelectDropdown("Commands", "Find Document(s)", "Update Document(s)");
|
||||
// cy.typeValueNValidate("{_id: {$gte:2}}", "Query");
|
||||
// cy.typeValueNValidate("{$set:{ 'Frõ': 'InActive'}}", "Update");
|
||||
// cy.validateNSelectDropdown("Limit", "Single Document", "All Matching Documents");
|
||||
// cy.runQuery()
|
||||
// cy.wait("@postExecute").then(({ response }) => {
|
||||
// expect(response.body.data.body.nModified).to.eq(2);
|
||||
// });
|
||||
|
||||
// //Verify Updation Successful:
|
||||
// cy.validateNSelectDropdown("Commands", "Update Document(s)", "Find Document(s)");
|
||||
// cy.runQuery()
|
||||
// cy.wait("@postExecute").then(({ response }) => {
|
||||
// expect(response.body.data.body[0].Frõ).to.eq('InActive');
|
||||
// });
|
||||
|
||||
//Delete Documents using both Single & Multiple Documents
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Update Document(s)",
|
||||
"Delete Document(s)",
|
||||
);
|
||||
cy.typeValueNValidate("{_id : {$eq: 1 }}", "Query");
|
||||
cy.validateNSelectDropdown("Limit", "Single Document");
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body.n).to.eq(1);
|
||||
});
|
||||
|
||||
cy.typeValueNValidate("{_id : {$lte: 3 }}", "Query");
|
||||
cy.validateNSelectDropdown(
|
||||
"Limit",
|
||||
"Single Document",
|
||||
"All Matching Documents",
|
||||
);
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body.n).to.eq(2);
|
||||
});
|
||||
|
||||
//Verify Deletion is Successful:
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Delete Document(s)",
|
||||
"Find Document(s)",
|
||||
);
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.body.length).to.eq(0); //checking that body is empty array
|
||||
});
|
||||
|
||||
//Delete Collection:
|
||||
cy.validateNSelectDropdown("Commands", "Find Document(s)", "Raw");
|
||||
//cy.get(queryLocators.templateMenu).click();
|
||||
cy.typeValueNValidate('{"drop": "NonAsciiTest"}');
|
||||
cy.runQuery();
|
||||
cy.get("@dSName").then((dbName) => {
|
||||
cy.actionContextMenuByEntityName(dbName, "Refresh");
|
||||
});
|
||||
cy.xpath("//div[text()='NonAsciiTest']").should("not.exist"); //validating drop is successful!
|
||||
|
||||
cy.deleteQueryUsingContext();
|
||||
cy.actionContextMenuByEntityName("Table1");
|
||||
cy.actionContextMenuByEntityName("Chart1");
|
||||
cy.wait(3000); //waiting for deletion to complete! - else next case fails
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -9,6 +9,12 @@ describe("Validate CRUD queries for Postgres along with UI flow verifications",
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
// afterEach(function() {
|
||||
// if (this.currentTest.state === "failed") {
|
||||
// Cypress.runner.stop();
|
||||
// }
|
||||
// });
|
||||
|
||||
it("1. Creates a new Postgres datasource", function() {
|
||||
cy.NavigateToDatasourceEditor();
|
||||
cy.get(datasource.PostgreSQL).click();
|
||||
|
|
@ -233,7 +239,7 @@ describe("Validate CRUD queries for Postgres along with UI flow verifications",
|
|||
"response.body.responseMeta.status",
|
||||
409,
|
||||
);
|
||||
cy.deleteEntitybyName("Public.users_crud");
|
||||
cy.actionContextMenuByEntityName("Public.users_crud");
|
||||
});
|
||||
|
||||
it("10. Validate Drop of the Newly Created Table from Postgress datasource", () => {
|
||||
|
|
@ -241,7 +247,10 @@ describe("Validate CRUD queries for Postgres along with UI flow verifications",
|
|||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.get(queryLocators.templateMenu).click({ force: true });
|
||||
cy.typeValueNValidate(deleteTblQuery);
|
||||
cy.runAndDeleteQuery();
|
||||
cy.runQuery();
|
||||
cy.actionContextMenuByEntityName(datasourceName, "Refresh");
|
||||
cy.xpath("//div[text()='public.users_crud']").should("not.exist"); //validating drop is successful!
|
||||
cy.deleteQueryUsingContext();
|
||||
});
|
||||
|
||||
it("11. Bug 9425: The application is breaking when user run the query with wrong table name", function() {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ const queryLocators = require("../../../../locators/QueryEditor.json");
|
|||
const datasource = require("../../../../locators/DatasourcesEditor.json");
|
||||
const generatePage = require("../../../../locators/GeneratePage.json");
|
||||
const dsl = require("../../../../fixtures/snippingTableDsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
let datasourceName;
|
||||
|
||||
|
|
@ -10,9 +11,15 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
cy.startRoutesForDatasource();
|
||||
});
|
||||
|
||||
// afterEach(function() {
|
||||
// if (this.currentTest.state === "failed") {
|
||||
// Cypress.runner.stop();
|
||||
// }
|
||||
// });
|
||||
|
||||
// afterEach(() => {
|
||||
// if (queryName)
|
||||
// cy.deleteEntitybyName(queryName);
|
||||
// cy.actionContextMenuByEntityName(queryName);
|
||||
// });
|
||||
|
||||
it("1. Creates a new Amazon S3 datasource", function() {
|
||||
|
|
@ -54,7 +61,8 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
cy.runAndDeleteQuery();
|
||||
});
|
||||
|
||||
it("3. Validate Create a new file in bucket command, Verify possible error msgs, run & delete the query", () => {
|
||||
it("3. Validate Create/List Files/Read files in bucket command for new file, Verify possible error msgs, run & delete the query", () => {
|
||||
//Create File
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown(
|
||||
|
|
@ -128,22 +136,24 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
});
|
||||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("4. Validate List Files/Read files in bucket command for new file, Verify possible error msgs, run & delete the query", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown("Commands", "List files in bucket");
|
||||
//List file
|
||||
// cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
// cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Create a new file",
|
||||
"List files in bucket",
|
||||
);
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").should(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body).to.contains(
|
||||
"Mandatory parameter 'Bucket Name' is missing.",
|
||||
);
|
||||
});
|
||||
cy.typeValueNValidate("assets-test.appsmith.com", "Bucket Name");
|
||||
// cy.onlyQueryRun();
|
||||
// cy.wait("@postExecute").should(({ response }) => {
|
||||
// expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
// expect(response.body.data.body).to.contains(
|
||||
// "Mandatory parameter 'Bucket Name' is missing.",
|
||||
// );
|
||||
// });
|
||||
// cy.typeValueNValidate("assets-test.appsmith.com", "Bucket Name");
|
||||
|
||||
cy.typeValueNValidate("Auto", "Prefix");
|
||||
cy.onlyQueryRun();
|
||||
|
|
@ -196,13 +206,13 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
// });
|
||||
// cy.typeValueNValidate("AutoTest", "Bucket Name");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body).to.contains(
|
||||
"Required parameter 'File Path' is missing.",
|
||||
);
|
||||
});
|
||||
// cy.onlyQueryRun();
|
||||
// cy.wait("@postExecute").then(({ response }) => {
|
||||
// expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
// expect(response.body.data.body).to.contains(
|
||||
// "Required parameter 'File Path' is missing.",
|
||||
// );
|
||||
// });
|
||||
cy.typeValueNValidate("Auto", "File Path");
|
||||
|
||||
// cy.onlyQueryRun();
|
||||
|
|
@ -258,83 +268,7 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("5. Validate Read file command, Verify possible error msgs, run & delete the query", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.setQueryTimeout(30000);
|
||||
cy.validateNSelectDropdown("Commands", "List files in bucket", "Read file");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").should(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body).to.contains(
|
||||
"Mandatory parameter 'Bucket Name' is missing.",
|
||||
);
|
||||
});
|
||||
cy.typeValueNValidate("AutoTest", "Bucket Name");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body).to.contains(
|
||||
"Required parameter 'File Path' is missing.",
|
||||
);
|
||||
});
|
||||
cy.typeValueNValidate("Auto", "File Path");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body.split("(")[0].trim()).to.be.oneOf([
|
||||
"The specified bucket does not exist",
|
||||
"The specified bucket is not valid.",
|
||||
]);
|
||||
});
|
||||
|
||||
cy.typeValueNValidate("assets-test.appsmith.com", "Bucket Name");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body).to.contain(
|
||||
"The specified key does not exist.",
|
||||
);
|
||||
});
|
||||
|
||||
cy.typeValueNValidate("Autofile", "File Path");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(false);
|
||||
expect(response.body.data.body).to.contain(
|
||||
"The specified key does not exist.",
|
||||
);
|
||||
});
|
||||
|
||||
cy.typeValueNValidate("AutoFile", "File Path");
|
||||
|
||||
//Commenting below since below dropdown is removed from Read
|
||||
//cy.validateNSelectDropdown("File Data Type", "Base64", "Text / Binary");
|
||||
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
expect(response.body.data.body.fileData).to.not.eq(
|
||||
"Hi, this is Automation script adding File!",
|
||||
);
|
||||
});
|
||||
|
||||
cy.validateNSelectDropdown("Base64 Encode File - Yes/No", "Yes", "No");
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
expect(response.body.data.body.fileData).to.eq(
|
||||
"Hi, this is Automation script adding File!",
|
||||
);
|
||||
});
|
||||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("6. Validate Delete file command for new file, Verify possible error msgs, run & delete the query", () => {
|
||||
it("4. Validate Delete file command for new file & Validating List Files in bucket command after new file is deleted, Verify possible error msgs, run & delete the query", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
//cy.renameWithInPane(queryName);
|
||||
cy.setQueryTimeout(30000);
|
||||
|
|
@ -376,14 +310,18 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
expect(response.body.data.body.status).to.eq("File deleted successfully");
|
||||
});
|
||||
//cy.selectEntityByName("Query1");
|
||||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("7. Validate List Files in bucket command after new file is deleted, Verify possible error msgs, run & delete the query", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.validateNSelectDropdown("Commands", "List files in bucket");
|
||||
cy.typeValueNValidate("assets-test.appsmith.com", "Bucket Name");
|
||||
//cy.selectEntityByName("Query1");
|
||||
//cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
|
||||
//Validating List Files in bucket command after new file is deleted
|
||||
//cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
"Delete file",
|
||||
"List files in bucket",
|
||||
);
|
||||
//cy.typeValueNValidate("assets-test.appsmith.com", "Bucket Name");
|
||||
cy.typeValueNValidate("Auto", "Prefix");
|
||||
cy.onlyQueryRun();
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
|
|
@ -393,7 +331,8 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("8. Validate Create a new file in bucket for UI Operations, run & delete the query", () => {
|
||||
it("5. Create new file in bucket for UI Operations & Verify Search, Delete operations from NewPage UI created in S3 ds & Bug 8686, 8684", function() {
|
||||
//Creating new file in bucket
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.validateNSelectDropdown(
|
||||
"Commands",
|
||||
|
|
@ -415,9 +354,7 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
});
|
||||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("9. Verify Search, Delete operations from NewPage UI created in S3 ds & Bug 8686, 8684", function() {
|
||||
// cy.wrap(Cypress.automation('remote:debugger:protocol', {
|
||||
// command: 'Browser.grantPermissions',
|
||||
// params: {
|
||||
|
|
@ -428,8 +365,9 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
// },
|
||||
// }))
|
||||
|
||||
//Generate page & other UI ops
|
||||
cy.NavigateToDSGeneratePage(datasourceName);
|
||||
|
||||
cy.wait(3000);
|
||||
//Verifying List of Files from UI
|
||||
cy.get(generatePage.selectTableDropdown).click();
|
||||
cy.get(generatePage.dropdownOption)
|
||||
|
|
@ -491,7 +429,7 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
); //verify Deletion of file is success from UI also
|
||||
});
|
||||
|
||||
it("10. Validate Deletion of the Newly Created Page", () => {
|
||||
it("6. Validate Deletion of the Newly Created Page", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.NavigateToActiveTab();
|
||||
cy.contains(".t--datasource-name", datasourceName).click();
|
||||
|
|
@ -502,10 +440,157 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
"response.body.responseMeta.status",
|
||||
409,
|
||||
);
|
||||
cy.deleteEntitybyName("Assets-test.appsmith.com");
|
||||
cy.actionContextMenuByEntityName("Assets-test.appsmith.com");
|
||||
});
|
||||
|
||||
it("11. Verify 'Add to widget [Widget Suggestion]' functionality - S3", () => {
|
||||
it("7. Bug 9069, 9201, 6975, 9922: Upload/Update query is failing in S3 crud pages", function() {
|
||||
cy.NavigateToDSGeneratePage(datasourceName);
|
||||
cy.wait(3000);
|
||||
//Verifying List of Files from UI
|
||||
cy.get(generatePage.selectTableDropdown).click();
|
||||
cy.get(generatePage.dropdownOption)
|
||||
.contains("assets-test.appsmith.com")
|
||||
.scrollIntoView()
|
||||
.should("be.visible")
|
||||
.click();
|
||||
cy.get(generatePage.generatePageFormSubmitBtn).click();
|
||||
cy.wait("@replaceLayoutWithCRUDPage").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
201,
|
||||
);
|
||||
cy.wait("@getActions");
|
||||
cy.wait("@postExecute").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
|
||||
cy.VerifyErrorMsgAbsence("Cyclic dependency found while evaluating"); //Verifies 8686
|
||||
cy.ClickGotIt();
|
||||
|
||||
//Upload: 1
|
||||
let fixturePath = "GlobeChristmas.jpeg";
|
||||
cy.wait(3000);
|
||||
cy.clickButton("Select Files"); //1 files selected
|
||||
cy.get(generatePage.uploadFilesS3).attachFile(fixturePath);
|
||||
cy.wait(2000);
|
||||
cy.get(generatePage.uploadBtn).click();
|
||||
cy.wait(1000);
|
||||
cy.clickButton("Upload");
|
||||
cy.wait("@postExecute").should(
|
||||
"have.nested.property",
|
||||
"response.body.data.isExecutionSuccess",
|
||||
true,
|
||||
);
|
||||
|
||||
cy.get(commonlocators.toastAction)
|
||||
.should("have.length", 1)
|
||||
.should("contain.text", "File Uploaded"); //Verifies bug # 6975
|
||||
|
||||
//Verifying Searching File from UI
|
||||
cy.xpath(queryLocators.searchFilefield)
|
||||
.type("GlobeChri")
|
||||
.wait(4000); //for search to finish
|
||||
expect(
|
||||
cy.xpath(
|
||||
"//div[@data-cy='overlay-comments-wrapper']//span[text()='" +
|
||||
fixturePath +
|
||||
"']",
|
||||
),
|
||||
).to.exist;
|
||||
|
||||
cy.xpath(
|
||||
"//div[@data-cy='overlay-comments-wrapper']//span[text()='" +
|
||||
fixturePath +
|
||||
"']",
|
||||
).scrollIntoView();
|
||||
|
||||
//Verifying DeleteFile icon from UI
|
||||
cy.xpath(
|
||||
"//button/span[@icon='trash']/ancestor::div[contains(@class,'t--widget-iconbuttonwidget')]/preceding-sibling::div[contains(@class, 't--widget-textwidget')]//span[text()='" +
|
||||
fixturePath +
|
||||
"']/ancestor::div[contains(@class, 't--widget-textwidget')]/following-sibling::div[contains(@class,'t--widget-iconbuttonwidget')]",
|
||||
)
|
||||
.should("be.visible")
|
||||
.last()
|
||||
.click(); //Verifies 8684
|
||||
cy.VerifyErrorMsgAbsence("Cyclic dependency found while evaluating"); //Verifies 8686
|
||||
|
||||
expect(
|
||||
cy.xpath("//span[text()='Are you sure you want to delete the file?']"),
|
||||
).to.exist; //verify Delete File dialog appears
|
||||
cy.clickButton("Confirm").wait(1000); //wait for Delete operation to be successfull, //Verifies 8684
|
||||
cy.wait("@postExecute").then(({ response }) => {
|
||||
expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
});
|
||||
cy.get("span:contains('" + fixturePath + "')", { timeout: 10000 }).should(
|
||||
"not.exist",
|
||||
); //verify Deletion of file is success from UI also
|
||||
|
||||
//Commenting below since bug # 9922 is open
|
||||
|
||||
// //Upload: 2 - Bug verification 9201
|
||||
// fixturePath = "Vase.jpeg";
|
||||
// cy.wait(3000);
|
||||
// cy.clickButton("Select Files"); //1 files selected
|
||||
// cy.get(generatePage.uploadFilesS3).attachFile(fixturePath);
|
||||
// cy.wait(2000);
|
||||
// cy.get(generatePage.uploadBtn).click();
|
||||
// cy.wait(1000);
|
||||
// cy.clickButton("Upload");
|
||||
// cy.wait("@postExecute").should(
|
||||
// "have.nested.property",
|
||||
// "response.body.data.isExecutionSuccess",
|
||||
// true,
|
||||
// );
|
||||
|
||||
// cy.get(commonlocators.toastAction)
|
||||
// .should("have.length", 1)
|
||||
// .should("contain.text", "File Uploaded"); //Verifies bug # 6975
|
||||
|
||||
// //Verifying Searching File from UI
|
||||
// cy.xpath(queryLocators.searchFilefield)
|
||||
// .clear()
|
||||
// .type("VVase")
|
||||
// .wait(3000); //for search to finish
|
||||
// expect(
|
||||
// cy.xpath(
|
||||
// "//div[@data-cy='overlay-comments-wrapper']//span[text()='" + fixturePath + "']",
|
||||
// ),
|
||||
// ).to.exist; //Verifies bug # 9922
|
||||
|
||||
// cy.xpath(
|
||||
// "//div[@data-cy='overlay-comments-wrapper']//span[text()='" + fixturePath + "']",
|
||||
// ).scrollIntoView();
|
||||
|
||||
// //Verifying DeleteFile icon from UI
|
||||
// cy.xpath(
|
||||
// "//button/span[@icon='trash']/ancestor::div[contains(@class,'t--widget-iconbuttonwidget')]/preceding-sibling::div[contains(@class, 't--widget-textwidget')]//span[text()='" +
|
||||
// fixturePath +
|
||||
// "']/ancestor::div[contains(@class, 't--widget-textwidget')]/following-sibling::div[contains(@class,'t--widget-iconbuttonwidget')]",
|
||||
// )
|
||||
// .should("be.visible")
|
||||
// .last()
|
||||
// .click(); //Verifies 8684
|
||||
// cy.VerifyErrorMsgAbsence("Cyclic dependency found while evaluating"); //Verifies 8686
|
||||
|
||||
// expect(
|
||||
// cy.xpath("//span[text()='Are you sure you want to delete the file?']"),
|
||||
// ).to.exist; //verify Delete File dialog appears
|
||||
// cy.clickButton("Confirm").wait(1000); //wait for Delete operation to be successfull, //Verifies 8684
|
||||
// cy.wait("@postExecute").then(({ response }) => {
|
||||
// expect(response.body.data.isExecutionSuccess).to.eq(true);
|
||||
// });
|
||||
// cy.get("span:contains('" + fixturePath + "')", { timeout: 10000 }).should(
|
||||
// "not.exist",
|
||||
// ); //verify Deletion of file is success from UI also
|
||||
|
||||
//Deleting the page:
|
||||
cy.actionContextMenuByEntityName("Assets-test.appsmith.com");
|
||||
});
|
||||
|
||||
it("8. Verify 'Add to widget [Widget Suggestion]' functionality - S3", () => {
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.validateNSelectDropdown("Commands", "List files in bucket");
|
||||
cy.typeValueNValidate("assets-test.appsmith.com", "Bucket Name");
|
||||
|
|
@ -516,29 +601,25 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
cy.xpath(queryLocators.suggestedWidgetDropdown)
|
||||
.click()
|
||||
.wait(1000);
|
||||
cy.wait("@updateLayout").then(({ response }) => {
|
||||
expect(response.body.data.dsl.children[0].type).to.eq("DROP_DOWN_WIDGET");
|
||||
});
|
||||
cy.get(commonlocators.dropdownWidget).validateWidgetExists();
|
||||
|
||||
cy.get("@entity").then((entityN) => cy.selectEntityByName(entityN));
|
||||
cy.get(queryLocators.suggestedTableWidget)
|
||||
.click()
|
||||
.wait(1000);
|
||||
cy.wait("@updateLayout").then(({ response }) => {
|
||||
expect(response.body.data.dsl.children[1].type).to.eq("TABLE_WIDGET");
|
||||
});
|
||||
cy.get(commonlocators.TableRow).validateWidgetExists();
|
||||
|
||||
cy.get("@entity").then((entityN) => cy.selectEntityByName(entityN));
|
||||
cy.xpath(queryLocators.suggestedWidgetText)
|
||||
.click()
|
||||
.wait(1000);
|
||||
cy.wait("@updateLayout").then(({ response }) => {
|
||||
expect(response.body.data.dsl.children[2].type).to.eq("TEXT_WIDGET");
|
||||
});
|
||||
cy.get(commonlocators.textWidget).validateWidgetExists();
|
||||
|
||||
cy.get("@entity").then((entityN) => cy.selectEntityByName(entityN));
|
||||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
});
|
||||
|
||||
it("12. Verify 'Connect Widget [snipping]' functionality - S3 ", () => {
|
||||
it("9. Verify 'Connect Widget [snipping]' functionality - S3 ", () => {
|
||||
cy.addDsl(dsl);
|
||||
cy.NavigateToActiveDSQueryPane(datasourceName);
|
||||
cy.getEntityName().then((entity) => {
|
||||
|
|
@ -552,19 +633,15 @@ describe("Validate CRUD queries for Amazon S3 along with UI flow verifications",
|
|||
.click()
|
||||
.wait(1500); //wait for table to load!
|
||||
|
||||
cy.wait("@updateLayout").then(({ response }) => {
|
||||
expect(response.body.data.dsl.children[0].widgetName).to.eq("Table1");
|
||||
// expect(response.body.data.messages[0]).to.contain(
|
||||
// "will be executed automatically on page load",
|
||||
// );
|
||||
});
|
||||
cy.get(commonlocators.TableRow).validateWidgetExists();
|
||||
|
||||
cy.get("@entity").then((entityN) => cy.selectEntityByName(entityN));
|
||||
cy.deleteQueryUsingContext(); //exeute actions & 200 response is verified in this method
|
||||
cy.deleteEntitybyName("Table1");
|
||||
cy.actionContextMenuByEntityName("Table1");
|
||||
cy.wait(3000); //waiting for deletion to complete! - else next case fails
|
||||
});
|
||||
|
||||
it("13. Deletes the datasource", () => {
|
||||
it("10. Deletes the datasource", () => {
|
||||
cy.NavigateToQueryEditor();
|
||||
cy.NavigateToActiveTab();
|
||||
cy.contains(".t--datasource-name", datasourceName).click({ force: true });
|
||||
|
|
|
|||
|
|
@ -23,5 +23,7 @@
|
|||
"currentNameField": "//div[@type='FORM_WIDGET']//span[text()='name:']//ancestor::div[contains(@class,'t--widget-textwidget')]/preceding-sibling::div[contains(@class, 't--widget-inputwidget')][1]//input",
|
||||
"deleteofSelectedRow": "//div[@class='tr selected-row']//span[text()='Delete']",
|
||||
"confirmBtn": "span:contains('Confirm')",
|
||||
"deleteMenuItem": "//div[text()='Delete']/parent::a[contains(@class, 'single-select')]"
|
||||
"deleteMenuItem": "//div[text()='Delete']/parent::a[contains(@class, 'single-select')]",
|
||||
"uploadFilesS3":"div.uppy-Dashboard-AddFiles input",
|
||||
"uploadBtn": "button.uppy-StatusBar-actionBtn--upload"
|
||||
}
|
||||
|
|
@ -25,10 +25,11 @@
|
|||
"countText": "//span[contains(@class, 'cs-text')][text()='Result:']/span",
|
||||
"searchFilefield": "//input[@placeholder='Search File Prefix']",
|
||||
"copyURLicon": "//button/span[@icon='link']",
|
||||
"deleteFileicon": "//button/span[@icon='trash']",
|
||||
"deleteFileicon": "//button/span[@icon='trash']/ancestor::div[contains(@class,'t--widget-iconbuttonwidget')]",
|
||||
"snipeableTable":"//input[@type='search']",
|
||||
"suggestedWidgetDropdown": "//div[contains(@class, 't--suggested-widget-DROP_DOWN_WIDGET')]",
|
||||
"suggestedWidgetText": "//div[contains(@class, 't--suggested-widget-TEXT_WIDGET')]",
|
||||
"suggestedWidgetChart": ".t--suggested-widget-CHART_WIDGET",
|
||||
"queryTimeout": "//input[@name='actionConfiguration.timeoutInMillisecond']",
|
||||
"mongoFormFind": "//div[text()='listingsAndReviews']/ancestor::div/following-sibling::div[contains(@class, 'entity-context-menu')]"
|
||||
"listingAndReviewContext": "//div[text()='listingAndReviews']/ancestor::div/following-sibling::div[contains(@class, 'entity-context-menu')]"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
"toastmsg": ".Toastify__toast-body span",
|
||||
"copyWidget": ".t--copy-widget",
|
||||
"deleteWidget": ".t--delete-widget",
|
||||
"dropTarget":".t--drop-target",
|
||||
"dropTarget": ".t--drop-target",
|
||||
"toastAction": ".t--toast-action",
|
||||
"toastBody": ".Toastify__toast-body",
|
||||
"videoInner": ".t--draggable-videowidget span.t--widget-name",
|
||||
|
|
@ -129,8 +129,8 @@
|
|||
"inputCountryCodeChangeType": ".t--input-country-code-change",
|
||||
"viewerPage": ".t--app-viewer-page",
|
||||
"dropDownOptSelected": "//span[@type='p1']",
|
||||
"generalChevran":".t--property-pane-section-collapse-general [icon=chevron-right]",
|
||||
"generalSection":".t--property-pane-section-general",
|
||||
"generalChevran": ".t--property-pane-section-collapse-general [icon=chevron-right]",
|
||||
"generalSection": ".t--property-pane-section-general",
|
||||
"selectedIcon": ".t--property-control-icon .icon-select-container .bp3-button .bp3-button-text",
|
||||
"isSortable": ".t--property-control-sortable input[type='checkbox']",
|
||||
"labelSection": ".cm-keyword",
|
||||
|
|
@ -144,5 +144,7 @@
|
|||
"debugErrorMsg": ".t--debugger-message",
|
||||
"debuggerLabel": "span.debugger-label",
|
||||
"selectInner": ".t--draggable-dropdownwidget span.t--widget-name, Select1",
|
||||
"toastifyError": "//div[@class='Toastify']//span]"
|
||||
}
|
||||
"toastifyError": "//div[@class='Toastify']//span]",
|
||||
"dropdownWidget": ".t--draggable-dropdownwidget",
|
||||
"textWidget": ".t--draggable-textwidget"
|
||||
}
|
||||
Binary file not shown.
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"indexes": [
|
||||
{
|
||||
"v": {
|
||||
"$numberInt": "2"
|
||||
},
|
||||
"key": {
|
||||
"_id": {
|
||||
"$numberInt": "1"
|
||||
}
|
||||
},
|
||||
"name": "_id_"
|
||||
}
|
||||
],
|
||||
"uuid": "8474766f7d1d4e548747ccf36a197261",
|
||||
"collectionName": "listingAndReviews"
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#! /bin/sh
|
||||
|
||||
# This script is responsible for setting up the local Nginx server for running E2E Cypress tests
|
||||
# This script is responsible for setting up the local Nginx server for running E2E Cypress tests
|
||||
# on our CI/CD system. Currently the script is geared towards Github Actions
|
||||
|
||||
# Serve the react bundle on a specific port. Nginx will proxy to this port
|
||||
|
|
@ -46,6 +46,16 @@ sudo docker exec -i mariadb mysql -uroot -proot123 mysql < `pwd`/cypress/init-m
|
|||
echo "Sleeping for 30 seconds to let the servers start"
|
||||
sleep 30
|
||||
|
||||
sudo docker run -d -p 127.0.0.1:28017:27017 --name Cypress-mongodb -e MONGO_INITDB_DATABASE=appsmith -v `pwd`/cypress/mongodb:/data/db mongo
|
||||
echo "Sleeping for 30 seconds to let the servers start"
|
||||
sleep 30
|
||||
|
||||
sudo docker cp `pwd`/cypress/sample_airbnb Cypress-mongodb:/sample_airbnb
|
||||
|
||||
sudo docker exec -i Cypress-mongodb /usr/bin/mongorestore --db sample_airbnb /sample_airbnb/sample_airbnb
|
||||
|
||||
sleep 10
|
||||
|
||||
echo "Checking if the containers have started"
|
||||
sudo docker ps -a
|
||||
for fcid in $(sudo docker ps -a | awk '/Exited/ { print $1 }'); do
|
||||
|
|
@ -80,4 +90,4 @@ fi
|
|||
|
||||
# DEBUG=cypress:* $(npm bin)/cypress version
|
||||
# sed -i -e "s|api_url:.*$|api_url: $CYPRESS_URL|g" /github/home/.cache/Cypress/4.1.0/Cypress/resources/app/packages/server/config/app.yml
|
||||
# cat /github/home/.cache/Cypress/4.1.0/Cypress/resources/app/packages/server/config/app.yml
|
||||
# cat /github/home/.cache/Cypress/4.1.0/Cypress/resources/app/packages/server/config/app.yml
|
||||
|
|
@ -2162,7 +2162,7 @@ Cypress.Commands.add("NavigateToDatasourceEditor", () => {
|
|||
|
||||
Cypress.Commands.add("NavigateToQueryEditor", () => {
|
||||
cy.get(explorer.addDBQueryEntity)
|
||||
.first()
|
||||
.last()
|
||||
.click({ force: true });
|
||||
});
|
||||
|
||||
|
|
@ -2227,11 +2227,11 @@ Cypress.Commands.add("saveDatasource", () => {
|
|||
});
|
||||
|
||||
Cypress.Commands.add("testSaveDatasource", (expectedRes = true) => {
|
||||
cy.saveDatasource();
|
||||
cy.get(datasourceEditor.datasourceCard)
|
||||
.last()
|
||||
.click();
|
||||
cy.testDatasource(expectedRes);
|
||||
cy.saveDatasource();
|
||||
// cy.get(datasourceEditor.datasourceCard)
|
||||
// .last()
|
||||
// .click();
|
||||
});
|
||||
|
||||
Cypress.Commands.add("fillGoogleSheetsDatasourceForm", () => {
|
||||
|
|
@ -2245,30 +2245,30 @@ Cypress.Commands.add(
|
|||
? datasourceFormData["mongo-host"] + " "
|
||||
: datasourceFormData["mongo-host"];
|
||||
const databaseName = shouldAddTrailingSpaces
|
||||
? datasourceFormData["mongo-defaultDatabaseName"] + " "
|
||||
: datasourceFormData["mongo-defaultDatabaseName"];
|
||||
? datasourceFormData["mongo-databaseName"] + " "
|
||||
: datasourceFormData["mongo-databaseName"];
|
||||
|
||||
cy.get(datasourceEditor["host"]).type(hostAddress);
|
||||
//cy.get(datasourceEditor.port).type(datasourceFormData["mongo-port"]);
|
||||
cy.get(datasourceEditor.port).type(datasourceFormData["mongo-port"]);
|
||||
//cy.get(datasourceEditor["port"]).type(datasourceFormData["mongo-port"]);
|
||||
cy.get(datasourceEditor["selConnectionType"]).click();
|
||||
cy.contains(datasourceFormData["connection-type"]).click();
|
||||
//cy.get(datasourceEditor["selConnectionType"]).click();
|
||||
//cy.contains(datasourceFormData["connection-type"]).click();
|
||||
cy.get(datasourceEditor["defaultDatabaseName"]).type(databaseName);
|
||||
|
||||
cy.get(datasourceEditor.sectionAuthentication).click();
|
||||
cy.get(datasourceEditor["databaseName"])
|
||||
.clear()
|
||||
.type(datasourceFormData["mongo-databaseName"]);
|
||||
cy.get(datasourceEditor["username"]).type(
|
||||
datasourceFormData["mongo-username"],
|
||||
);
|
||||
cy.get(datasourceEditor["password"]).type(
|
||||
datasourceFormData["mongo-password"],
|
||||
);
|
||||
cy.get(datasourceEditor["authenticationAuthtype"]).click();
|
||||
cy.contains(datasourceFormData["mongo-authenticationAuthtype"]).click({
|
||||
force: true,
|
||||
});
|
||||
// cy.get(datasourceEditor["username"]).type(
|
||||
// datasourceFormData["mongo-username"],
|
||||
// );
|
||||
// cy.get(datasourceEditor["password"]).type(
|
||||
// datasourceFormData["mongo-password"],
|
||||
// );
|
||||
// cy.get(datasourceEditor["authenticationAuthtype"]).click();
|
||||
// cy.contains(datasourceFormData["mongo-authenticationAuthtype"]).click({
|
||||
// force: true,
|
||||
// });
|
||||
},
|
||||
);
|
||||
|
||||
|
|
@ -2581,9 +2581,9 @@ Cypress.Commands.add("executeDbQuery", (queryName) => {
|
|||
|
||||
Cypress.Commands.add("CreateMockQuery", (queryName) => {
|
||||
// cy.get(queryEditor.addNewQueryBtn).click({ force: true });
|
||||
cy.get(queryEditor.createQuery)
|
||||
.first()
|
||||
.click({ force: true });
|
||||
// cy.get(queryEditor.createQuery)
|
||||
// .first()
|
||||
// .click({ force: true });
|
||||
cy.get(queryEditor.queryNameField).type(queryName + "{enter}", {
|
||||
force: true,
|
||||
});
|
||||
|
|
@ -2980,6 +2980,7 @@ Cypress.Commands.add("tablefirstdataRow", () => {
|
|||
let tabVal = cy
|
||||
.xpath(
|
||||
"//div[@class='tableWrap']//div[@class='table']//div[contains(@class, 'tbody')]/div[@class='tr']/div[@class ='td']",
|
||||
{ timeout: 10000 },
|
||||
)
|
||||
.first()
|
||||
.invoke("text");
|
||||
|
|
@ -3094,9 +3095,17 @@ Cypress.Commands.add("callApi", (apiname) => {
|
|||
});
|
||||
|
||||
Cypress.Commands.add("assertPageSave", () => {
|
||||
cy.get(commonlocators.saveStatusSuccess, { timeout: 10000 }).should("exist");
|
||||
cy.get(commonlocators.saveStatusSuccess, { timeout: 20000 }).should("exist");
|
||||
});
|
||||
|
||||
Cypress.Commands.add(
|
||||
"validateWidgetExists",
|
||||
{ prevSubject: true },
|
||||
(selector) => {
|
||||
cy.get(selector, { timeout: 5000 }).should("exist");
|
||||
},
|
||||
);
|
||||
|
||||
Cypress.Commands.add("ValidateQueryParams", (param) => {
|
||||
cy.xpath(apiwidget.paramsTab)
|
||||
.should("be.visible")
|
||||
|
|
@ -3409,27 +3418,37 @@ Cypress.Commands.add("typeValueNValidate", (valueToType, fieldName = "") => {
|
|||
});
|
||||
|
||||
Cypress.Commands.add("clickButton", (btnVisibleText) => {
|
||||
cy.xpath("//span[text()='" + btnVisibleText + "']/parent::button").click({
|
||||
force: true,
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add("deleteEntitybyName", (entityNameinLeftSidebar) => {
|
||||
cy.xpath(
|
||||
"//div[text()='" +
|
||||
entityNameinLeftSidebar +
|
||||
"']/ancestor::div[contains(@class, 't--entity')]//span[contains(@class, 'entity-context-menu')]//div",
|
||||
)
|
||||
.first()
|
||||
cy.xpath("//span[text()='" + btnVisibleText + "']/parent::button")
|
||||
.scrollIntoView()
|
||||
.click({ force: true });
|
||||
|
||||
cy.xpath(generatePage.deleteMenuItem).click();
|
||||
|
||||
cy.xpath("//div[text()='" + entityNameinLeftSidebar + "']").should(
|
||||
"not.exist",
|
||||
);
|
||||
});
|
||||
|
||||
Cypress.Commands.add(
|
||||
"actionContextMenuByEntityName",
|
||||
(entityNameinLeftSidebar, action = "Delete") => {
|
||||
cy.xpath(
|
||||
"//div[text()='" +
|
||||
entityNameinLeftSidebar +
|
||||
"']/ancestor::div[contains(@class, 't--entity')]//span[contains(@class, 'entity-context-menu')]//div",
|
||||
)
|
||||
.first()
|
||||
.click({ force: true });
|
||||
|
||||
cy.xpath(
|
||||
"//div[text()='" +
|
||||
action +
|
||||
"']/parent::a[contains(@class, 'single-select')]",
|
||||
)
|
||||
.click({ force: true })
|
||||
.wait(500);
|
||||
|
||||
if (action == "Delete")
|
||||
cy.xpath("//div[text()='" + entityNameinLeftSidebar + "']").should(
|
||||
"not.exist",
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
Cypress.Commands.add("selectEntityByName", (entityNameinLeftSidebar) => {
|
||||
cy.xpath(
|
||||
"//div[contains(@class, 't--entity-name')][text()='" +
|
||||
|
|
@ -3455,7 +3474,7 @@ Cypress.Commands.add(
|
|||
} else {
|
||||
cy.xpath("//div[@class='CodeMirror-code']").click();
|
||||
}
|
||||
cy.wait(2000);
|
||||
cy.wait(3000); //Increasing wait time to evaluate non-undefined values
|
||||
const val = cy
|
||||
.get(commonlocators.evaluatedCurrentValue)
|
||||
.first()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user