* add confirmation for Datasource, refactor other components * fix failing cypress tests * fix Mongo_spec failing test
3713 lines
108 KiB
JavaScript
3713 lines
108 KiB
JavaScript
/* eslint-disable cypress/no-unnecessary-waiting */
|
|
/* eslint-disable cypress/no-assigning-return-values */
|
|
|
|
require("cy-verify-downloads").addCustomCommand();
|
|
require("cypress-file-upload");
|
|
|
|
const dayjs = require("dayjs");
|
|
const {
|
|
addMatchImageSnapshotCommand,
|
|
} = require("cypress-image-snapshot/command");
|
|
const loginPage = require("../locators/LoginPage.json");
|
|
const signupPage = require("../locators/SignupPage.json");
|
|
const homePage = require("../locators/HomePage.json");
|
|
const pages = require("../locators/Pages.json");
|
|
const datasourceEditor = require("../locators/DatasourcesEditor.json");
|
|
const datasourceFormData = require("../fixtures/datasources.json");
|
|
const commonlocators = require("../locators/commonlocators.json");
|
|
const queryEditor = require("../locators/QueryEditor.json");
|
|
const modalWidgetPage = require("../locators/ModalWidget.json");
|
|
const widgetsPage = require("../locators/Widgets.json");
|
|
const LayoutPage = require("../locators/Layout.json");
|
|
const formWidgetsPage = require("../locators/FormWidgets.json");
|
|
const ApiEditor = require("../locators/ApiEditor.json");
|
|
const apiwidget = require("../locators/apiWidgetslocator.json");
|
|
const dynamicInputLocators = require("../locators/DynamicInput.json");
|
|
const explorer = require("../locators/explorerlocators.json");
|
|
const datasource = require("../locators/DatasourcesEditor.json");
|
|
const viewWidgetsPage = require("../locators/ViewWidgets.json");
|
|
const generatePage = require("../locators/GeneratePage.json");
|
|
const jsEditorLocators = require("../locators/JSEditor.json");
|
|
const queryLocators = require("../locators/QueryEditor.json");
|
|
const welcomePage = require("../locators/welcomePage.json");
|
|
const publishWidgetspage = require("../locators/publishWidgetspage.json");
|
|
let pageidcopy = " ";
|
|
const chainStart = Symbol();
|
|
|
|
export const initLocalstorage = () => {
|
|
cy.window().then((window) => {
|
|
window.localStorage.setItem("ShowCommentsButtonToolTip", "");
|
|
});
|
|
};
|
|
|
|
Cypress.Commands.add("createOrg", () => {
|
|
cy.get(homePage.createOrg)
|
|
.should("be.visible")
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("renameOrg", (orgName, newOrgName) => {
|
|
cy.contains(orgName)
|
|
.closest(homePage.orgCompleteSection)
|
|
.find(homePage.orgNamePopover)
|
|
.find(homePage.optionsIcon)
|
|
.click({ force: true });
|
|
cy.get(homePage.renameOrgInput)
|
|
.should("be.visible")
|
|
.type(newOrgName.concat("{enter}"));
|
|
cy.wait(3000);
|
|
//cy.get(commonlocators.homeIcon).click({ force: true });
|
|
cy.wait("@updateOrganization").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.contains(newOrgName);
|
|
});
|
|
|
|
Cypress.Commands.add("goToEditFromPublish", () => {
|
|
cy.url().then((url) => {
|
|
const urlObject = new URL(url);
|
|
if (!urlObject.pathname.includes("edit")) {
|
|
urlObject.pathname = urlObject.pathname + "/edit";
|
|
cy.visit(urlObject.toString());
|
|
}
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"dragTo",
|
|
{ prevSubject: "element" },
|
|
(subject, targetEl) => {
|
|
cy.wrap(subject).trigger("dragstart");
|
|
cy.get(targetEl).trigger("drop");
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("downloadData", (filetype) => {
|
|
cy.get(publishWidgetspage.downloadBtn).click({ force: true });
|
|
|
|
cy.get(publishWidgetspage.downloadOption)
|
|
.contains(filetype)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("validateDownload", (fileName) => {
|
|
const downloadedFilename = Cypress.config("downloadsFolder")
|
|
.concat("/")
|
|
.concat(fileName);
|
|
cy.readFile(downloadedFilename, "binary", {
|
|
timeout: 15000,
|
|
}).should((buffer) => expect(buffer.length).to.be.gt(100));
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"AddFilterWithOperator",
|
|
(operator, option, condition, value) => {
|
|
cy.get(publishWidgetspage.addFilter).click();
|
|
cy.get(publishWidgetspage.operatorsDropdown).click({ force: true });
|
|
cy.get(publishWidgetspage.attributeValue)
|
|
.contains(operator)
|
|
.click({ force: true });
|
|
cy.get(publishWidgetspage.attributesDropdown)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(publishWidgetspage.attributeValue)
|
|
.contains(option)
|
|
.click({ force: true });
|
|
cy.get(publishWidgetspage.conditionDropdown)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(publishWidgetspage.attributeValue)
|
|
.contains(condition)
|
|
.click({ force: true });
|
|
cy.get(publishWidgetspage.inputValue)
|
|
.last()
|
|
.type(value);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("navigateToOrgSettings", (orgName) => {
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.scrollIntoView()
|
|
.should("be.visible");
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.closest(homePage.orgCompleteSection)
|
|
.find(homePage.orgNamePopover)
|
|
.find(homePage.optionsIcon)
|
|
.click({ force: true });
|
|
cy.xpath(homePage.MemberSettings).click({ force: true });
|
|
cy.wait("@getMembers").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.get(homePage.inviteUserMembersPage).should("be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("openOrgOptionsPopup", (orgName) => {
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.scrollIntoView()
|
|
.should("be.visible");
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.closest(homePage.orgCompleteSection)
|
|
.find(homePage.orgNamePopover)
|
|
.find(homePage.optionsIcon)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("inviteUserForOrg", (orgName, email, role) => {
|
|
cy.stubPostHeaderReq();
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.scrollIntoView()
|
|
.should("be.visible");
|
|
cy.get(homePage.orgList.concat(orgName).concat(homePage.shareOrg))
|
|
.first()
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.xpath(homePage.email)
|
|
.click({ force: true })
|
|
.type(email);
|
|
cy.xpath(homePage.selectRole).click({ force: true });
|
|
cy.wait(500);
|
|
cy.xpath(role).click({ force: true });
|
|
cy.xpath(homePage.inviteBtn).click({ force: true });
|
|
cy.wait("@mockPostInvite")
|
|
.its("request.headers")
|
|
.should("have.property", "origin", "Cypress");
|
|
cy.contains(email, { matchCase: false });
|
|
});
|
|
|
|
Cypress.Commands.add("CheckShareIcon", (orgName, count) => {
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.scrollIntoView()
|
|
.should("be.visible");
|
|
cy.get(
|
|
homePage.orgList.concat(orgName).concat(") .org-share-user-icons"),
|
|
).should("have.length", count);
|
|
});
|
|
|
|
Cypress.Commands.add("stubPostHeaderReq", () => {
|
|
cy.intercept("POST", "/api/v1/users/invite", (req) => {
|
|
req.headers["origin"] = "Cypress";
|
|
}).as("mockPostInvite");
|
|
});
|
|
|
|
Cypress.Commands.add("shareApp", (email, role) => {
|
|
cy.stubPostHeaderReq();
|
|
cy.xpath(homePage.email)
|
|
.click({ force: true })
|
|
.type(email);
|
|
cy.xpath(homePage.selectRole).click({ force: true });
|
|
cy.xpath(role).click({ force: true });
|
|
cy.xpath(homePage.inviteBtn).click({ force: true });
|
|
cy.wait("@mockPostInvite")
|
|
.its("request.headers")
|
|
.should("have.property", "origin", "Cypress");
|
|
cy.contains(email, { matchCase: false });
|
|
cy.get(homePage.closeBtn).click();
|
|
});
|
|
|
|
Cypress.Commands.add("shareAndPublic", (email, role) => {
|
|
cy.stubPostHeaderReq();
|
|
cy.xpath(homePage.email)
|
|
.click({ force: true })
|
|
.type(email);
|
|
cy.xpath(homePage.selectRole).click({ force: true });
|
|
cy.xpath(role).click({ force: true });
|
|
cy.xpath(homePage.inviteBtn).click({ force: true });
|
|
cy.wait("@mockPostInvite")
|
|
.its("request.headers")
|
|
.should("have.property", "origin", "Cypress");
|
|
cy.contains(email, { matchCase: false });
|
|
cy.enablePublicAccess();
|
|
});
|
|
|
|
Cypress.Commands.add("enablePublicAccess", () => {
|
|
cy.get(homePage.enablePublicAccess).click();
|
|
cy.wait("@changeAccess").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.get(homePage.closeBtn).click();
|
|
});
|
|
|
|
Cypress.Commands.add("deleteUserFromOrg", (orgName, email) => {
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.scrollIntoView()
|
|
.should("be.visible");
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.closest(homePage.orgCompleteSection)
|
|
.find(homePage.orgNamePopover)
|
|
.find(homePage.optionsIcon)
|
|
.click({ force: true });
|
|
cy.xpath(homePage.MemberSettings).click({ force: true });
|
|
cy.wait("@getRoles").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.get(homePage.DeleteBtn)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(homePage.leaveOrgConfirmModal).should("be.visible");
|
|
cy.get(homePage.leaveOrgConfirmButton).click({ force: true });
|
|
cy.xpath(homePage.appHome)
|
|
.first()
|
|
.should("be.visible")
|
|
.click();
|
|
cy.wait("@applications").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("updateUserRoleForOrg", (orgName, email, role) => {
|
|
cy.stubPostHeaderReq();
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.scrollIntoView()
|
|
.should("be.visible");
|
|
cy.get(homePage.orgList.concat(orgName).concat(")"))
|
|
.closest(homePage.orgCompleteSection)
|
|
.find(homePage.orgNamePopover)
|
|
.find(homePage.optionsIcon)
|
|
.click({ force: true });
|
|
cy.xpath(homePage.MemberSettings).click({ force: true });
|
|
cy.wait("@getMembers").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.get(homePage.inviteUserMembersPage).click({ force: true });
|
|
cy.xpath(homePage.email)
|
|
.click({ force: true })
|
|
.type(email);
|
|
cy.xpath(homePage.selectRole).click({ force: true });
|
|
cy.xpath(role).click({ force: true });
|
|
cy.xpath(homePage.inviteBtn).click({ force: true });
|
|
cy.wait("@mockPostInvite")
|
|
.its("request.headers")
|
|
.should("have.property", "origin", "Cypress");
|
|
cy.contains(email, { matchCase: false });
|
|
cy.get(".bp3-icon-small-cross").click({ force: true });
|
|
cy.xpath(homePage.appHome)
|
|
.first()
|
|
.should("be.visible")
|
|
.click();
|
|
cy.wait("@applications").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("launchApp", (appName) => {
|
|
cy.get(homePage.appView)
|
|
.should("be.visible")
|
|
.first()
|
|
.click();
|
|
cy.get("#loading").should("not.exist");
|
|
cy.wait("@getPagesForViewApp").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("AppSetupForRename", () => {
|
|
cy.get(homePage.applicationName).then(($appName) => {
|
|
if (!$appName.hasClass(homePage.editingAppName)) {
|
|
cy.get(homePage.applicationName).click();
|
|
cy.get(homePage.portalMenuItem)
|
|
.contains("Edit Name", { matchCase: false })
|
|
.click();
|
|
}
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("CreateAppForOrg", (orgName, appname) => {
|
|
cy.get(homePage.orgList.concat(orgName).concat(homePage.createAppFrOrg))
|
|
.scrollIntoView()
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.wait("@createNewApplication").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
cy.get("#loading").should("not.exist");
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
|
|
cy.AppSetupForRename();
|
|
cy.get(homePage.applicationName).type(appname + "{enter}");
|
|
|
|
cy.get(generatePage.buildFromScratchActionCard).click();
|
|
|
|
cy.wait("@updateApplication").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("CreateAppInFirstListedOrg", (appname) => {
|
|
cy.get(homePage.createNew)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.wait("@createNewApplication").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
cy.get("#loading").should("not.exist");
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
|
|
cy.AppSetupForRename();
|
|
cy.get(homePage.applicationName).type(appname + "{enter}");
|
|
cy.wait("@updateApplication").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
|
|
cy.get(generatePage.buildFromScratchActionCard).click();
|
|
|
|
/* The server created app always has an old dsl so the layout will migrate
|
|
* To avoid race conditions between that update layout and this one
|
|
* we wait for that to finish before updating layout here
|
|
*/
|
|
cy.wait("@updateLayout");
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"addOauthAuthDetails",
|
|
(accessTokenUrl, clientId, clientSecret, authURL) => {
|
|
cy.get(datasource.authType).click();
|
|
cy.get(datasource.OAuth2).click();
|
|
cy.get(datasource.grantType).click();
|
|
cy.get(datasource.authorisecode).click();
|
|
cy.get(datasource.accessTokenUrl).type(accessTokenUrl);
|
|
cy.get(datasource.clienID).type(clientId);
|
|
cy.get(datasource.clientSecret).type(clientSecret);
|
|
cy.get(datasource.authorizationURL).type(authURL);
|
|
cy.xpath('//input[contains(@value,"api/v1/datasources/authorize")]')
|
|
.first()
|
|
.invoke("attr", "value")
|
|
.then((text) => {
|
|
const firstTxt = text;
|
|
cy.log("date time : ", firstTxt);
|
|
const expectedvalue = Cypress.config().baseUrl.concat(
|
|
"api/v1/datasources/authorize",
|
|
);
|
|
expect(firstTxt).to.equal(expectedvalue);
|
|
});
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("addBasicProfileDetails", (username, password) => {
|
|
cy.get(datasource.authType).click();
|
|
cy.xpath(datasource.basic).click();
|
|
cy.get(datasource.basicUsername).type(username);
|
|
cy.get(datasource.basicPassword).type(password);
|
|
});
|
|
|
|
Cypress.Commands.add("firestoreDatasourceForm", () => {
|
|
cy.get(datasourceEditor.datasourceConfigUrl).type(
|
|
datasourceFormData["database-url"],
|
|
);
|
|
cy.get(datasourceEditor.projectID).type(datasourceFormData["projectID"]);
|
|
cy.get(datasourceEditor.serviceAccCredential)
|
|
.clear()
|
|
.type(datasourceFormData["serviceAccCredentials"]);
|
|
});
|
|
|
|
Cypress.Commands.add("amazonDatasourceForm", () => {
|
|
cy.get(datasourceEditor.projectID).type(datasourceFormData["access_key"]);
|
|
cy.get(datasourceEditor.serviceAccCredential)
|
|
.clear()
|
|
.type(datasourceFormData["secret_key"]);
|
|
});
|
|
|
|
Cypress.Commands.add("DeleteApp", (appName) => {
|
|
cy.get(commonlocators.homeIcon).click({ force: true });
|
|
cy.wait("@applications").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.wait("@organizations").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.get('button span[icon="chevron-down"]').should("be.visible");
|
|
cy.get(homePage.searchInput).type(appName, { force: true });
|
|
cy.get(homePage.applicationCard).trigger("mouseover");
|
|
cy.get(homePage.appMoreIcon)
|
|
.should("have.length", 1)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(homePage.deleteAppConfirm)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.get(homePage.deleteApp)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("LogintoApp", (uname, pword) => {
|
|
cy.window()
|
|
.its("store")
|
|
.invoke("dispatch", { type: "LOGOUT_USER_INIT" });
|
|
cy.wait("@postLogout");
|
|
|
|
cy.visit("/user/login");
|
|
cy.get(loginPage.username).should("be.visible");
|
|
cy.get(loginPage.username).type(uname);
|
|
cy.get(loginPage.password).type(pword);
|
|
cy.get(loginPage.submitBtn).click();
|
|
cy.wait("@getUser");
|
|
cy.wait(3000);
|
|
cy.get(".t--applications-container .createnew").should("be.visible");
|
|
cy.get(".t--applications-container .createnew").should("be.enabled");
|
|
initLocalstorage();
|
|
});
|
|
|
|
Cypress.Commands.add("Signup", (uname, pword) => {
|
|
cy.window()
|
|
.its("store")
|
|
.invoke("dispatch", { type: "LOGOUT_USER_INIT" });
|
|
cy.wait("@postLogout");
|
|
|
|
cy.visit("/user/signup");
|
|
cy.get(signupPage.username).should("be.visible");
|
|
cy.get(signupPage.username).type(uname);
|
|
cy.get(signupPage.password).type(pword);
|
|
cy.get(signupPage.submitBtn).click();
|
|
cy.wait(1000);
|
|
cy.get(signupPage.roleDropdown).click();
|
|
cy.get(signupPage.dropdownOption).click();
|
|
cy.get(signupPage.useCaseDropdown).click();
|
|
cy.get(signupPage.dropdownOption).click();
|
|
cy.get(signupPage.roleUsecaseSubmit).click();
|
|
|
|
cy.wait("@getUser");
|
|
cy.wait(3000);
|
|
initLocalstorage();
|
|
});
|
|
|
|
Cypress.Commands.add("LoginFromAPI", (uname, pword) => {
|
|
cy.request({
|
|
method: "POST",
|
|
url: "api/v1/login",
|
|
headers: {
|
|
"content-type": "application/x-www-form-urlencoded",
|
|
},
|
|
followRedirect: false,
|
|
form: true,
|
|
body: {
|
|
username: uname,
|
|
password: pword,
|
|
},
|
|
}).then((response) => {
|
|
expect(response.status).equal(302);
|
|
cy.log(response.body);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("DeleteApp", (appName) => {
|
|
cy.get(commonlocators.homeIcon).click({ force: true });
|
|
cy.get(homePage.searchInput).type(appName);
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(homePage.applicationCard)
|
|
.first()
|
|
.trigger("mouseover");
|
|
cy.get(homePage.appMoreIcon)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(homePage.deleteAppConfirm)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.get(homePage.deleteApp)
|
|
.contains("Are you sure?")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("DeletepageFromSideBar", () => {
|
|
cy.xpath(pages.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(pages.deletePage)
|
|
.first()
|
|
.click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
});
|
|
|
|
Cypress.Commands.add("LogOut", () => {
|
|
cy.request("POST", "/api/v1/logout");
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToHome", () => {
|
|
cy.get(commonlocators.homeIcon).click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(3000);
|
|
cy.wait("@applications");
|
|
cy.get(".t--applications-container .createnew").should("be.visible");
|
|
cy.get(".t--applications-container .createnew").should("be.enabled");
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToWidgets", (pageName) => {
|
|
cy.get(pages.pagesIcon).click({ force: true });
|
|
cy.get(".t--page-sidebar-" + pageName + "")
|
|
.find(">div")
|
|
.click({ force: true });
|
|
cy.get("#loading").should("not.exist");
|
|
cy.get(pages.widgetsEditor).click();
|
|
cy.wait("@getPage");
|
|
cy.get("#loading").should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("SearchApp", (appname) => {
|
|
cy.get(homePage.searchInput).type(appname);
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(homePage.applicationCard)
|
|
.first()
|
|
.trigger("mouseover", { force: true });
|
|
cy.get(homePage.appEditIcon)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get("#loading").should("not.exist");
|
|
// Wait added because after opening the application editor, sometimes it takes a little time.
|
|
});
|
|
|
|
Cypress.Commands.add("SearchEntity", (apiname1, apiname2) => {
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.type(apiname1, { force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.get(".t--entity-name").click({ multiple: true });
|
|
cy.wait(500);
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).should("be.visible");
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname2).concat("')"),
|
|
).should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("GlobalSearchEntity", (apiname1) => {
|
|
// entity explorer search will be hidden
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.type(apiname1, { force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.CheckAndUnfoldWidgets();
|
|
cy.wait(500);
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).should("be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("ResponseStatusCheck", (statusCode) => {
|
|
cy.xpath(apiwidget.responseStatus).should("be.visible");
|
|
cy.xpath(apiwidget.responseStatus).contains(statusCode);
|
|
});
|
|
|
|
Cypress.Commands.add("ResponseCheck", (textTocheck) => {
|
|
//Explicit assert
|
|
cy.get(apiwidget.responseText).should("be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("ResponseTextCheck", (textTocheck) => {
|
|
cy.ResponseCheck();
|
|
cy.get(apiwidget.responseText).contains(textTocheck);
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToAPI_Panel", () => {
|
|
cy.get(pages.addEntityAPI)
|
|
.last()
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.get(pages.integrationCreateNew)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.get("#loading").should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToEntityExplorer", () => {
|
|
cy.get(explorer.entityExplorer)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.get("#loading").should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("CreateAPI", (apiname) => {
|
|
cy.get(explorer.createNew).click({ force: true });
|
|
cy.get(explorer.blankAPI).click({ force: true });
|
|
cy.wait("@createNewApi");
|
|
cy.get(apiwidget.resourceUrl).should("be.visible");
|
|
cy.renameWithInPane(apiname);
|
|
cy.WaitAutoSave();
|
|
// Added because api name edit takes some time to
|
|
// reflect in api sidebar after the call passes.
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
});
|
|
|
|
Cypress.Commands.add("CreateSubsequentAPI", (apiname) => {
|
|
cy.get(apiwidget.createApiOnSideBar)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.resourceUrl).should("be.visible");
|
|
// cy.get(ApiEditor.nameOfApi)
|
|
cy.get(apiwidget.apiTxt)
|
|
.clear()
|
|
.type(apiname)
|
|
.should("have.value", apiname);
|
|
cy.WaitAutoSave();
|
|
});
|
|
|
|
Cypress.Commands.add("EditApiName", (apiname) => {
|
|
cy.get(apiwidget.ApiName).click({ force: true });
|
|
cy.get(apiwidget.apiTxt)
|
|
.clear()
|
|
.type(apiname, { force: true })
|
|
.should("have.value", apiname);
|
|
});
|
|
|
|
Cypress.Commands.add("EditApiNameFromExplorer", (apiname) => {
|
|
/*
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.editName).click({ force: true });
|
|
*/
|
|
cy.get(explorer.editNameField)
|
|
.clear()
|
|
.type(apiname, { force: true })
|
|
.should("have.value", apiname)
|
|
.blur();
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(3000);
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"EditEntityNameByDoubleClick",
|
|
(entityName, updatedName) => {
|
|
cy.get(explorer.entity)
|
|
.contains(entityName)
|
|
.dblclick({ force: true });
|
|
cy.log(updatedName);
|
|
cy.get(explorer.editEntityField)
|
|
.clear()
|
|
.type(updatedName + "{enter}", { force: true });
|
|
cy.wait("@saveDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("WaitAutoSave", () => {
|
|
// wait for save query to trigger
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.wait("@saveAction");
|
|
//cy.wait("@postExecute");
|
|
});
|
|
|
|
Cypress.Commands.add("RunAPI", () => {
|
|
cy.get(ApiEditor.ApiRunBtn).click({ force: true });
|
|
cy.wait("@postExecute");
|
|
});
|
|
|
|
Cypress.Commands.add("SaveAndRunAPI", () => {
|
|
cy.WaitAutoSave();
|
|
cy.RunAPI();
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"validateRequest",
|
|
(apiName, baseurl, path, verb, error = false) => {
|
|
cy.get(".react-tabs__tab")
|
|
.contains("Logs")
|
|
.click();
|
|
cy.get("[data-cy=t--debugger-search]")
|
|
.clear()
|
|
.type(apiName);
|
|
|
|
if (!error) {
|
|
cy.get(".object-key")
|
|
.last()
|
|
.contains("request")
|
|
.click();
|
|
}
|
|
cy.get(".string-value").contains(baseurl.concat(path));
|
|
cy.get(".string-value").contains(verb);
|
|
cy.get("[data-cy=t--tab-body]")
|
|
.first()
|
|
.click({ force: true });
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("SelectAction", (action) => {
|
|
cy.get(ApiEditor.ApiVerb)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.xpath(action)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("ClearSearch", () => {
|
|
cy.get(commonlocators.entityExplorersearch).clear({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"paste",
|
|
{
|
|
prevSubject: true,
|
|
element: true,
|
|
},
|
|
($element, text) => {
|
|
const subString = text.substr(0, text.length - 1);
|
|
const lastChar = text.slice(-1);
|
|
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.click({ force: true })
|
|
.then(() => {
|
|
$element.text(subString);
|
|
$element.val(subString);
|
|
cy.get($element).type(lastChar);
|
|
});
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("CheckAndUnfoldWidgets", () => {
|
|
cy.get(commonlocators.widgetSection)
|
|
.invoke("attr", "name")
|
|
.then((name) => {
|
|
if (name === "arrow-right") {
|
|
cy.get(commonlocators.widgetSection).click({ force: true });
|
|
}
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("SearchEntityandOpen", (apiname1) => {
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.type(apiname1, { force: true });
|
|
cy.CheckAndUnfoldWidgets();
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).scrollIntoView({ easing: "linear" });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(500);
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).should("be.visible");
|
|
cy.get(commonlocators.entitySearchResult.concat(apiname1).concat("')"))
|
|
.last()
|
|
.click({ force: true });
|
|
//cy.get('.t--entity-name').click({multiple:true})
|
|
});
|
|
|
|
Cypress.Commands.add("SearchEntityAndUnfold", (apiname1) => {
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.type(apiname1, { force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.CheckAndUnfoldWidgets();
|
|
cy.wait(500);
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).should("be.visible");
|
|
cy.get(commonlocators.entitySearchResult.concat(apiname1).concat("')"))
|
|
.parents(commonlocators.entityItem)
|
|
.first()
|
|
.children(commonlocators.entityCollapseToggle)
|
|
.last()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("OpenBindings", (apiname1) => {
|
|
cy.wait(500);
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.type(apiname1, { force: true });
|
|
cy.CheckAndUnfoldWidgets();
|
|
cy.wait(500);
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).should("be.visible");
|
|
cy.get(commonlocators.entitySearchResult.concat(apiname1).concat("')"))
|
|
.parents(commonlocators.entityItem)
|
|
.first()
|
|
.trigger("mouseover")
|
|
.find(commonlocators.entityContextMenu)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(commonlocators.entityContextMenuContent)
|
|
.children("li")
|
|
.contains("Show Bindings")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("SearchEntityandDblClick", (apiname1) => {
|
|
cy.get(commonlocators.entityExplorersearch)
|
|
.clear({ force: true })
|
|
.type(apiname1, { force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.get(".t--entity-name").click({ multiple: true });
|
|
cy.wait(500);
|
|
cy.get(
|
|
commonlocators.entitySearchResult.concat(apiname1).concat("')"),
|
|
).should("be.visible");
|
|
return cy
|
|
.get(commonlocators.entitySearchResult.concat(apiname1).concat("')"))
|
|
.dblclick()
|
|
.get("input[type=text]")
|
|
.last();
|
|
});
|
|
|
|
Cypress.Commands.add("enterDatasourceAndPath", (datasource, path) => {
|
|
cy.enterDatasource(datasource + path);
|
|
});
|
|
|
|
Cypress.Commands.add("enterDatasource", (datasource) => {
|
|
cy.get(apiwidget.resourceUrl)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(datasource, { parseSpecialCharSequences: false });
|
|
});
|
|
|
|
Cypress.Commands.add("changeZoomLevel", (zoomValue) => {
|
|
cy.get(commonlocators.changeZoomlevel)
|
|
.last()
|
|
.click();
|
|
cy.get(".t--dropdown-option")
|
|
.children()
|
|
.contains(zoomValue)
|
|
.click();
|
|
cy.wait("@updateLayout").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.get(commonlocators.selectedZoomlevel)
|
|
.last()
|
|
.invoke("text")
|
|
.then((text) => {
|
|
const someText = text;
|
|
expect(someText).to.equal(zoomValue);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("changeColumnType", (dataType) => {
|
|
cy.get(commonlocators.changeColType)
|
|
.last()
|
|
.click();
|
|
cy.get(".t--dropdown-option")
|
|
.children()
|
|
.contains(dataType)
|
|
.click();
|
|
cy.wait("@updateLayout").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
/*
|
|
cy.get(commonlocators.selectedColType)
|
|
.first()
|
|
.invoke("text")
|
|
.then((text) => {
|
|
const someText = text;
|
|
expect(someText).to.equal(dataType);
|
|
});
|
|
*/
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"EnterSourceDetailsWithHeader",
|
|
(baseUrl, v1method, hKey, hValue) => {
|
|
cy.enterDatasourceAndPath(baseUrl, v1method);
|
|
cy.get(apiwidget.headerKey)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(hKey, { parseSpecialCharSequences: true });
|
|
cy.get(apiwidget.headerValue)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(hValue, { parseSpecialCharSequences: true });
|
|
cy.WaitAutoSave();
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("EditSourceDetail", (baseUrl, v1method) => {
|
|
cy.get(apiwidget.editResourceUrl)
|
|
.first()
|
|
.click({ force: true })
|
|
.clear()
|
|
.type(`{backspace}${baseUrl}`);
|
|
cy.xpath(apiwidget.autoSuggest)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(ApiEditor.ApiRunBtn).scrollIntoView();
|
|
cy.get(apiwidget.editResourceUrl)
|
|
.first()
|
|
.focus()
|
|
.type(v1method)
|
|
.should("have.value", v1method);
|
|
cy.WaitAutoSave();
|
|
});
|
|
|
|
Cypress.Commands.add("switchToPaginationTab", () => {
|
|
cy.get(apiwidget.paginationTab)
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("switchToAPIInputTab", () => {
|
|
cy.get(apiwidget.apiInputTab)
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("selectDateFormat", (value) => {
|
|
cy.get(".t--property-control-dateformat .bp3-popover-target")
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(".t--dropdown-option")
|
|
.children()
|
|
.contains(value)
|
|
.click();
|
|
});
|
|
|
|
Cypress.Commands.add("selectDropdownValue", (element, value) => {
|
|
cy.get(element)
|
|
.last()
|
|
.click();
|
|
cy.get(".t--dropdown-option")
|
|
.children()
|
|
.contains(value)
|
|
.click();
|
|
});
|
|
|
|
Cypress.Commands.add("assertDateFormat", () => {
|
|
cy.get(".t--draggable-datepickerwidget2 input")
|
|
.first()
|
|
.invoke("attr", "value")
|
|
.then((text) => {
|
|
const firstTxt = text;
|
|
cy.log("date time : ", firstTxt);
|
|
cy.get(commonlocators.labelTextStyle)
|
|
.first()
|
|
.should("contain", firstTxt);
|
|
cy.get(commonlocators.labelTextStyle)
|
|
.last()
|
|
.invoke("text")
|
|
.then((text) => {
|
|
const secondText = text;
|
|
cy.log("date time : ", secondText);
|
|
expect(firstTxt).not.to.equal(secondText);
|
|
});
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("selectPaginationType", (option) => {
|
|
cy.xpath(option).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("clickTest", (testbutton) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.wait("@saveAction");
|
|
cy.get(testbutton)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.wait("@postExecute");
|
|
});
|
|
|
|
Cypress.Commands.add("enterUrl", (apiname, url, value) => {
|
|
cy.get(url)
|
|
.first()
|
|
.type("{{".concat(apiname).concat(value), {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"EnterSourceDetailsWithQueryParam",
|
|
(baseUrl, v1method, hKey, hValue, qKey, qValue) => {
|
|
cy.enterDatasourceAndPath(baseUrl, v1method);
|
|
cy.get(apiwidget.headerKey)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(hKey, { parseSpecialCharSequences: true });
|
|
cy.get(apiwidget.headerValue)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(hValue, { parseSpecialCharSequences: true });
|
|
cy.get(apiwidget.queryKey)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(qKey, { force: true })
|
|
.should("have.value", qKey);
|
|
cy.get(apiwidget.queryValue)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(qValue, { force: true })
|
|
.should("have.value", qValue);
|
|
cy.WaitAutoSave();
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"EnterSourceDetailsWithbody",
|
|
(baseUrl, v1method, hKey, hValue) => {
|
|
cy.enterDatasourceAndPath(baseUrl, v1method);
|
|
cy.get(apiwidget.addHeader)
|
|
.first()
|
|
.click({ first: true });
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("CreationOfUniqueAPIcheck", (apiname) => {
|
|
cy.get(pages.addEntityAPI).click();
|
|
cy.get(pages.integrationCreateNew)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.get(apiwidget.createapi).click({ force: true });
|
|
cy.wait("@createNewApi");
|
|
// cy.wait("@getUser");
|
|
cy.get(apiwidget.resourceUrl).should("be.visible");
|
|
cy.get(apiwidget.ApiName).click({ force: true });
|
|
cy.get(apiwidget.apiTxt)
|
|
.clear()
|
|
.focus()
|
|
.type(apiname, { force: true, delay: 500 })
|
|
.should("have.value", apiname);
|
|
cy.get(".t--action-name-edit-error").should(($x) => {
|
|
expect($x).contain(
|
|
apiname.concat(" is already being used or is a restricted keyword."),
|
|
);
|
|
});
|
|
cy.get(apiwidget.apiTxt).blur();
|
|
});
|
|
|
|
Cypress.Commands.add("MoveAPIToHome", (apiname) => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.copyTo).click({ force: true });
|
|
cy.get(apiwidget.home).click({ force: true });
|
|
cy.wait("@createNewApi").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("MoveAPIToPage", (pageName) => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.moveTo).click({ force: true });
|
|
cy.get(apiwidget.page)
|
|
.contains(pageName)
|
|
.click();
|
|
cy.wait("@moveAction").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("copyEntityToPage", (pageName) => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.copyTo).click({ force: true });
|
|
cy.get(apiwidget.page)
|
|
.contains(pageName)
|
|
.click();
|
|
cy.wait("@createNewApi").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("CopyAPIToHome", () => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.copyTo).click({ force: true });
|
|
cy.get(apiwidget.home).click({ force: true });
|
|
cy.wait("@createNewApi").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("RenameEntity", (value) => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.renameEntity).click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(explorer.editEntity)
|
|
.last()
|
|
.type(value, { force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(3000);
|
|
});
|
|
|
|
Cypress.Commands.add("CreateApiAndValidateUniqueEntityName", (apiname) => {
|
|
cy.get(apiwidget.createapi).click({ force: true });
|
|
cy.wait("@createNewApi");
|
|
cy.get(apiwidget.resourceUrl).should("be.visible");
|
|
cy.get(apiwidget.ApiName).click({ force: true });
|
|
cy.get(apiwidget.apiTxt)
|
|
.clear()
|
|
.type(apiname, { force: true })
|
|
.should("have.value", apiname);
|
|
cy.get(".t--action-name-edit-error").should(($x) => {
|
|
expect($x).contain(
|
|
apiname.concat(" is already being used or is a restricted keyword."),
|
|
);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("validateMessage", (value) => {
|
|
cy.get(".bp3-popover-content").should(($x) => {
|
|
expect($x).contain(value.concat(" is already being used."));
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"VerifyPopOverMessage",
|
|
(msgAbsenceToVerify, presence = false) => {
|
|
// Give this element 3 seconds to appear
|
|
let shouldCondition = "not.exist";
|
|
if (presence) shouldCondition = "exist";
|
|
cy.xpath(
|
|
"//div[@class='bp3-popover-content'][contains(text(),'" +
|
|
msgAbsenceToVerify +
|
|
"')]",
|
|
{ timeout: 3000 },
|
|
).should(shouldCondition);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("DeleteAPIFromSideBar", () => {
|
|
cy.deleteEntity();
|
|
cy.wait("@deleteAction").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("DeleteWidgetFromSideBar", () => {
|
|
cy.deleteEntity();
|
|
cy.wait("@updateLayout").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("deleteEntity", () => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.delete).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("DeleteAPI", (apiname) => {
|
|
cy.get(ApiEditor.ApiActionMenu)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.deleteAPI)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.wait("@deleteAction").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("copyJSObjectToPage", (pageName) => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(apiwidget.copyTo).click({ force: true });
|
|
cy.get(apiwidget.page)
|
|
.contains(pageName)
|
|
.click();
|
|
cy.wait("@createNewJSCollection").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("AddActionWithModal", () => {
|
|
cy.get(commonlocators.dropdownSelectButton)
|
|
.last()
|
|
.click();
|
|
cy.get(".single-select")
|
|
.contains("Open modal")
|
|
.click({ force: true });
|
|
cy.get(modalWidgetPage.selectModal).click();
|
|
cy.get(modalWidgetPage.createModalButton).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("createModal", (ModalName) => {
|
|
cy.get(widgetsPage.actionSelect)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.selectOnClickOption("Open modal");
|
|
cy.get(modalWidgetPage.selectModal).click();
|
|
cy.wait(2000);
|
|
cy.get(modalWidgetPage.createModalButton).click({ force: true });
|
|
cy.wait(3000);
|
|
cy.assertPageSave();
|
|
cy.SearchEntityandOpen("Modal1");
|
|
// changing the model name verify
|
|
cy.widgetText(
|
|
ModalName,
|
|
modalWidgetPage.modalName,
|
|
modalWidgetPage.modalName,
|
|
);
|
|
|
|
//changing the Model label
|
|
cy.get(modalWidgetPage.modalWidget + " " + widgetsPage.textWidget)
|
|
.first()
|
|
.trigger("mouseover");
|
|
|
|
cy.get(widgetsPage.textWidget + " " + commonlocators.editIcon).click();
|
|
cy.testCodeMirror(ModalName);
|
|
cy.get(widgetsPage.textCenterAlign).click({ force: true });
|
|
cy.assertPageSave();
|
|
cy.get(".bp3-overlay-backdrop").click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("selectOnClickOption", (option) => {
|
|
cy.get(".bp3-popover-content", { timeout: 10000 }).should("be.visible");
|
|
cy.get("ul.bp3-menu div.bp3-fill", { timeout: 10000 })
|
|
.should("be.visible")
|
|
.contains(option)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("CheckWidgetProperties", (checkboxCss) => {
|
|
cy.get(checkboxCss).check({
|
|
force: true,
|
|
});
|
|
cy.assertPageSave();
|
|
});
|
|
|
|
Cypress.Commands.add("UncheckWidgetProperties", (checkboxCss) => {
|
|
cy.get(checkboxCss).uncheck({
|
|
force: true,
|
|
});
|
|
cy.assertPageSave();
|
|
});
|
|
|
|
Cypress.Commands.add("EditWidgetPropertiesUsingJS", (checkboxCss, inputJS) => {
|
|
cy.get(checkboxCss, { timeout: 10000 })
|
|
.last()
|
|
.should("exist")
|
|
.dblclick({ force: true })
|
|
.type(inputJS);
|
|
cy.assertPageSave();
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"ChangeTextStyle",
|
|
(dropDownValue, textStylecss, labelName) => {
|
|
cy.get(commonlocators.dropDownIcon)
|
|
.last()
|
|
.click();
|
|
cy.get(".t--dropdown-option")
|
|
.children()
|
|
.contains(dropDownValue)
|
|
.click();
|
|
cy.get(textStylecss).should("have.text", labelName);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("widgetText", (text, inputcss, innercss) => {
|
|
cy.get(commonlocators.editWidgetName)
|
|
.click({ force: true })
|
|
.type(text, { delay: 300 })
|
|
.type("{enter}");
|
|
cy.get(inputcss)
|
|
.first()
|
|
.trigger("mouseover", { force: true });
|
|
cy.contains(innercss, text);
|
|
});
|
|
|
|
Cypress.Commands.add("verifyWidgetText", (text, inputcss, innercss) => {
|
|
cy.get(inputcss)
|
|
.first()
|
|
.trigger("mouseover", { force: true });
|
|
cy.contains(innercss, text);
|
|
});
|
|
|
|
Cypress.Commands.add("editColName", (text) => {
|
|
cy.get(commonlocators.editColTitle)
|
|
.click({ force: true })
|
|
.type(text)
|
|
.type("{enter}");
|
|
cy.get(commonlocators.editColText).should("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("invalidWidgetText", () => {
|
|
// checking invalid widget name
|
|
cy.get(commonlocators.editWidgetName)
|
|
.click({ force: true })
|
|
.type("download")
|
|
.type("{enter}");
|
|
cy.get(commonlocators.toastmsg).contains("download is already being used.");
|
|
});
|
|
|
|
Cypress.Commands.add("EvaluateDataType", (dataType) => {
|
|
cy.get(commonlocators.evaluatedType)
|
|
.first()
|
|
.should("be.visible")
|
|
.contains(dataType);
|
|
});
|
|
|
|
Cypress.Commands.add("EvaluateCurrentValue", (currentValue) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(3000);
|
|
cy.get(commonlocators.evaluatedCurrentValue)
|
|
.first()
|
|
.should("be.visible")
|
|
.should("not.have.text", "undefined");
|
|
cy.get(commonlocators.evaluatedCurrentValue)
|
|
.first()
|
|
//.should("be.visible")
|
|
.click({ force: true })
|
|
.then(($text) => {
|
|
if ($text.text()) expect($text.text()).to.eq(currentValue);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("PublishtheApp", () => {
|
|
cy.server();
|
|
cy.route("POST", "/api/v1/applications/publish/*").as("publishApp");
|
|
// Wait before publish
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.assertPageSave();
|
|
|
|
// Stubbing window.open to open in the same tab
|
|
cy.window().then((window) => {
|
|
cy.stub(window, "open").callsFake((url) => {
|
|
window.location.href = Cypress.config().baseUrl + url.substring(1);
|
|
window.location.target = "_self";
|
|
});
|
|
});
|
|
|
|
cy.get(homePage.publishButton).click();
|
|
cy.wait("@publishApp");
|
|
cy.url().should("include", "/pages");
|
|
cy.log("pagename: " + localStorage.getItem("PageName"));
|
|
cy.wait(1000); //wait time for page to load!
|
|
});
|
|
|
|
Cypress.Commands.add("getCodeMirror", () => {
|
|
return cy
|
|
.get(".CodeMirror textarea")
|
|
.first()
|
|
.focus()
|
|
.type("{ctrl}{shift}{downarrow}");
|
|
});
|
|
|
|
Cypress.Commands.add("testCodeMirror", (value) => {
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.focus()
|
|
.type("{ctrl}{shift}{downarrow}")
|
|
.then(($cm) => {
|
|
if ($cm.val() !== "") {
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.should("have.value", value);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("updateComputedValue", (value) => {
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.focus({ force: true })
|
|
.type("{uparrow}", { force: true })
|
|
.type("{ctrl}{shift}{downarrow}", { force: true });
|
|
cy.focused().then(($cm) => {
|
|
if ($cm.contents !== "") {
|
|
cy.log("The field is empty");
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add("testCodeMirrorLast", (value) => {
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.focus()
|
|
.type("{ctrl}{shift}{downarrow}")
|
|
.then(($cm) => {
|
|
if ($cm.val() !== "") {
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.clear({ force: true })
|
|
.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(200);
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.should("have.value", value);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("testJsontext", (endp, value, paste = true) => {
|
|
cy.get(".t--property-control-" + endp + " .CodeMirror textarea")
|
|
.first()
|
|
.focus({ force: true })
|
|
.type("{uparrow}", { force: true })
|
|
.type("{ctrl}{shift}{downarrow}", { force: true });
|
|
cy.focused().then(($cm) => {
|
|
if ($cm.contents !== "") {
|
|
cy.log("The field is not empty");
|
|
cy.get(".t--property-control-" + endp + " .CodeMirror textarea")
|
|
.first()
|
|
.click({ force: true })
|
|
.focused({ force: true })
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(500);
|
|
cy.get(".t--property-control-" + endp + " .CodeMirror textarea")
|
|
.first()
|
|
.then((el) => {
|
|
const input = cy.get(el);
|
|
if (paste) {
|
|
input.invoke("val", value);
|
|
} else {
|
|
input.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
}
|
|
});
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2500); //Allowing time for Evaluate value to capture value
|
|
});
|
|
|
|
/**
|
|
* Usage:
|
|
* Find the element which has a code editor input and then pass it in the function
|
|
*
|
|
* cy.get(...).then(el => cy.updateCodeInput(el, "test"));
|
|
*
|
|
*/
|
|
Cypress.Commands.add("updateCodeInput", ($selector, value) => {
|
|
cy.get($selector)
|
|
.find(".CodeMirror")
|
|
.first()
|
|
.then((ins) => {
|
|
const input = ins[0].CodeMirror;
|
|
input.focus();
|
|
cy.wait(200);
|
|
input.setValue(value);
|
|
cy.wait(200); //time for value to set
|
|
//input.focus();
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("selectColor", (GivenProperty) => {
|
|
// Property pane of the widget is opened, and click given property.
|
|
cy.get(
|
|
".t--property-control-" + GivenProperty + " .bp3-input-group input",
|
|
).click({
|
|
force: true,
|
|
});
|
|
cy.get(widgetsPage.colorsAvailable)
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("toggleJsAndUpdate", (endp, value) => {
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.focus({ force: true })
|
|
.type("{uparrow}", { force: true })
|
|
.type("{ctrl}{shift}{downarrow}", { force: true });
|
|
cy.focused().then(($cm) => {
|
|
if ($cm.contents !== "") {
|
|
cy.log("The field is empty");
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(200);
|
|
});
|
|
|
|
Cypress.Commands.add("assertControlVisibility", (endp, value) => {
|
|
cy.get(".t--property-control-" + endp + " .CodeMirror")
|
|
.first()
|
|
.should("not.be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("tableColumnDataValidation", (columnName) => {
|
|
cy.get("[data-rbd-draggable-id='" + columnName + "'] input")
|
|
.scrollIntoView()
|
|
.first()
|
|
.focus({ force: true })
|
|
.should("be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("tableColumnPopertyUpdate", (colId, newColName) => {
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] input")
|
|
.scrollIntoView()
|
|
.should("be.visible")
|
|
.click({
|
|
force: true,
|
|
});
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] input").clear({
|
|
force: true,
|
|
});
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] input").type(newColName, {
|
|
force: true,
|
|
});
|
|
cy.get(".draggable-header ")
|
|
.contains(newColName)
|
|
.should("be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("hideColumn", (colId) => {
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] .t--show-column-btn").click({
|
|
force: true,
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add("showColumn", (colId) => {
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] .t--show-column-btn").click({
|
|
force: true,
|
|
});
|
|
cy.get(".draggable-header ")
|
|
.contains(colId)
|
|
.should("be.visible");
|
|
});
|
|
Cypress.Commands.add("deleteColumn", (colId) => {
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] .t--delete-column-btn").click(
|
|
{
|
|
force: true,
|
|
},
|
|
);
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add("makeColumnVisible", (colId) => {
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] .t--show-column-btn").click({
|
|
force: true,
|
|
});
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add("addColumn", (colId) => {
|
|
cy.get(widgetsPage.addColumn).scrollIntoView();
|
|
cy.get(widgetsPage.addColumn)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(3000);
|
|
cy.get(widgetsPage.defaultColName).clear({
|
|
force: true,
|
|
});
|
|
cy.get(widgetsPage.defaultColName).type(colId, { force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("editColumn", (colId) => {
|
|
cy.get("[data-rbd-draggable-id='" + colId + "'] .t--edit-column-btn").click();
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1500);
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"readTabledataValidateCSS",
|
|
(rowNum, colNum, cssProperty, cssValue) => {
|
|
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div`;
|
|
cy.get(selector).should("have.css", cssProperty, cssValue);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("readTextDataValidateCSS", (cssProperty, cssValue) => {
|
|
cy.get(commonlocators.headingTextStyle).should(
|
|
"have.css",
|
|
cssProperty,
|
|
cssValue,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("evaluateErrorMessage", (value) => {
|
|
cy.get(commonlocators.evaluateMsg)
|
|
.first()
|
|
.click()
|
|
.invoke("text")
|
|
.then((text) => {
|
|
const someText = text;
|
|
expect(someText).to.equal(value);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("addAction", (value) => {
|
|
cy.get(commonlocators.dropdownSelectButton)
|
|
.last()
|
|
.click();
|
|
cy.get(commonlocators.chooseAction)
|
|
.children()
|
|
.contains("Show message")
|
|
.click();
|
|
cy.enterActionValue(value);
|
|
});
|
|
|
|
Cypress.Commands.add("onTableAction", (value, value1, value2) => {
|
|
cy.get(commonlocators.dropdownSelectButton)
|
|
.eq(value)
|
|
.click();
|
|
cy.get(commonlocators.chooseAction)
|
|
.children()
|
|
.contains("Show message")
|
|
.click();
|
|
cy.testJsontext(value1, value2);
|
|
});
|
|
|
|
Cypress.Commands.add("selectShowMsg", () => {
|
|
cy.get(commonlocators.chooseAction)
|
|
.children()
|
|
.contains("Show message")
|
|
.click();
|
|
});
|
|
|
|
Cypress.Commands.add("addSuccessMessage", (value) => {
|
|
cy.get(commonlocators.chooseMsgType)
|
|
.last()
|
|
.click();
|
|
cy.get(commonlocators.chooseAction)
|
|
.children()
|
|
.contains("Success")
|
|
.click();
|
|
cy.enterActionValue(value);
|
|
});
|
|
|
|
Cypress.Commands.add("SetDateToToday", () => {
|
|
cy.get(formWidgetsPage.datepickerFooterPublish)
|
|
.contains("Today")
|
|
.click({ force: true });
|
|
cy.assertPageSave();
|
|
});
|
|
|
|
Cypress.Commands.add("enterActionValue", (value) => {
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.focus()
|
|
.type("{ctrl}{shift}{downarrow}")
|
|
.then(($cm) => {
|
|
if ($cm.val() !== "") {
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
|
|
cy.get(".CodeMirror textarea")
|
|
.last()
|
|
.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(200);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("enterNavigatePageName", (value) => {
|
|
cy.get("ul.tree")
|
|
.children()
|
|
.first()
|
|
.within(() => {
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.focus()
|
|
.type("{ctrl}{shift}{downarrow}")
|
|
.then(($cm) => {
|
|
if ($cm.val() !== "") {
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.type(value, {
|
|
force: true,
|
|
parseSpecialCharSequences: false,
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(200);
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.should("have.value", value);
|
|
});
|
|
cy.root();
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("ClearDate", () => {
|
|
cy.get(".t--property-control-defaultdate input").clear();
|
|
cy.assertPageSave();
|
|
});
|
|
|
|
Cypress.Commands.add("ClearDateFooter", () => {
|
|
cy.get(formWidgetsPage.datepickerFooterPublish)
|
|
.contains("Clear")
|
|
.click({ force: true });
|
|
//cy.assertPageSave();
|
|
});
|
|
|
|
Cypress.Commands.add("DeleteModal", () => {
|
|
cy.get(widgetsPage.textbuttonWidget).dblclick("topRight", { force: true });
|
|
cy.get(widgetsPage.deleteWidget)
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("Createpage", (Pagename) => {
|
|
cy.get(pages.AddPage)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.wait("@createPage").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.should("be.hidden")
|
|
.invoke("show")
|
|
.click({ force: true });
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
/*
|
|
cy.xpath(pages.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
*/
|
|
cy.get(pages.editName).click({ force: true });
|
|
cy.get(pages.editInput).type(Pagename + "{enter}");
|
|
pageidcopy = Pagename;
|
|
cy.get(generatePage.buildFromScratchActionCard).click();
|
|
cy.get("#loading").should("not.exist");
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
});
|
|
|
|
Cypress.Commands.add("Deletepage", (Pagename) => {
|
|
cy.get(pages.pagesIcon).click({ force: true });
|
|
cy.get(".t--page-sidebar-" + Pagename + "");
|
|
cy.get(
|
|
".t--page-sidebar-" +
|
|
Pagename +
|
|
">.t--page-sidebar-menu-actions>.bp3-popover-target",
|
|
).click({ force: true });
|
|
cy.get(pages.Menuaction).click({ force: true });
|
|
cy.get(pages.Delete).click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
});
|
|
|
|
Cypress.Commands.add("generateUUID", () => {
|
|
const uuid = require("uuid");
|
|
const id = uuid.v4();
|
|
return id.split("-")[0];
|
|
});
|
|
|
|
Cypress.Commands.add("addDsl", (dsl) => {
|
|
let currentURL;
|
|
let pageid;
|
|
let layoutId;
|
|
cy.url().then((url) => {
|
|
currentURL = url;
|
|
const myRegexp = /pages(.*)/;
|
|
const match = myRegexp.exec(currentURL);
|
|
pageid = match[1].split("/")[1];
|
|
cy.log(pageidcopy + "page id copy");
|
|
cy.log(pageid + "page id");
|
|
//Fetch the layout id
|
|
cy.server();
|
|
cy.request("GET", "api/v1/pages/" + pageid).then((response) => {
|
|
const respBody = JSON.stringify(response.body);
|
|
layoutId = JSON.parse(respBody).data.layouts[0].id;
|
|
// Dumping the DSL to the created page
|
|
cy.request(
|
|
"PUT",
|
|
"api/v1/layouts/" + layoutId + "/pages/" + pageid,
|
|
dsl,
|
|
).then((response) => {
|
|
cy.log(response.body);
|
|
expect(response.status).equal(200);
|
|
cy.reload();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("DeleteAppByApi", () => {
|
|
let currentURL;
|
|
let appId;
|
|
cy.url().then((url) => {
|
|
currentURL = url;
|
|
const myRegexp = /applications(.*)/;
|
|
const match = myRegexp.exec(currentURL);
|
|
appId = match ? match[1].split("/")[1] : null;
|
|
|
|
if (appId !== null) {
|
|
cy.log(appId + "appId");
|
|
cy.request({
|
|
method: "DELETE",
|
|
url: "api/v1/applications/" + appId,
|
|
failOnStatusCode: false,
|
|
}).then((response) => {
|
|
cy.log(response.body);
|
|
cy.log(response.status);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("togglebar", (value) => {
|
|
cy.get(value)
|
|
.check({ force: true })
|
|
.should("be.checked");
|
|
});
|
|
|
|
Cypress.Commands.add("radiovalue", (value, value2) => {
|
|
cy.get(value)
|
|
.click()
|
|
.clear()
|
|
.type(value2);
|
|
});
|
|
|
|
Cypress.Commands.add("optionValue", (value, value2) => {
|
|
cy.get(value)
|
|
.click()
|
|
.clear()
|
|
.type(value2);
|
|
});
|
|
|
|
Cypress.Commands.add("dropdownDynamic", (text) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get("ul.bp3-menu")
|
|
.contains(text)
|
|
.click({ force: true })
|
|
.should("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("dropdownMultiSelectDynamic", (text) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(".multi-select-dropdown")
|
|
.contains(text)
|
|
.click({ force: true })
|
|
.should("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("treeSelectDropdown", (text) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(".tree-select-dropdown")
|
|
.contains(text)
|
|
.click({ force: true })
|
|
.should("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("treeMultiSelectDropdown", (text) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(".tree-multiselect-dropdown")
|
|
.contains(text)
|
|
.click({ force: true })
|
|
.should("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("dropdownDynamicUpdated", (text) => {
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(commonlocators.dropdownmenu)
|
|
.contains(text)
|
|
.click({ force: true });
|
|
cy.xpath(commonlocators.dropDownOptSelected).should("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("selectTextSize", (text) => {
|
|
cy.get(".t--dropdown-option")
|
|
.first()
|
|
.contains(text)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("getAlert", (alertcss) => {
|
|
cy.get(commonlocators.dropdownSelectButton).click({ force: true });
|
|
cy.get(widgetsPage.menubar)
|
|
.contains("Show Alert")
|
|
.click({ force: true })
|
|
.should("have.text", "Show Alert");
|
|
|
|
cy.get(alertcss)
|
|
.click({ force: true })
|
|
.type("hello");
|
|
cy.get(".t--open-dropdown-Select-type").click({ force: true });
|
|
cy.get(".bp3-popover-content .bp3-menu li")
|
|
.contains("Success")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("togglebar", (value) => {
|
|
cy.get(value)
|
|
.check({ force: true })
|
|
.should("be.checked");
|
|
});
|
|
Cypress.Commands.add("togglebarDisable", (value) => {
|
|
cy.get(value)
|
|
.uncheck({ force: true })
|
|
.should("not.checked");
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"getAlert",
|
|
(alertcss, propertyControl = commonlocators.dropdownSelectButton) => {
|
|
cy.get(propertyControl)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(widgetsPage.menubar)
|
|
.contains("Show message")
|
|
.click({ force: true });
|
|
|
|
cy.get(alertcss)
|
|
.click({ force: true })
|
|
.type("hello");
|
|
cy.get(".t--open-dropdown-Select-type").click({ force: true });
|
|
cy.get(".bp3-popover-content .bp3-menu li")
|
|
.contains("Success")
|
|
.click({ force: true });
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("addQueryFromLightningMenu", (QueryName) => {
|
|
cy.get(commonlocators.dropdownSelectButton)
|
|
.first()
|
|
.click({ force: true })
|
|
.selectOnClickOption("Execute a query")
|
|
.selectOnClickOption(QueryName);
|
|
});
|
|
|
|
Cypress.Commands.add("addAPIFromLightningMenu", (ApiName) => {
|
|
cy.get(commonlocators.dropdownSelectButton)
|
|
.first()
|
|
.click({ force: true })
|
|
.selectOnClickOption("Execute a query")
|
|
.selectOnClickOption(ApiName);
|
|
});
|
|
|
|
Cypress.Commands.add("radioInput", (index, text) => {
|
|
cy.get(widgetsPage.RadioInput)
|
|
.eq(index)
|
|
.click({ force: true })
|
|
.clear({ force: true })
|
|
.type(text)
|
|
.wait(200);
|
|
});
|
|
Cypress.Commands.add("tabVerify", (index, text) => {
|
|
cy.get(".t--property-control-tabs input")
|
|
.eq(index)
|
|
.click({ force: true })
|
|
.clear()
|
|
.type(text);
|
|
cy.get(LayoutPage.tabWidget)
|
|
.contains(text)
|
|
.click({ force: true })
|
|
.should("be.visible");
|
|
});
|
|
|
|
Cypress.Commands.add("getPluginFormsAndCreateDatasource", () => {
|
|
/*
|
|
cy.wait("@getPluginForm").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
cy.wait("@createDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
*/
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToApiEditor", () => {
|
|
cy.get(explorer.addEntityAPI).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToWidgetsInExplorer", () => {
|
|
cy.get(explorer.entityWidget).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToQueriesInExplorer", () => {
|
|
cy.get(explorer.entityQuery).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToJSEditor", () => {
|
|
cy.get(explorer.createNew).click({ force: true });
|
|
cy.get(".t--file-operation")
|
|
.eq(1)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("testCreateApiButton", () => {
|
|
cy.get(ApiEditor.createBlankApiCard).click({ force: true });
|
|
cy.wait("@createNewApi").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("testSaveDeleteDatasource", () => {
|
|
// Instead of deleting the last datasource on the active datasources list,
|
|
// we delete the datasource that was just created (identified by its title)
|
|
cy.get(datasourceEditor.datasourceTitle)
|
|
.invoke("text")
|
|
.then((datasourceTitle) => {
|
|
// test datasource
|
|
cy.get(".t--test-datasource").click();
|
|
cy.wait("@testDatasource");
|
|
// .should("have.nested.property", "response.body.data.success", true)
|
|
// .debug();
|
|
|
|
// save datasource
|
|
cy.get(".t--save-datasource").click();
|
|
cy.wait("@saveDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
// select datasource to be deleted by datasource title
|
|
cy.get(`${datasourceEditor.datasourceCard}`)
|
|
.contains(datasourceTitle)
|
|
.last()
|
|
.click();
|
|
// delete datasource
|
|
cy.get(".t--delete-datasource").click();
|
|
cy.get("[data-cy=t--confirm-modal-btn]").click();
|
|
cy.wait("@deleteDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("importCurl", () => {
|
|
cy.get(ApiEditor.curlImportBtn).click({ force: true });
|
|
cy.wait("@curlImport").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
201,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToDatasourceEditor", () => {
|
|
cy.get(explorer.addDBQueryEntity)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(pages.integrationCreateNew)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToQueryEditor", () => {
|
|
cy.get(explorer.addDBQueryEntity)
|
|
.last()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToActiveTab", () => {
|
|
cy.get(explorer.activeTab).click({ force: true });
|
|
|
|
// cy.get(pages.integrationActiveTab)
|
|
// .should("be.visible")
|
|
// .click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToActiveDSQueryPane", (datasourceName) => {
|
|
cy.NavigateToQueryEditor();
|
|
cy.NavigateToActiveTab();
|
|
|
|
cy.get(datasource.datasourceCard)
|
|
.contains(datasourceName)
|
|
.scrollIntoView()
|
|
.should("be.visible")
|
|
.closest(datasource.datasourceCard)
|
|
.within(() => {
|
|
cy.get(queryLocators.createQuery).click({ force: true });
|
|
})
|
|
.wait(2000); //for the specified page to load
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToDSGeneratePage", (datasourceName) => {
|
|
cy.NavigateToQueryEditor();
|
|
cy.NavigateToActiveTab();
|
|
|
|
cy.get(datasource.datasourceCard)
|
|
.contains(datasourceName)
|
|
.scrollIntoView()
|
|
.should("be.visible")
|
|
.closest(datasource.datasourceCard)
|
|
.within(() => {
|
|
cy.get(datasource.datasourceCardGeneratePageBtn).click();
|
|
})
|
|
.wait(2000); //for the specified page to load
|
|
});
|
|
|
|
Cypress.Commands.add("ClickGotIt", () => {
|
|
cy.get("span:contains('GOT IT')").click();
|
|
});
|
|
|
|
Cypress.Commands.add("testDatasource", (expectedRes = true) => {
|
|
cy.get(".t--test-datasource").click();
|
|
cy.wait("@testDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.data.success",
|
|
expectedRes,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("saveDatasource", () => {
|
|
cy.get(".t--save-datasource").click();
|
|
cy.wait("@saveDatasource")
|
|
.then((xhr) => {
|
|
cy.log(JSON.stringify(xhr.response.body));
|
|
})
|
|
.should("have.nested.property", "response.body.responseMeta.status", 200);
|
|
});
|
|
|
|
Cypress.Commands.add("testSaveDatasource", (expectedRes = true) => {
|
|
cy.testDatasource(expectedRes);
|
|
cy.saveDatasource();
|
|
// cy.get(datasourceEditor.datasourceCard)
|
|
// .last()
|
|
// .click();
|
|
});
|
|
|
|
Cypress.Commands.add("fillGoogleSheetsDatasourceForm", () => {
|
|
cy.get(datasourceEditor["scope"]).click();
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"fillMongoDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const hostAddress = shouldAddTrailingSpaces
|
|
? datasourceFormData["mongo-host"] + " "
|
|
: datasourceFormData["mongo-host"];
|
|
const databaseName = shouldAddTrailingSpaces
|
|
? 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["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,
|
|
// });
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"fillPostgresDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const hostAddress = shouldAddTrailingSpaces
|
|
? datasourceFormData["postgres-host"] + " "
|
|
: datasourceFormData["postgres-host"];
|
|
const databaseName = shouldAddTrailingSpaces
|
|
? datasourceFormData["postgres-databaseName"] + " "
|
|
: datasourceFormData["postgres-databaseName"];
|
|
|
|
cy.get(datasourceEditor.host).type(hostAddress);
|
|
cy.get(datasourceEditor.port).type(datasourceFormData["postgres-port"]);
|
|
cy.get(datasourceEditor.databaseName)
|
|
.clear()
|
|
.type(databaseName);
|
|
|
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
|
cy.get(datasourceEditor.username).type(
|
|
datasourceFormData["postgres-username"],
|
|
);
|
|
cy.get(datasourceEditor.password).type(
|
|
datasourceFormData["postgres-password"],
|
|
);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"fillMySQLDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const hostAddress = shouldAddTrailingSpaces
|
|
? datasourceFormData["mysql-host"] + " "
|
|
: datasourceFormData["mysql-host"];
|
|
const databaseName = shouldAddTrailingSpaces
|
|
? datasourceFormData["mysql-databaseName"] + " "
|
|
: datasourceFormData["mysql-databaseName"];
|
|
|
|
cy.get(datasourceEditor.host).type(hostAddress);
|
|
cy.get(datasourceEditor.port).type(datasourceFormData["mysql-port"]);
|
|
cy.get(datasourceEditor.databaseName)
|
|
.clear()
|
|
.type(databaseName);
|
|
|
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
|
cy.get(datasourceEditor.username).type(
|
|
datasourceFormData["mysql-username"],
|
|
);
|
|
cy.get(datasourceEditor.password).type(
|
|
datasourceFormData["mysql-password"],
|
|
);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"fillMsSQLDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const hostAddress = shouldAddTrailingSpaces
|
|
? datasourceFormData["mssql-host"] + " "
|
|
: datasourceFormData["mssql-host"];
|
|
const databaseName = shouldAddTrailingSpaces
|
|
? datasourceFormData["mssql-databaseName"] + " "
|
|
: datasourceFormData["mssql-databaseName"];
|
|
|
|
cy.get(datasourceEditor.host).type(hostAddress);
|
|
cy.get(datasourceEditor.port).type(datasourceFormData["mssql-port"]);
|
|
cy.get(datasourceEditor.databaseName)
|
|
.clear()
|
|
.type(databaseName);
|
|
|
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
|
cy.get(datasourceEditor.username).type(
|
|
datasourceFormData["mssql-username"],
|
|
);
|
|
cy.get(datasourceEditor.password).type(
|
|
datasourceFormData["mssql-password"],
|
|
);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"fillArangoDBDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const hostAddress = shouldAddTrailingSpaces
|
|
? datasourceFormData["arango-host"] + " "
|
|
: datasourceFormData["arango-host"];
|
|
const databaseName = shouldAddTrailingSpaces
|
|
? datasourceFormData["arango-databaseName"] + " "
|
|
: datasourceFormData["arango-databaseName"];
|
|
|
|
cy.get(datasourceEditor.host).type(hostAddress);
|
|
cy.get(datasourceEditor.port).type(datasourceFormData["arango-port"]);
|
|
cy.get(datasourceEditor.databaseName)
|
|
.clear()
|
|
.type(databaseName);
|
|
|
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
|
cy.get(datasourceEditor.username).type(
|
|
datasourceFormData["arango-username"],
|
|
);
|
|
cy.get(datasourceEditor.password).type(
|
|
datasourceFormData["arango-password"],
|
|
);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"fillRedshiftDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const hostAddress = shouldAddTrailingSpaces
|
|
? datasourceFormData["redshift-host"] + " "
|
|
: datasourceFormData["redshift-host"];
|
|
const databaseName = shouldAddTrailingSpaces
|
|
? datasourceFormData["redshift-databaseName"] + " "
|
|
: datasourceFormData["redshift-databaseName"];
|
|
|
|
cy.get(datasourceEditor.host).type(hostAddress);
|
|
cy.get(datasourceEditor.port).type(datasourceFormData["redshift-port"]);
|
|
cy.get(datasourceEditor.databaseName)
|
|
.clear()
|
|
.type(databaseName);
|
|
|
|
cy.get(datasourceEditor.sectionAuthentication).click();
|
|
cy.get(datasourceEditor.username).type(
|
|
datasourceFormData["redshift-username"],
|
|
);
|
|
cy.get(datasourceEditor.password).type(
|
|
datasourceFormData["redshift-password"],
|
|
);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
"fillUsersMockDatasourceForm",
|
|
(shouldAddTrailingSpaces = false) => {
|
|
const userMockDatabaseName = shouldAddTrailingSpaces
|
|
? `${datasourceFormData["mockDatabaseName"] + " "}`
|
|
: datasourceFormData["mockDatabaseName"];
|
|
|
|
const userMockHostAddress = shouldAddTrailingSpaces
|
|
? `${datasourceFormData["mockHostAddress"] + " "}`
|
|
: datasourceFormData["mockHostAddress"];
|
|
|
|
const userMockDatabaseUsername = shouldAddTrailingSpaces
|
|
? `${datasourceFormData["mockDatabaseUsername"] + " "}`
|
|
: datasourceFormData["mockDatabaseUsername"];
|
|
|
|
cy.get(datasourceEditor["host"])
|
|
.clear()
|
|
.type(userMockHostAddress);
|
|
|
|
cy.get(datasourceEditor["databaseName"])
|
|
.clear()
|
|
.type(userMockDatabaseName);
|
|
|
|
cy.get(datasourceEditor["sectionAuthentication"]).click();
|
|
|
|
cy.get(datasourceEditor["password"])
|
|
.clear()
|
|
.type(datasourceFormData["mockDatabasePassword"]);
|
|
|
|
cy.get(datasourceEditor["username"])
|
|
.clear()
|
|
.type(userMockDatabaseUsername);
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("createPostgresDatasource", () => {
|
|
cy.NavigateToDatasourceEditor();
|
|
cy.get(datasourceEditor.PostgreSQL).click();
|
|
//cy.getPluginFormsAndCreateDatasource();
|
|
cy.fillPostgresDatasourceForm();
|
|
cy.testSaveDatasource();
|
|
});
|
|
|
|
Cypress.Commands.add("deleteDatasource", (datasourceName) => {
|
|
cy.NavigateToQueryEditor();
|
|
cy.get(pages.integrationActiveTab)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.contains(".t--datasource-name", datasourceName).click();
|
|
cy.get(".t--delete-datasource").click();
|
|
cy.get("[data-cy=t--confirm-modal-btn]").click();
|
|
cy.wait("@deleteDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("runQuery", (expectedRes = true) => {
|
|
cy.onlyQueryRun();
|
|
cy.wait("@postExecute").should(
|
|
"have.nested.property",
|
|
"response.body.data.isExecutionSuccess",
|
|
expectedRes,
|
|
);
|
|
|
|
// cy.wait("@postExecute").should(
|
|
// "have.nested.property",
|
|
// "response.body.responseMeta.status",
|
|
// 200,
|
|
// );
|
|
});
|
|
|
|
Cypress.Commands.add("onlyQueryRun", () => {
|
|
cy.xpath(queryEditor.runQuery)
|
|
.last()
|
|
.click({ force: true })
|
|
.wait(500);
|
|
});
|
|
|
|
Cypress.Commands.add("hoverAndClick", () => {
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.should("be.hidden")
|
|
.invoke("show")
|
|
.click({ force: true });
|
|
cy.xpath(apiwidget.popover)
|
|
.last()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("hoverAndClickParticularIndex", (index) => {
|
|
cy.xpath(apiwidget.popover)
|
|
.eq(index)
|
|
.should("be.hidden")
|
|
.invoke("show")
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("deleteQuery", () => {
|
|
cy.hoverAndClick();
|
|
cy.get(apiwidget.delete).click({ force: true });
|
|
cy.wait("@deleteAction").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("selectAction", (option) => {
|
|
cy.get(".single-select")
|
|
.contains(option)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("deleteJSObject", () => {
|
|
cy.hoverAndClick();
|
|
cy.get(jsEditorLocators.delete).click({ force: true });
|
|
cy.wait("@deleteJSCollection").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("deleteDataSource", () => {
|
|
cy.hoverAndClick();
|
|
cy.get(apiwidget.delete).click({ force: true });
|
|
cy.get("[data-cy=t--confirm-modal-btn]").click();
|
|
cy.wait("@deleteDatasource").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("deleteQueryUsingContext", () => {
|
|
cy.get(queryEditor.queryMoreAction).click();
|
|
cy.get(queryEditor.deleteUsingContext).click();
|
|
cy.wait("@deleteAction").should(
|
|
"have.nested.property",
|
|
"response.body.responseMeta.status",
|
|
200,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("runAndDeleteQuery", () => {
|
|
cy.runQuery();
|
|
cy.deleteQueryUsingContext();
|
|
});
|
|
|
|
Cypress.Commands.add("dragAndDropToCanvas", (widgetType, { x, y }) => {
|
|
const selector = `.t--widget-card-draggable-${widgetType}`;
|
|
cy.wait(500);
|
|
cy.get(selector)
|
|
.trigger("dragstart", { force: true })
|
|
.trigger("mousemove", x, y, { force: true });
|
|
cy.get(explorer.dropHere)
|
|
.trigger("mousemove", x, y, { eventConstructor: "MouseEvent" })
|
|
.trigger("mousemove", x, y, { eventConstructor: "MouseEvent" })
|
|
.trigger("mouseup", x, y, { eventConstructor: "MouseEvent" });
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"dragAndDropToWidget",
|
|
(widgetType, destinationWidget, { x, y }) => {
|
|
const selector = `.t--widget-card-draggable-${widgetType}`;
|
|
cy.wait(500);
|
|
cy.get(selector)
|
|
.trigger("dragstart", { force: true })
|
|
.trigger("mousemove", x, y, { force: true });
|
|
const selector2 = `.t--draggable-${destinationWidget}`;
|
|
cy.get(selector2)
|
|
.trigger("mousemove", x, y, { eventConstructor: "MouseEvent" })
|
|
.trigger("mousemove", x, y, { eventConstructor: "MouseEvent" })
|
|
.trigger("mouseup", x, y, { eventConstructor: "MouseEvent" });
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("executeDbQuery", (queryName) => {
|
|
cy.get(widgetsPage.buttonOnClick)
|
|
.get(commonlocators.dropdownSelectButton)
|
|
.click({ force: true })
|
|
.get("ul.bp3-menu")
|
|
.children()
|
|
.contains("Execute a query")
|
|
.click({ force: true })
|
|
.get("ul.bp3-menu")
|
|
.children()
|
|
.contains(queryName)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("CreateMockQuery", (queryName) => {
|
|
// cy.get(queryEditor.addNewQueryBtn).click({ force: true });
|
|
// cy.get(queryEditor.createQuery)
|
|
// .first()
|
|
// .click({ force: true });
|
|
cy.get(queryEditor.queryNameField).type(queryName + "{enter}", {
|
|
force: true,
|
|
});
|
|
cy.assertPageSave();
|
|
cy.get(queryEditor.templateMenu + " div")
|
|
.contains("Select")
|
|
.click({ force: true });
|
|
cy.runQuery();
|
|
// cy.wait(3000);
|
|
// cy.get(queryEditor.runQuery)
|
|
// .click({force: true});
|
|
});
|
|
|
|
Cypress.Commands.add("openPropertyPane", (widgetType) => {
|
|
const selector = `.t--draggable-${widgetType}`;
|
|
cy.wait(500);
|
|
cy.get(selector)
|
|
.first()
|
|
.trigger("mouseover", { force: true })
|
|
.wait(500);
|
|
cy.get(
|
|
`${selector}:first-of-type .t--widget-propertypane-toggle > .t--widget-name`,
|
|
)
|
|
.first()
|
|
.click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add("openPropertyPaneCopy", (widgetType) => {
|
|
if (widgetType === "List1Copy") {
|
|
cy.SearchEntityandOpen(widgetType);
|
|
} else {
|
|
const selector = `.t--draggable-${widgetType}`;
|
|
cy.get(selector)
|
|
.last()
|
|
.trigger("mouseover", { force: true })
|
|
.wait(500);
|
|
cy.get(
|
|
`${selector}:first-of-type .t--widget-propertypane-toggle > .t--widget-name`,
|
|
)
|
|
.first()
|
|
.click({ force: true });
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1000);
|
|
}
|
|
});
|
|
|
|
Cypress.Commands.add("changeButtonColor", (buttonColor) => {
|
|
cy.get(widgetsPage.buttonColor)
|
|
.click({ force: true })
|
|
.clear()
|
|
.type(buttonColor);
|
|
cy.PublishtheApp();
|
|
cy.get(widgetsPage.widgetBtn).should(
|
|
"have.css",
|
|
"background-color",
|
|
buttonColor,
|
|
);
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add("closePropertyPane", () => {
|
|
cy.get(commonlocators.canvas).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("onClickActions", (forSuccess, forFailure, endp) => {
|
|
// Filling the messages for success/failure in the onClickAction of the button widget.
|
|
// For Success
|
|
cy.get(".code-highlight", { timeout: 10000 })
|
|
.children()
|
|
.contains("No action")
|
|
.first()
|
|
.click({ force: true })
|
|
.selectOnClickOption("Show message")
|
|
.get("div.t--property-control-" + endp + " div.CodeMirror-lines")
|
|
.click()
|
|
.type(forSuccess)
|
|
.get("button.t--open-dropdown-Select-type")
|
|
.first()
|
|
.click({ force: true })
|
|
.selectOnClickOption(forSuccess);
|
|
|
|
cy.wait(2000);
|
|
// For Failure
|
|
cy.get(".code-highlight")
|
|
.children()
|
|
.contains("No action")
|
|
.last()
|
|
.click({ force: true })
|
|
.selectOnClickOption("Show message")
|
|
.get("div.t--property-control-" + endp + " div.CodeMirror-lines")
|
|
.last()
|
|
.click()
|
|
.type(forFailure)
|
|
.get("button.t--open-dropdown-Select-type")
|
|
.last()
|
|
.click({ force: true })
|
|
.selectOnClickOption(forFailure);
|
|
});
|
|
|
|
Cypress.Commands.add("copyWidget", (widget, widgetLocator) => {
|
|
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
|
|
//Copy widget and verify all properties
|
|
cy.get(widgetsPage.propertypaneText)
|
|
.children()
|
|
.last()
|
|
.invoke("text")
|
|
.then((x) => {
|
|
cy.log(x);
|
|
let originalWidget = x.replaceAll("x", "");
|
|
originalWidget = originalWidget.replaceAll(/\u200B/g, "");
|
|
cy.log(originalWidget);
|
|
cy.get(widgetsPage.copyWidget).click({ force: true });
|
|
cy.reload();
|
|
// Wait for the widget to be appear in the DOM and press Ctrl/Cmd + V to paste the button.
|
|
cy.get(widgetLocator).should("be.visible");
|
|
cy.get("body").type(`{${modifierKey}}v`);
|
|
cy.wait(2000);
|
|
cy.openPropertyPaneCopy(widget);
|
|
cy.get(widgetsPage.propertypaneText)
|
|
.children()
|
|
.last()
|
|
.invoke("text")
|
|
.then((y) => {
|
|
cy.log(y);
|
|
let copiedWidget = y.replaceAll("x", "");
|
|
copiedWidget = copiedWidget.replaceAll(/\u200B/g, "");
|
|
cy.log(copiedWidget);
|
|
expect(originalWidget).to.be.equal(copiedWidget);
|
|
});
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("deleteWidget", (widget) => {
|
|
// Delete the button widget
|
|
cy.get(widgetsPage.removeWidget).click({ force: true });
|
|
cy.wait(5000);
|
|
cy.wait("@updateLayout");
|
|
});
|
|
|
|
Cypress.Commands.add("UpdateChartType", (typeOfChart) => {
|
|
// Command to change the chart type if the property pane of the chart widget is opened.
|
|
cy.get(viewWidgetsPage.chartType)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(commonlocators.dropdownmenu)
|
|
.children()
|
|
.contains(typeOfChart)
|
|
.click({ force: true });
|
|
|
|
cy.get(viewWidgetsPage.chartType + " span.cs-text").should(
|
|
"have.text",
|
|
typeOfChart,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("createAndFillApi", (url, parameters) => {
|
|
cy.NavigateToApiEditor();
|
|
cy.get(pages.integrationCreateNew)
|
|
.should("be.visible")
|
|
.click({ force: true });
|
|
cy.testCreateApiButton();
|
|
cy.get("@createNewApi").then((response) => {
|
|
cy.get(ApiEditor.ApiNameField).should("be.visible");
|
|
expect(response.response.body.responseMeta.success).to.eq(true);
|
|
cy.get(ApiEditor.ApiNameField)
|
|
.click()
|
|
.invoke("text")
|
|
.then((text) => {
|
|
const someText = text;
|
|
expect(someText).to.equal(response.response.body.data.name);
|
|
});
|
|
});
|
|
cy.get(apiwidget.editResourceUrl)
|
|
.first()
|
|
.click({ force: true })
|
|
.type(
|
|
url + parameters,
|
|
{ parseSpecialCharSequences: false },
|
|
{ force: true },
|
|
);
|
|
cy.WaitAutoSave();
|
|
cy.get(ApiEditor.formActionButtons).should("be.visible");
|
|
cy.get(ApiEditor.ApiRunBtn).should("not.be.disabled");
|
|
});
|
|
|
|
Cypress.Commands.add("isSelectRow", (index) => {
|
|
cy.get('.tbody .td[data-rowindex="' + index + '"][data-colindex="' + 0 + '"]')
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("readTabledata", (rowNum, colNum) => {
|
|
// const selector = `.t--draggable-tablewidget .e-gridcontent.e-lib.e-droppable td[index=${rowNum}][aria-colindex=${colNum}]`;
|
|
const selector = `.tbody .td[data-rowindex="${rowNum}"][data-colindex="${colNum}"] div`;
|
|
const tabVal = cy.get(selector).invoke("text");
|
|
return tabVal;
|
|
});
|
|
|
|
Cypress.Commands.add("getDate", (date, dateFormate) => {
|
|
const eDate = dayjs()
|
|
.add(date, "days")
|
|
.format(dateFormate);
|
|
return eDate;
|
|
});
|
|
|
|
Cypress.Commands.add("setDate", (date, dateFormate) => {
|
|
const expDate = dayjs()
|
|
.add(date, "days")
|
|
.format(dateFormate);
|
|
const sel = `.DayPicker-Day[aria-label=\"${expDate}\"]`;
|
|
cy.get(sel).click();
|
|
});
|
|
|
|
Cypress.Commands.add("pageNo", (index) => {
|
|
cy.get(".page-item")
|
|
.first()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("pageNoValidate", (index) => {
|
|
const data = '.e-numericcontainer a[index="' + index + '"]';
|
|
const pageVal = cy.get(data);
|
|
return pageVal;
|
|
});
|
|
|
|
Cypress.Commands.add("validateDisableWidget", (widgetCss, disableCss) => {
|
|
cy.get(widgetCss + disableCss).should("exist");
|
|
});
|
|
|
|
Cypress.Commands.add("validateToolbarVisible", (widgetCss, toolbarCss) => {
|
|
cy.get(widgetCss + toolbarCss, { timeout: 10000 }).should("exist");
|
|
});
|
|
|
|
Cypress.Commands.add("validateToolbarHidden", (widgetCss, toolbarCss) => {
|
|
cy.get(widgetCss + toolbarCss, { timeout: 10000 }).should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("validateEnableWidget", (widgetCss, disableCss) => {
|
|
cy.get(widgetCss + disableCss).should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("validateHTMLText", (widgetCss, htmlTag, value) => {
|
|
cy.get(widgetCss + " iframe").then(($iframe) => {
|
|
const $body = $iframe.contents().find("body");
|
|
cy.wrap($body)
|
|
.find(htmlTag)
|
|
.should("have.text", value);
|
|
});
|
|
});
|
|
Cypress.Commands.add("setTinyMceContent", (tinyMceId, content) => {
|
|
cy.window().then((win) => {
|
|
const editor = win.tinymce.editors[tinyMceId];
|
|
editor.setContent(content);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("startRoutesForDatasource", () => {
|
|
cy.server();
|
|
cy.route("PUT", "/api/v1/datasources/*").as("saveDatasource");
|
|
cy.route("POST", "/api/v1/datasources/test").as("testDatasource");
|
|
});
|
|
|
|
Cypress.Commands.add("startServerAndRoutes", () => {
|
|
//To update route with intercept after working on alias wrt wait and alias
|
|
cy.server();
|
|
cy.route("POST", "/api/v1/datasources/test").as("testDatasource");
|
|
cy.route("GET", "/api/v1/applications/new").as("applications");
|
|
cy.route("GET", "/api/v1/users/profile").as("getUser");
|
|
cy.route("GET", "/api/v1/plugins").as("getPlugins");
|
|
cy.route("POST", "/api/v1/logout").as("postLogout");
|
|
|
|
cy.route("GET", "/api/v1/datasources?organizationId=*").as("getDataSources");
|
|
cy.route("GET", "/api/v1/pages/application/*").as("getPagesForCreateApp");
|
|
cy.route("GET", "/api/v1/applications/view/*").as("getPagesForViewApp");
|
|
|
|
cy.route("POST");
|
|
cy.route("GET", "/api/v1/pages/*").as("getPage");
|
|
cy.route("GET", "/api/v1/applications/*/pages/*/edit").as("getAppPageEdit");
|
|
cy.route("GET", "/api/v1/actions*").as("getActions");
|
|
cy.route("GET", "api/v1/providers/categories").as("getCategories");
|
|
cy.route("GET", "api/v1/import/templateCollections").as(
|
|
"getTemplateCollections",
|
|
);
|
|
cy.route("DELETE", "/api/v1/actions/*").as("deleteAPI");
|
|
cy.route("DELETE", "/api/v1/applications/*").as("deleteApp");
|
|
cy.route("DELETE", "/api/v1/actions/*").as("deleteAction");
|
|
cy.route("DELETE", "/api/v1/pages/*").as("deletePage");
|
|
cy.route("POST", "/api/v1/datasources").as("createDatasource");
|
|
cy.route("DELETE", "/api/v1/datasources/*").as("deleteDatasource");
|
|
cy.route("GET", "/api/v1/datasources/*/structure?ignoreCache=*").as(
|
|
"getDatasourceStructure",
|
|
);
|
|
cy.route("PUT", "/api/v1/datasources/datasource-query/*").as(
|
|
"datasourceQuery",
|
|
);
|
|
|
|
cy.route("PUT", "/api/v1/pages/crud-page/*").as("replaceLayoutWithCRUDPage");
|
|
cy.route("POST", "/api/v1/pages/crud-page").as("generateCRUDPage");
|
|
|
|
cy.route("GET", "/api/v1/organizations").as("organizations");
|
|
cy.route("GET", "/api/v1/organizations/*").as("getOrganisation");
|
|
|
|
cy.route("POST", "/api/v1/applications/publish/*").as("publishApp");
|
|
cy.route("PUT", "/api/v1/layouts/*/pages/*").as("updateLayout");
|
|
|
|
cy.route("POST", "/track/*").as("postTrack");
|
|
cy.route("PUT", "/api/v1/actions/executeOnLoad/*").as("setExecuteOnLoad");
|
|
|
|
cy.route("POST", "/api/v1/actions").as("createNewApi");
|
|
cy.route("POST", "/api/v1/import?type=CURL&pageId=*&name=*").as("curlImport");
|
|
cy.route("DELETE", "/api/v1/actions/*").as("deleteAction");
|
|
cy.route("GET", "/api/v1/marketplace/providers?category=*&page=*&size=*").as(
|
|
"get3PProviders",
|
|
);
|
|
cy.route("GET", "/api/v1/marketplace/templates?providerId=*").as(
|
|
"get3PProviderTemplates",
|
|
);
|
|
cy.route("POST", "/api/v1/items/addToPage").as("add3PApiToPage");
|
|
|
|
cy.route("GET", "/api/v1/plugins/*/form").as("getPluginForm");
|
|
cy.route("POST", "/api/v1/datasources").as("createDatasource");
|
|
cy.route("DELETE", "/api/v1/datasources/*").as("deleteDatasource");
|
|
cy.route("DELETE", "/api/v1/applications/*").as("deleteApplication");
|
|
cy.route("POST", "/api/v1/applications?orgId=*").as("createNewApplication");
|
|
cy.route("PUT", "/api/v1/applications/*").as("updateApplication");
|
|
cy.route("PUT", "/api/v1/actions/*").as("saveAction");
|
|
cy.route("PUT", "/api/v1/actions/move").as("moveAction");
|
|
|
|
cy.route("POST", "/api/v1/organizations").as("createOrg");
|
|
cy.route("POST", "api/v1/applications/import/*").as("importNewApplication");
|
|
cy.route("GET", "api/v1/applications/export/*").as("exportApplication");
|
|
cy.route("GET", "/api/v1/organizations/roles?organizationId=*").as(
|
|
"getRoles",
|
|
);
|
|
cy.route("GET", "/api/v1/users/me").as("getUser");
|
|
cy.route("POST", "/api/v1/pages").as("createPage");
|
|
cy.route("POST", "/api/v1/pages/clone/*").as("clonePage");
|
|
cy.route("PUT", "/api/v1/applications/*/changeAccess").as("changeAccess");
|
|
|
|
cy.route("PUT", "/api/v1/organizations/*").as("updateOrganization");
|
|
cy.route("GET", "/api/v1/pages/view/application/*").as("viewApp");
|
|
cy.route("POST", "/api/v1/organizations/*/logo").as("updateLogo");
|
|
cy.route("DELETE", "/api/v1/organizations/*/logo").as("deleteLogo");
|
|
cy.route("POST", "/api/v1/applications/*/fork/*").as("postForkAppOrg");
|
|
cy.route("PUT", "/api/v1/users/leaveOrganization/*").as("leaveOrgApiCall");
|
|
cy.route("DELETE", "api/v1/organizations/*").as("deleteOrgApiCall");
|
|
|
|
cy.route("POST", "/api/v1/comments/threads").as("createNewThread");
|
|
cy.route("POST", "/api/v1/comments?threadId=*").as("createNewComment");
|
|
|
|
cy.route("POST", "api/v1/git/connect/*").as("connectGitRepo");
|
|
cy.route("POST", "api/v1/git/commit/*").as("commit");
|
|
|
|
cy.route("PUT", "api/v1/collections/actions/refactor").as("renameJsAction");
|
|
|
|
cy.route("POST", "/api/v1/collections/actions").as("createNewJSCollection");
|
|
cy.route("DELETE", "/api/v1/collections/actions/*").as("deleteJSCollection");
|
|
cy.route("POST", "/api/v1/pages/crud-page").as("replaceLayoutWithCRUDPage");
|
|
|
|
cy.intercept("POST", "/api/v1/users/super").as("createSuperUser");
|
|
cy.intercept("POST", "/api/v1/actions/execute").as("postExecute");
|
|
cy.intercept("GET", "/api/v1/admin/env").as("getEnvVariables");
|
|
|
|
cy.intercept("PUT", "/api/v1/layouts/refactor").as("updateWidgetName");
|
|
cy.intercept("GET", "/api/v1/organizations/*/members").as("getMembers");
|
|
});
|
|
|
|
Cypress.Commands.add("startErrorRoutes", () => {
|
|
cy.intercept("POST", "/api/v1/actions/execute", { statusCode: 500 }).as(
|
|
"postExecuteError",
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("alertValidate", (text) => {
|
|
cy.get(commonlocators.success)
|
|
.should("be.visible")
|
|
.and("have.text", text);
|
|
});
|
|
|
|
Cypress.Commands.add("ExportVerify", (togglecss, name) => {
|
|
cy.togglebar(togglecss);
|
|
cy.get(".t--draggable-tablewidget button")
|
|
.invoke("attr", "aria-label")
|
|
.should("contain", name);
|
|
cy.togglebarDisable(togglecss);
|
|
});
|
|
|
|
Cypress.Commands.add("getTableDataSelector", (rowNum, colNum) => {
|
|
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div`;
|
|
return selector;
|
|
});
|
|
|
|
Cypress.Commands.add("readTabledataPublish", (rowNum, colNum) => {
|
|
// const selector = `.t--widget-tablewidget .e-gridcontent.e-lib.e-droppable td[index=${rowNum}][aria-colindex=${colNum}]`;
|
|
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div`;
|
|
const tabVal = cy.get(selector).invoke("text");
|
|
return tabVal;
|
|
});
|
|
|
|
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");
|
|
return tabVal;
|
|
});
|
|
|
|
Cypress.Commands.add("scrollTabledataPublish", (rowNum, colNum) => {
|
|
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div`;
|
|
const tabVal = cy
|
|
.get(selector)
|
|
.scrollIntoView()
|
|
.invoke("text");
|
|
return tabVal;
|
|
});
|
|
|
|
Cypress.Commands.add("readTableLinkPublish", (rowNum, colNum) => {
|
|
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div .image-cell-wrapper .image-cell`;
|
|
const bgUrl = cy.get(selector).should("have.css", "background-image");
|
|
return bgUrl;
|
|
});
|
|
|
|
Cypress.Commands.add("assertEvaluatedValuePopup", (expectedType) => {
|
|
cy.get(commonlocators.evaluatedTypeTitle)
|
|
.first()
|
|
.find("span")
|
|
.click();
|
|
cy.get(dynamicInputLocators.evaluatedValue)
|
|
.should("be.visible")
|
|
.find("pre")
|
|
.first()
|
|
.should("have.text", expectedType);
|
|
});
|
|
|
|
Cypress.Commands.add("validateToastMessage", (value) => {
|
|
cy.get(commonlocators.toastMsg).should("have.text", value);
|
|
});
|
|
|
|
Cypress.Commands.add("NavigateToPaginationTab", () => {
|
|
cy.get(ApiEditor.apiTab)
|
|
.contains("Pagination")
|
|
.click();
|
|
cy.xpath(apiwidget.paginationWithUrl).click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("ValidateTableData", (value) => {
|
|
// cy.isSelectRow(0);
|
|
cy.readTabledata("0", "0").then((tabData) => {
|
|
const tableData = tabData;
|
|
expect(tableData).to.equal(value.toString());
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("ValidatePublishTableData", (value) => {
|
|
cy.isSelectRow(0);
|
|
cy.readTabledataPublish("0", "0").then((tabData) => {
|
|
const tableData = tabData;
|
|
expect(tableData).to.equal(value);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("ValidatePaginateResponseUrlData", (runTestCss) => {
|
|
cy.get(".t--entity-name")
|
|
.contains("Api2")
|
|
.click({ force: true });
|
|
cy.NavigateToPaginationTab();
|
|
cy.RunAPI();
|
|
cy.get(ApiEditor.apiPaginationNextTest).click();
|
|
cy.wait("@postExecute");
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(runTestCss).click();
|
|
cy.wait("@postExecute");
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(2000);
|
|
cy.get(ApiEditor.formActionButtons).should("be.visible");
|
|
cy.get(ApiEditor.ApiRunBtn).should("not.be.disabled");
|
|
cy.get(ApiEditor.responseBody)
|
|
.contains("name")
|
|
.siblings("span")
|
|
.invoke("text")
|
|
.then((tabData) => {
|
|
const respBody = tabData.match(/"(.*)"/)[0];
|
|
localStorage.setItem("respBody", respBody);
|
|
cy.log(respBody);
|
|
cy.get(".t--entity-name")
|
|
.contains("Table1")
|
|
.click({ force: true });
|
|
cy.isSelectRow(0);
|
|
cy.readTabledata("0", "1").then((tabData) => {
|
|
const tableData = tabData;
|
|
expect(`\"${tableData}\"`).to.equal(respBody);
|
|
});
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("ValidatePaginationInputData", () => {
|
|
cy.isSelectRow(0);
|
|
cy.readTabledataPublish("0", "1").then((tabData) => {
|
|
const tableData = tabData;
|
|
expect(`\"${tableData}\"`).to.equal(localStorage.getItem("respBody"));
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("callApi", (apiname) => {
|
|
cy.get(commonlocators.callApi)
|
|
.first()
|
|
.click({ force: true });
|
|
cy.get(commonlocators.singleSelectMenuItem)
|
|
.contains("Execute a query")
|
|
.click({ force: true });
|
|
cy.get(commonlocators.selectMenuItem)
|
|
.contains(apiname)
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add("assertPageSave", () => {
|
|
cy.get(commonlocators.saveStatusSuccess, { timeout: 40000 }).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")
|
|
.click({ force: true });
|
|
|
|
cy.validateCodeEditorContent(apiwidget.paramKey, param.key);
|
|
cy.validateCodeEditorContent(apiwidget.paramValue, param.value);
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"validateCodeEditorContent",
|
|
(selector, contentToValidate) => {
|
|
cy.get(selector).within(() => {
|
|
cy.get(".CodeMirror-code").should("have.text", contentToValidate);
|
|
});
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("renameDatasource", (datasourceName) => {
|
|
cy.get(".t--edit-datasource-name").click();
|
|
cy.get(".t--edit-datasource-name input")
|
|
.clear()
|
|
.type(datasourceName, { force: true })
|
|
.should("have.value", datasourceName)
|
|
.blur();
|
|
});
|
|
|
|
Cypress.Commands.add("skipGenerateCRUDPage", () => {
|
|
cy.get(generatePage.buildFromScratchActionCard).click();
|
|
});
|
|
|
|
Cypress.Commands.add("fillAmazonS3DatasourceForm", () => {
|
|
cy.get(datasourceEditor.projectID)
|
|
.clear()
|
|
.type(Cypress.env("S3_ACCESS_KEY"));
|
|
cy.get(datasourceEditor.serviceAccCredential)
|
|
.clear()
|
|
.type(Cypress.env("S3_SECRET_KEY"));
|
|
});
|
|
|
|
Cypress.Commands.add("createAmazonS3Datasource", () => {
|
|
cy.NavigateToDatasourceEditor();
|
|
cy.get(datasourceEditor.AmazonS3).click();
|
|
cy.fillAmazonS3DatasourceForm();
|
|
cy.testSaveDatasource();
|
|
});
|
|
|
|
Cypress.Commands.add("updateMapType", (mapType) => {
|
|
// Command to change the map chart type if the property pane of the map chart widget is opened.
|
|
cy.get(viewWidgetsPage.mapType)
|
|
.last()
|
|
.click({ force: true });
|
|
cy.get(commonlocators.dropdownmenu)
|
|
.children()
|
|
.contains(mapType)
|
|
.click({ force: true });
|
|
|
|
cy.get(viewWidgetsPage.mapType + " span.cs-text").should(
|
|
"have.text",
|
|
mapType,
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("createJSObject", (JSCode) => {
|
|
cy.NavigateToJSEditor();
|
|
cy.wait(1000);
|
|
cy.get(".CodeMirror textarea")
|
|
.first()
|
|
.focus()
|
|
.type("{downarrow}{downarrow}{downarrow}{downarrow} ")
|
|
.type(JSCode);
|
|
cy.wait(1000);
|
|
cy.get(jsEditorLocators.runButton)
|
|
.first()
|
|
.click();
|
|
});
|
|
|
|
Cypress.Commands.add("createSuperUser", () => {
|
|
cy.wait(1000);
|
|
cy.get(welcomePage.getStarted).should("be.visible");
|
|
cy.get(welcomePage.getStarted).should("not.be.disabled");
|
|
cy.get(welcomePage.getStarted).click();
|
|
cy.get(welcomePage.fullName).should("be.visible");
|
|
cy.get(welcomePage.email).should("be.visible");
|
|
cy.get(welcomePage.password).should("be.visible");
|
|
cy.get(welcomePage.verifyPassword).should("be.visible");
|
|
cy.get(welcomePage.roleDropdown).should("be.visible");
|
|
cy.get(welcomePage.useCaseDropdown).should("be.visible");
|
|
cy.get(welcomePage.nextButton).should("be.disabled");
|
|
|
|
cy.get(welcomePage.fullName).type(Cypress.env("USERNAME"));
|
|
cy.get(welcomePage.nextButton).should("be.disabled");
|
|
cy.get(welcomePage.email).type(Cypress.env("USERNAME"));
|
|
cy.get(welcomePage.nextButton).should("be.disabled");
|
|
cy.get(welcomePage.password).type(Cypress.env("PASSWORD"));
|
|
cy.get(welcomePage.nextButton).should("be.disabled");
|
|
cy.get(welcomePage.verifyPassword).type(Cypress.env("PASSWORD"));
|
|
cy.get(welcomePage.nextButton).should("be.disabled");
|
|
cy.get(welcomePage.roleDropdown).click();
|
|
cy.get(welcomePage.roleDropdownOption)
|
|
.eq(1)
|
|
.click();
|
|
cy.get(welcomePage.nextButton).should("be.disabled");
|
|
cy.get(welcomePage.useCaseDropdown).click();
|
|
cy.get(welcomePage.useCaseDropdownOption)
|
|
.eq(1)
|
|
.click();
|
|
cy.get(welcomePage.nextButton).should("not.be.disabled");
|
|
cy.get(welcomePage.nextButton).click();
|
|
cy.get(welcomePage.newsLetter).should("be.visible");
|
|
cy.get(welcomePage.dataCollection).should("be.visible");
|
|
cy.get(welcomePage.dataCollection)
|
|
.trigger("mouseover")
|
|
.click();
|
|
cy.get(welcomePage.newsLetter)
|
|
.trigger("mouseover")
|
|
.click();
|
|
cy.get(welcomePage.createButton).should("be.visible");
|
|
cy.get(welcomePage.createButton).click();
|
|
cy.wait("@createSuperUser").then((interception) => {
|
|
expect(interception.request.body).not.contains(
|
|
"allowCollectingAnonymousData=true",
|
|
);
|
|
expect(interception.request.body).not.contains("signupForNewsletter=true");
|
|
});
|
|
cy.LogOut();
|
|
cy.wait(2000);
|
|
});
|
|
|
|
Cypress.Commands.add("SignupFromAPI", (uname, pword) => {
|
|
cy.request({
|
|
method: "POST",
|
|
url: "api/v1/users",
|
|
headers: {
|
|
"content-type": "application/json",
|
|
},
|
|
followRedirect: false,
|
|
form: true,
|
|
body: {
|
|
name: uname,
|
|
email: uname,
|
|
password: pword,
|
|
},
|
|
}).then((response) => {
|
|
expect(response.status).equal(302);
|
|
cy.log(response.body);
|
|
});
|
|
});
|
|
|
|
//Generate CRUD page methods: <Aishwarya>
|
|
|
|
Cypress.Commands.add("fillMongoDatasourceFormWithURI", () => {
|
|
cy.xpath(datasourceEditor["mongoUriDropdown"])
|
|
.click()
|
|
.wait(500);
|
|
cy.xpath(datasourceEditor["mongoUriYes"])
|
|
.click()
|
|
.wait(500);
|
|
cy.xpath(datasourceEditor["mongoUriInput"]).type(
|
|
datasourceFormData["mongo-uri"],
|
|
);
|
|
});
|
|
|
|
Cypress.Commands.add("startInterceptRoutesForMySQL", () => {
|
|
//All stubbing - updating app id to current app id for Delete app by api call to be successfull:
|
|
|
|
cy.replaceApplicationIdForInterceptPages(
|
|
"cypress/fixtures/mySQL_PUT_replaceLayoutWithCRUD.json",
|
|
);
|
|
|
|
cy.intercept("POST", "/api/v1/datasources/test", {
|
|
fixture: "testAction.json",
|
|
}).as("testDatasource");
|
|
cy.intercept("GET", "/api/v1/datasources/*/structure?ignoreCache=*", {
|
|
fixture: "mySQL_GET_selectTableDropdown.json",
|
|
}).as("getDatasourceStructure");
|
|
cy.intercept("PUT", "/api/v1/pages/crud-page/*", {
|
|
fixture: "mySQL_PUT_replaceLayoutWithCRUD.json",
|
|
}).as("replaceLayoutWithCRUDPage");
|
|
cy.intercept("GET", "/api/v1/actions*", {
|
|
fixture: "mySQL_GET_Actions.json",
|
|
}).as("getActions");
|
|
cy.intercept("POST", "/api/v1/actions/execute", {
|
|
fixture: "mySQL_POST_Execute.json",
|
|
}).as("postExecute");
|
|
cy.intercept("POST", "/api/v1/pages/crud-page", {
|
|
fixture: "mySQL_PUT_replaceLayoutWithCRUD.json",
|
|
}).as("replaceLayoutWithCRUDPage");
|
|
});
|
|
|
|
Cypress.Commands.add("startInterceptRoutesForMongo", () => {
|
|
//All stubbing
|
|
cy.replaceApplicationIdForInterceptPages(
|
|
"cypress/fixtures/mongo_PUT_replaceLayoutWithCRUD.json",
|
|
);
|
|
|
|
cy.intercept("POST", "/api/v1/datasources/test", {
|
|
fixture: "testAction.json",
|
|
}).as("testDatasource");
|
|
cy.intercept("GET", "/api/v1/datasources/*/structure?ignoreCache=*", {
|
|
fixture: "mongo_GET_selectTableDropdown.json",
|
|
}).as("getDatasourceStructure");
|
|
cy.intercept("PUT", "/api/v1/pages/crud-page/*", {
|
|
fixture: "mongo_PUT_replaceLayoutWithCRUD.json",
|
|
}).as("replaceLayoutWithCRUDPage");
|
|
cy.intercept("GET", "/api/v1/actions*", {
|
|
fixture: "mongo_GET_Actions.json",
|
|
}).as("getActions");
|
|
cy.intercept("POST", "/api/v1/actions/execute", {
|
|
fixture: "mongo_POST_Actions.json",
|
|
}).as("postExecute");
|
|
cy.intercept("POST", "/api/v1/pages/crud-page", {
|
|
fixture: "mongo_PUT_replaceLayoutWithCRUD.json",
|
|
}).as("post_replaceLayoutCRUDStub");
|
|
});
|
|
|
|
Cypress.Commands.add("startInterceptRoutesForS3", () => {
|
|
cy.intercept("POST", "/api/v1/datasources/test").as("testDatasource");
|
|
cy.intercept("PUT", "/api/v1/datasources/datasource-query/*").as(
|
|
"put_datasources",
|
|
);
|
|
cy.intercept("GET", "/api/v1/datasources/*/structure?ignoreCache=*").as(
|
|
"getDatasourceStructure",
|
|
);
|
|
cy.intercept("PUT", "/api/v1/pages/crud-page/*").as("put_replaceLayoutCRUD");
|
|
cy.intercept("POST", "/api/v1/pages/crud-page").as("post_replaceLayoutCRUD");
|
|
cy.intercept("GET", "/api/v1/actions*").as("get_Actions");
|
|
cy.intercept("POST", "/api/v1/actions/execute").as("post_Execute");
|
|
});
|
|
|
|
Cypress.Commands.add("replaceApplicationIdForInterceptPages", (fixtureFile) => {
|
|
let currentAppId, currentURL;
|
|
cy.readFile(fixtureFile, (err, data) => {
|
|
if (err) {
|
|
return console.error(err);
|
|
}
|
|
}).then((data) => {
|
|
cy.url().then((url) => {
|
|
currentURL = url;
|
|
const myRegexp = /applications(.*)/;
|
|
const match = myRegexp.exec(currentURL);
|
|
cy.log(currentURL + "currentURL from intercept is");
|
|
currentAppId = match ? match[1].split("/")[1] : null;
|
|
data.data.page.applicationId = currentAppId;
|
|
cy.writeFile(fixtureFile, JSON.stringify(data));
|
|
});
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"paste",
|
|
{ prevSubject: true },
|
|
(selector, pastePayload) => {
|
|
cy.wrap(selector).then(($destination) => {
|
|
const pasteEvent = Object.assign(
|
|
new Event("paste", { bubbles: true, cancelable: true }),
|
|
{
|
|
clipboardData: {
|
|
getData: () => pastePayload,
|
|
},
|
|
},
|
|
);
|
|
$destination[0].dispatchEvent(pasteEvent);
|
|
});
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("clearPropertyValue", (value) => {
|
|
cy.get(".CodeMirror textarea")
|
|
.eq(value)
|
|
.focus({ force: true })
|
|
.type("{uparrow}", { force: true })
|
|
.type("{ctrl}{shift}{downarrow}", { force: true });
|
|
cy.focused().then(($cm) => {
|
|
if ($cm.contents !== "") {
|
|
cy.log("The field is empty");
|
|
cy.get(".CodeMirror textarea")
|
|
.eq(value)
|
|
.clear({
|
|
force: true,
|
|
});
|
|
}
|
|
});
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(1000);
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"validateNSelectDropdown",
|
|
(ddTitle, currentValue, newValue) => {
|
|
let toChange = false;
|
|
cy.xpath('//span[contains(text(),"' + currentValue + '")]').should(
|
|
"exist",
|
|
currentValue + " dropdown value not present",
|
|
);
|
|
if (newValue) toChange = true;
|
|
if (toChange) {
|
|
cy.xpath(
|
|
"//p[text()='" +
|
|
ddTitle +
|
|
"']/parent::label/following-sibling::div/div/div",
|
|
).click(); //to expand the dropdown
|
|
cy.xpath('//span[contains(text(),"' + newValue + '")]')
|
|
.last()
|
|
.click({ force: true }); //to select the new value
|
|
}
|
|
},
|
|
);
|
|
|
|
Cypress.Commands.add("typeValueNValidate", (valueToType, fieldName = "") => {
|
|
if (fieldName) {
|
|
cy.xpath(
|
|
"//p[text()='" + fieldName + "']/parent::label/following-sibling::div",
|
|
).then(($field) => {
|
|
cy.updateCodeInput($field, valueToType);
|
|
});
|
|
} else {
|
|
cy.xpath("//div[@class='CodeEditorTarget']").then(($field) => {
|
|
cy.updateCodeInput($field, valueToType);
|
|
});
|
|
}
|
|
cy.EvaluateCurrentValue(valueToType);
|
|
// cy.xpath("//p[text()='" + fieldName + "']/following-sibling::div//div[@class='CodeMirror-code']//span/span").should((fieldValue) => {
|
|
// textF = fieldValue.innerText
|
|
// fieldValue.innerText = ""
|
|
// }).then(() => {
|
|
// cy.log("current field value is : '" + textF + "'")
|
|
// })
|
|
});
|
|
|
|
Cypress.Commands.add("clickButton", (btnVisibleText) => {
|
|
cy.xpath("//span[text()='" + btnVisibleText + "']/parent::button")
|
|
.first()
|
|
.scrollIntoView()
|
|
.click({ force: true });
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"actionContextMenuByEntityName",
|
|
(entityNameinLeftSidebar, action = "Delete") => {
|
|
cy.wait(2000);
|
|
cy.get(
|
|
commonlocators.entitySearchResult
|
|
.concat(entityNameinLeftSidebar)
|
|
.concat("')"),
|
|
)
|
|
.parents(commonlocators.entityItem)
|
|
.first()
|
|
.trigger("mouseover")
|
|
.find(commonlocators.entityContextMenu)
|
|
.last()
|
|
.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()='" +
|
|
entityNameinLeftSidebar +
|
|
"']",
|
|
)
|
|
.last()
|
|
.click({ force: true })
|
|
.wait(2000);
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
"EvaluatFieldValue",
|
|
(fieldName = "", currentValue = "") => {
|
|
let toValidate = false;
|
|
if (currentValue) toValidate = true;
|
|
if (fieldName) {
|
|
cy.xpath(
|
|
"//p[text()='" +
|
|
fieldName +
|
|
"']/parent::label/following-sibling::div//div[@class='CodeMirror-code']",
|
|
).click();
|
|
} else {
|
|
cy.xpath("//div[@class='CodeMirror-code']").click();
|
|
}
|
|
cy.wait(3000); //Increasing wait time to evaluate non-undefined values
|
|
const val = cy
|
|
.get(commonlocators.evaluatedCurrentValue)
|
|
.first()
|
|
.should("be.visible")
|
|
.invoke("text");
|
|
if (toValidate) expect(val).to.eq(currentValue);
|
|
return val;
|
|
},
|
|
);
|
|
|
|
cy.all = function(...commands) {
|
|
const _ = Cypress._;
|
|
const chain = cy.wrap(null, { log: false });
|
|
const stopCommand = _.find(cy.queue.commands, {
|
|
attributes: { chainerId: chain.chainerId },
|
|
});
|
|
const startCommand = _.find(cy.queue.commands, {
|
|
attributes: { chainerId: commands[0].chainerId },
|
|
});
|
|
const p = chain.then(() => {
|
|
return _(commands)
|
|
.map((cmd) => {
|
|
return cmd[chainStart]
|
|
? cmd[chainStart].attributes
|
|
: _.find(cy.queue.commands, {
|
|
attributes: { chainerId: cmd.chainerId },
|
|
}).attributes;
|
|
})
|
|
.concat(stopCommand.attributes)
|
|
.slice(1)
|
|
.flatMap((cmd) => {
|
|
return cmd.prev.get("subject");
|
|
})
|
|
.value();
|
|
});
|
|
p[chainStart] = startCommand;
|
|
return p;
|
|
};
|
|
|
|
Cypress.Commands.add("renameWithInPane", (renameVal) => {
|
|
cy.get(apiwidget.ApiName).click({ force: true });
|
|
cy.get(apiwidget.apiTxt)
|
|
.clear()
|
|
.type(renameVal, { force: true })
|
|
.should("have.value", renameVal)
|
|
.blur();
|
|
});
|
|
|
|
Cypress.Commands.add("getEntityName", () => {
|
|
let entityName = cy.get(apiwidget.ApiName).invoke("text");
|
|
return entityName;
|
|
});
|
|
|
|
Cypress.Commands.add("VerifyErrorMsgAbsence", (errorMsgToVerifyAbsence) => {
|
|
// Give this element 10 seconds to appear
|
|
//cy.wait(10000)
|
|
cy.xpath(
|
|
"//div[@class='Toastify']//span[contains(text(),'" +
|
|
errorMsgToVerifyAbsence +
|
|
"')]",
|
|
{ timeout: 0 },
|
|
).should("not.exist");
|
|
});
|
|
|
|
Cypress.Commands.add("setQueryTimeout", (timeout) => {
|
|
cy.get(queryLocators.settings).click();
|
|
cy.xpath(queryLocators.queryTimeout)
|
|
.clear()
|
|
.type(timeout);
|
|
|
|
cy.get(queryLocators.query).click();
|
|
});
|
|
|
|
//Not Used!
|
|
Cypress.Commands.add("VerifyNoDataDisplayAbsence", () => {
|
|
cy.xpath("//div[text()='No data to display']", { timeout: 0 }).should(
|
|
"not.exist",
|
|
);
|
|
});
|
|
|
|
// Cypress.Commands.add('isNotInViewport', element => {
|
|
// cy.xpath(element).then($el => {
|
|
// const bottom = Cypress.$(cy.state('window')).height()
|
|
// const rect = $el[0].getBoundingClientRect()
|
|
|
|
// expect(rect.top).to.be.greaterThan(bottom)
|
|
// expect(rect.bottom).to.be.greaterThan(bottom)
|
|
// expect(rect.top).to.be.greaterThan(bottom)
|
|
// expect(rect.bottom).to.be.greaterThan(bottom)
|
|
// })
|
|
// })
|
|
|
|
Cypress.Commands.add("isNotInViewport", (element) => {
|
|
cy.xpath(element).should(($el) => {
|
|
const bottom = Cypress.$(cy.state("window")).height();
|
|
const right = Cypress.$(cy.state("window")).width();
|
|
const rect = $el[0].getBoundingClientRect();
|
|
|
|
expect(rect).to.satisfy(
|
|
(rect) =>
|
|
rect.top < 0 || rect.top > bottom || rect.left < 0 || rect.left > right,
|
|
);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("isInViewport", (element) => {
|
|
cy.xpath(element).then(($el) => {
|
|
const bottom = Cypress.$(cy.state("window")).height();
|
|
const rect = $el[0].getBoundingClientRect();
|
|
|
|
expect(rect.top).not.to.be.greaterThan(bottom);
|
|
expect(rect.bottom).not.to.be.greaterThan(bottom);
|
|
expect(rect.top).not.to.be.greaterThan(bottom);
|
|
expect(rect.bottom).not.to.be.greaterThan(bottom);
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add("validateEvaluatedValue", (value) => {
|
|
cy.get(".t-property-evaluated-value").should("contain", value);
|
|
});
|
|
|
|
// Cypress.Commands.overwrite("type", (originalFn, element, text, options) => {
|
|
// const clearedText = '{selectall}{backspace}'+`${text}`;
|
|
|
|
// return originalFn(element, clearedText, options);
|
|
// });
|
|
addMatchImageSnapshotCommand({
|
|
failureThreshold: 0.1, // threshold for entire image
|
|
failureThresholdType: "percent",
|
|
});
|