ToolJet/cypress-tests/cypress/e2e/workspace/workspaceConstants.cy.js

340 lines
14 KiB
JavaScript

import { commonSelectors, commonWidgetSelector } from "Selectors/common";
import { fake } from "Fixtures/fake";
import { workspaceConstantsSelectors } from "Selectors/workspaceConstants";
import { workspaceConstantsText } from "Texts/workspaceConstants";
import { commonText, commonWidgetText } from "Texts/common";
import * as common from "Support/utils/common";
import {
contantsNameValidation,
AddNewconstants,
} from "Support/utils/workspaceConstants";
import { buttonText } from "Texts/button";
import {
verifyAndModifyParameter,
editAndVerifyWidgetName,
} from "Support/utils/commonWidget";
import { verifypreview } from "Support/utils/dataSource";
import {
selectQueryFromLandingPage,
query,
addInputOnQueryField,
} from "Support/utils/queries";
const data = {};
data.constName = fake.firstName.toLowerCase().replaceAll("[^A-Za-z]", "");
data.newConstvalue = `New ${data.constName}`;
data.constantsName = fake.firstName.toLowerCase().replaceAll("[^A-Za-z]", "");
data.constantsValue = "dJ_8Q~BcaMPd";
data.appName = `${fake.companyName}-App`;
data.slug = data.appName.toLowerCase().replace(/\s+/g, "-");
describe("Workspace constants", () => {
const envVar = Cypress.env("environment");
beforeEach(() => {
cy.appUILogin();
cy.intercept("GET", "/api/apps?page=1&folder=&searchKey=").as("homePage");
});
it("Verify workspace constants UI and CRUD operations", () => {
cy.get(commonSelectors.workspaceSettingsIcon).click();
cy.get(commonSelectors.workspaceConstantsOption)
.should(($el) => {
expect($el.contents().first().text().trim()).to.eq(
"Workspace constants"
);
})
.click();
cy.get(commonSelectors.breadcrumbTitle).should(($el) => {
expect($el.contents().first().text().trim()).to.eq("Workspace settings");
});
cy.get(commonSelectors.breadcrumbPageTitle).verifyVisibleElement(
"have.text",
" Workspace constants"
);
cy.get(
workspaceConstantsSelectors.workspaceConstantsHelperText
).verifyVisibleElement(
"have.text",
workspaceConstantsText.workspaceConstantsHelperText
);
cy.get(commonSelectors.documentationLink).verifyVisibleElement(
"have.text",
commonText.documentationLink
);
cy.get("body").then(($body) => {
if ($body.find(workspaceConstantsSelectors.emptyStateImage).length > 0) {
cy.get(workspaceConstantsSelectors.emptyStateImage).should(
"be.visible"
);
cy.get(
workspaceConstantsSelectors.emptyStateHeader
).verifyVisibleElement(
"have.text",
workspaceConstantsText.emptyStateHeader
);
cy.get(workspaceConstantsSelectors.emptyStateText).verifyVisibleElement(
"have.text",
workspaceConstantsText.emptyStateText
);
cy.get(
workspaceConstantsSelectors.addNewConstantButton
).verifyVisibleElement(
"have.text",
workspaceConstantsText.addNewConstantButton
);
}
});
cy.get(workspaceConstantsSelectors.addNewConstantButton).click();
cy.get(workspaceConstantsSelectors.contantFormTitle).verifyVisibleElement(
"have.text",
workspaceConstantsText.addConstatntText
);
cy.get(commonSelectors.nameLabel).verifyVisibleElement("have.text", "Name");
cy.get(commonSelectors.nameInputField)
.invoke("attr", "placeholder")
.should("eq", "Enter Constant Name");
cy.get(commonSelectors.nameInputField).should("be.visible");
cy.get(commonSelectors.valueLabel).verifyVisibleElement(
"have.text",
"Value"
);
cy.get(commonSelectors.valueInputField)
.invoke("attr", "placeholder")
.should("eq", "Enter Value");
cy.get(commonSelectors.valueInputField).should("be.visible");
cy.get(commonSelectors.cancelButton).verifyVisibleElement(
"have.text",
"Cancel"
);
cy.get(workspaceConstantsSelectors.addConstantButton).verifyVisibleElement(
"have.text",
"Add constant"
);
cy.get(workspaceConstantsSelectors.addConstantButton).should("be.disabled");
contantsNameValidation(" ", commonText.constantsNameError);
contantsNameValidation("9", commonText.constantsNameError);
contantsNameValidation("%", commonText.constantsNameError);
contantsNameValidation(
"ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`a",
"Maximum length has been reached"
);
contantsNameValidation(
"ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`afgg",
"Constant name should be between 1 and 32 characters"
);
cy.clearAndType(commonSelectors.valueInputField, " ");
cy.get(commonSelectors.valueErrorText).verifyVisibleElement(
"have.text",
commonText.constantsValueError
);
cy.get(workspaceConstantsSelectors.addConstantButton).should("be.disabled");
cy.get(commonSelectors.cancelButton).click();
cy.get(workspaceConstantsSelectors.addNewConstantButton).click();
cy.clearAndType(commonSelectors.nameInputField, data.constName);
cy.clearAndType(commonSelectors.valueInputField, data.constName);
cy.get(workspaceConstantsSelectors.addConstantButton).should("be.enabled");
cy.get(commonSelectors.cancelButton).click();
cy.get(workspaceConstantsSelectors.constantName(data.constName)).should(
"not.exist"
);
cy.get(workspaceConstantsSelectors.addNewConstantButton).click();
cy.clearAndType(commonSelectors.nameInputField, data.constName);
cy.clearAndType(commonSelectors.valueInputField, data.constName);
cy.get(workspaceConstantsSelectors.addConstantButton).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
workspaceConstantsText.constantCreatedToast
);
cy.get(workspaceConstantsSelectors.addNewConstantButton).click();
contantsNameValidation(
data.constName,
"Constant with this name already exists in Production environment"
);
cy.get(commonSelectors.cancelButton).click();
cy.get(workspaceConstantsSelectors.envName).verifyVisibleElement(
"have.text",
"Production"
);
cy.get(
workspaceConstantsSelectors.addNewConstantButton
).verifyVisibleElement("have.text", "Create new constant");
cy.get(
workspaceConstantsSelectors.constantsTableNameHeader
).verifyVisibleElement("have.text", "Name");
cy.get(
workspaceConstantsSelectors.constantsTableValueHeader
).verifyVisibleElement("have.text", "Value");
cy.get(
workspaceConstantsSelectors.constantName(data.constName)
).verifyVisibleElement("have.text", data.constName);
cy.get(
workspaceConstantsSelectors.constantValue(data.constName)
).verifyVisibleElement("have.text", data.constName);
cy.get(
workspaceConstantsSelectors.constEditButton(data.constName)
).verifyVisibleElement("have.text", "Edit");
cy.get(
workspaceConstantsSelectors.constDeleteButton(data.constName)
).verifyVisibleElement("have.text", "Delete");
cy.get(commonSelectors.pagination).should("be.visible");
cy.get(workspaceConstantsSelectors.constEditButton(data.constName)).click();
cy.get(workspaceConstantsSelectors.contantFormTitle).verifyVisibleElement(
"have.text",
"Update constant in production "
);
cy.get(commonSelectors.nameLabel).verifyVisibleElement("have.text", "Name");
cy.get(commonSelectors.nameInputField).should("have.value", data.constName);
cy.get(commonSelectors.nameInputField)
.should("be.visible")
.and("be.disabled");
cy.get(commonSelectors.valueLabel).verifyVisibleElement(
"have.text",
"Value"
);
cy.get(commonSelectors.valueInputField)
.should("be.visible")
.and("have.value", data.constName);
cy.get(commonSelectors.cancelButton).verifyVisibleElement(
"have.text",
"Cancel"
);
cy.get(workspaceConstantsSelectors.addConstantButton).verifyVisibleElement(
"have.text",
"Update"
);
cy.get(workspaceConstantsSelectors.addConstantButton).should("be.disabled");
cy.clearAndType(commonSelectors.valueInputField, data.newConstvalue);
cy.get(workspaceConstantsSelectors.addConstantButton).should("be.enabled");
cy.get(commonSelectors.cancelButton).click();
cy.get(
workspaceConstantsSelectors.constantValue(data.constName)
).verifyVisibleElement("have.text", data.constName);
cy.get(workspaceConstantsSelectors.constEditButton(data.constName)).click();
cy.clearAndType(commonSelectors.valueInputField, data.newConstvalue);
cy.get(workspaceConstantsSelectors.addConstantButton).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
"Constant updated successfully"
);
cy.get(
workspaceConstantsSelectors.constantValue(data.constName)
).verifyVisibleElement("have.text", data.newConstvalue);
cy.get(
workspaceConstantsSelectors.constDeleteButton(data.constName)
).click();
cy.get(commonSelectors.modalMessage).verifyVisibleElement(
"have.text",
`Are you sure you want to delete ${data.constName} from production?`
);
cy.get(commonSelectors.cancelButton).verifyVisibleElement(
"have.text",
"Cancel"
);
cy.get(commonSelectors.yesButton).verifyVisibleElement("have.text", "Yes");
cy.get(commonSelectors.cancelButton).click();
cy.get(
workspaceConstantsSelectors.constantValue(data.constName)
).verifyVisibleElement("have.text", data.newConstvalue);
cy.get(
workspaceConstantsSelectors.constDeleteButton(data.constName)
).click();
cy.get(commonSelectors.yesButton).click();
cy.get(workspaceConstantsSelectors.constantValue(data.constName)).should(
"not.exist"
);
cy.verifyToastMessage(
commonSelectors.toastMessage,
"Constant deleted successfully"
);
});
it("should verify the constants resolving value on components and query", () => {
common.navigateToworkspaceConstants();
AddNewconstants(data.constantsName, data.constantsValue);
cy.get(
workspaceConstantsSelectors.constantName(data.constantsName)
).verifyVisibleElement("have.text", data.constantsName);
cy.get(
workspaceConstantsSelectors.constantValue(data.constantsName)
).verifyVisibleElement("have.text", data.constantsValue);
cy.get(commonSelectors.homePageLogo).click();
cy.wait("@homePage");
cy.createApp();
cy.renameApp(data.appName);
selectQueryFromLandingPage("runjs", "JavaScript");
addInputOnQueryField("runjs", `return constants.${data.constantsName}`);
query("preview");
verifypreview("raw", "dJ_8Q~BcaMPd");
cy.dragAndDropWidget("Text", 550, 350);
editAndVerifyWidgetName(data.constantsName);
cy.waitForAutoSave();
verifyAndModifyParameter("Text", `{{constants.${data.constantsName}`);
cy.forceClickOnCanvas();
cy.waitForAutoSave();
common.pinInspector();
cy.get(commonWidgetSelector.sidebarinspector).click();
cy.get(commonWidgetSelector.inspectorNodeComponents).click();
cy.get(commonWidgetSelector.nodeComponent(data.constantsName)).click();
cy.get('[data-cy="inspector-node-text"] > .mx-2').verifyVisibleElement(
"have.text",
`"dJ_8Q~BcaMPd"`
);
cy.get('[data-cy="inspector-node-constants"] > .node-key').click();
cy.get(`[data-cy="inspector-node-${data.constantsName}"] > .node-key`)
.eq(1)
.verifyVisibleElement("have.text", data.constantsName);
cy.get(
`[data-cy="inspector-node-${data.constantsName}"] > .mx-2`
).verifyVisibleElement("have.text", `"dJ_8Q~BcaMPd"`);
cy.get('[data-cy="button-release"]').click();
cy.get('[data-cy="yes-button"]').click();
cy.verifyToastMessage(commonSelectors.toastMessage, "Version v1 released");
cy.get(commonWidgetSelector.shareAppButton).click();
cy.clearAndType(commonWidgetSelector.appNameSlugInput, `${data.slug}`);
cy.get(commonWidgetSelector.modalCloseButton).click();
cy.forceClickOnCanvas();
cy.waitForAutoSave();
cy.openInCurrentTab(commonWidgetSelector.previewButton);
cy.wait(4000);
cy.get(
commonWidgetSelector.draggableWidget(data.constantsName)
).verifyVisibleElement("have.text", "dJ_8Q~BcaMPd");
cy.get('[data-cy="viewer-page-logo"]').click();
cy.wait("@homePage");
if (envVar === "Community") {
cy.visit(`/applications/${data.slug}`);
cy.wait(4000);
cy.get(
commonWidgetSelector.draggableWidget(data.constantsName)
).verifyVisibleElement("have.text", "dJ_8Q~BcaMPd");
}
});
});