mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-05 14:28:42 +00:00
* init textinput revamp * updated styles panel * bugfix * updates * fix :: accordion * fix :: styling * add box shadow , additional property,tooltip * fix conditional render for styles * feat :: fixed order of each property and styles * feat :: styling input * bugfix * feat :: add option to add icon * add option to add icon * adding option to toggle visibility * updated password input with new design * chnaging component location * bugfix * style fixes * fix :: added loader * updated :: few detailing * few bugfixes * fix :: for form widget label * fixes * added option to add icon color * including label field for password input * fix for label * fix * test fix backward compatibility for height * updates * revert * adding key for distinguishing older and newer widgets * testing * test * test * update * update * migration testing * limit vertical resizing in textinput * testing * throw test * test * adding check for label length * fixing edge cases * removing resize * backward compatibility height * backward compatibility * number input review fixes * added exposed items * fixing csa * ui fixes * fix height compatibility * feat :: csa for all inputs and exposed variables * backward compatibility fixes and validation fixes * fixes :: textinput positioning of loader and icon * fix :: password input * cleanup and fixes * fixes * cleanup * fixes * review fixes * review fixes * typo fix * fix padding * review fixes styles component panel * fix naming * fix padding * fix :: icons position * updates * cleanup * updates events , csa * backward compatibility * clean * feat :: change validation from properties * ui fixes * icon name * removed 'px' text from tooltip * fixes placeholder * few updates :: removing label in form * ui in form * update :: number input validation behaviour * testing fixes * added side handlers * removing unwanted fx * disabling fx for padding field * ordering change * fix * label issue + restricted side handler * fix :: box shadow bug * on change event doesnt propagate exposed vars correctly * adding debounce for slider value change * fix :: for modal ooen bug during onfocus event * test slider * Add common utils * Modify helpers * Add text input spec * Add utils for field validation * Minor spec updates * Fix for password basic automation cases --------- Co-authored-by: stepinfwd <[email protected]>
339 lines
11 KiB
JavaScript
339 lines
11 KiB
JavaScript
import { fake } from "Fixtures/fake";
|
|
import { commonSelectors, commonWidgetSelector } from "Selectors/common";
|
|
import { commonWidgetText } from "Texts/common";
|
|
import { numberInputText } from "Texts/numberInput";
|
|
|
|
import {
|
|
addTextWidgetToVerifyValue,
|
|
editAndVerifyWidgetName,
|
|
fillBoxShadowParams,
|
|
openAccordion,
|
|
openEditorSidebar,
|
|
randomNumber,
|
|
selectColourFromColourPicker,
|
|
verifyAndModifyParameter,
|
|
verifyBoxShadowCss,
|
|
verifyComponentValueFromInspector,
|
|
verifyLayout,
|
|
verifyPropertiesGeneralAccordion,
|
|
verifyStylesGeneralAccordion,
|
|
verifyTooltip,
|
|
} from "Support/utils/commonWidget";
|
|
import {
|
|
addAllInputFieldColors,
|
|
addAndVerifyAdditionalActions,
|
|
addValidations,
|
|
verifyInputFieldColors,
|
|
} from "Support/utils/editor/inputFieldUtils";
|
|
|
|
import {
|
|
addDefaultEventHandler,
|
|
closeAccordions,
|
|
} from "Support/utils/commonWidget";
|
|
import { verifyControlComponentAction } from "Support/utils/textInput";
|
|
import { widgetValue } from "Texts/common";
|
|
|
|
describe("Number Input", () => {
|
|
beforeEach(() => {
|
|
cy.apiLogin();
|
|
cy.apiCreateApp(`${fake.companyName}-numberInput-App`);
|
|
cy.openApp();
|
|
cy.dragAndDropWidget("Number Input");
|
|
});
|
|
afterEach(() => {
|
|
cy.apiDeleteApp();
|
|
});
|
|
|
|
it.only("should verify the properties of the text input widget", () => {
|
|
const data = {};
|
|
data.widgetName = fake.widgetName;
|
|
data.tooltipText = fake.randomSentence;
|
|
data.minimumLength = randomNumber(1, 4);
|
|
data.maximumLength = randomNumber(8, 10);
|
|
data.customText = randomNumber(12);
|
|
data.customNumber = randomNumber(12);
|
|
|
|
openEditorSidebar(numberInputText.defaultWidgetName);
|
|
closeAccordions([
|
|
"Properties",
|
|
"Validation",
|
|
"Additional Actions",
|
|
"Devices",
|
|
"Events",
|
|
]);
|
|
editAndVerifyWidgetName(data.widgetName, [
|
|
"Properties",
|
|
"Validation",
|
|
"Additional Actions",
|
|
"Devices",
|
|
"Events",
|
|
]);
|
|
openAccordion(commonWidgetText.accordionProperties, [
|
|
"Properties",
|
|
"Validation",
|
|
"Additional Actions",
|
|
"Devices",
|
|
"Events",
|
|
]);
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.labelDefaultValue,
|
|
data.customText
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(data.widgetName)
|
|
).verifyVisibleElement("have.value", data.customText);
|
|
|
|
verifyComponentValueFromInspector(data.widgetName, data.customText);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).clear();
|
|
|
|
data.customText = fake.randomSentence;
|
|
openEditorSidebar(data.widgetName);
|
|
openAccordion(commonWidgetText.accordionProperties, [
|
|
"Properties",
|
|
"Validation",
|
|
"Additional Actions",
|
|
"Devices",
|
|
"Events",
|
|
]);
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.labelPlaceHolder,
|
|
data.customText
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(commonWidgetSelector.draggableWidget(data.widgetName))
|
|
.invoke("attr", "placeholder")
|
|
.should("contain", data.customText);
|
|
|
|
openEditorSidebar(data.widgetName);
|
|
openAccordion(commonWidgetText.accordionEvents, ["Validation", "Devices"]);
|
|
addDefaultEventHandler(widgetValue(data.widgetName));
|
|
cy.get(commonWidgetSelector.eventSelection).type("On Enter Pressed{Enter}");
|
|
cy.log("---------------------");
|
|
|
|
cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).type(
|
|
`${data.customNumber}{Enter}`
|
|
);
|
|
cy.verifyToastMessage(commonSelectors.toastMessage, data.customNumber);
|
|
cy.forceClickOnCanvas();
|
|
|
|
// cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).clear();
|
|
|
|
addValidations(data.widgetName, data, "Min value", "Max value");
|
|
|
|
cy.clearAndType(
|
|
commonWidgetSelector.draggableWidget(data.widgetName),
|
|
data.customText
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(
|
|
commonWidgetSelector.validationFeedbackMessage(data.widgetName)
|
|
).verifyVisibleElement("have.text", commonWidgetText.regexValidationError);
|
|
|
|
cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).clear();
|
|
cy.get(
|
|
commonWidgetSelector.parameterInputField(commonWidgetText.labelRegex)
|
|
).clearCodeMirror();
|
|
|
|
cy.forceClickOnCanvas();
|
|
cy.get(
|
|
commonWidgetSelector.validationFeedbackMessage(data.widgetName)
|
|
).verifyVisibleElement(
|
|
"have.text",
|
|
commonWidgetText.minLengthValidationError(data.minimumLength)
|
|
);
|
|
|
|
cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).clear();
|
|
cy.get(
|
|
commonWidgetSelector.parameterInputField(commonWidgetText.labelMinLength)
|
|
).clearCodeMirror();
|
|
|
|
cy.forceClickOnCanvas();
|
|
cy.clearAndType(
|
|
commonWidgetSelector.draggableWidget(data.widgetName),
|
|
data.customText
|
|
);
|
|
cy.get(
|
|
commonWidgetSelector.validationFeedbackMessage(data.widgetName)
|
|
).verifyVisibleElement(
|
|
"have.text",
|
|
commonWidgetText.maxLengthValidationError(data.maximumLength)
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).clear();
|
|
cy.get(
|
|
commonWidgetSelector.validationFeedbackMessage(data.widgetName)
|
|
).verifyVisibleElement("have.text", data.customText);
|
|
|
|
cy.get(
|
|
commonWidgetSelector.accordion(commonWidgetText.accordionProperties)
|
|
).click();
|
|
cy.get(
|
|
commonWidgetSelector.accordion(commonWidgetText.accordionValidation)
|
|
).click();
|
|
addAndVerifyAdditionalActions(data.widgetName, data.tooltipText);
|
|
|
|
openEditorSidebar(data.widgetName);
|
|
cy.get(
|
|
commonWidgetSelector.accordion(commonWidgetText.accordionProperties)
|
|
).click();
|
|
cy.get(
|
|
commonWidgetSelector.accordion(commonWidgetText.accordionValidation)
|
|
).click();
|
|
verifyLayout(data.widgetName, "Devices");
|
|
|
|
cy.get(commonWidgetSelector.changeLayoutToDesktopButton).click();
|
|
cy.get(
|
|
commonWidgetSelector.parameterTogglebutton(
|
|
commonWidgetText.parameterShowOnDesktop
|
|
)
|
|
).click();
|
|
|
|
cy.get(commonWidgetSelector.widgetDocumentationLink).should(
|
|
"have.text",
|
|
numberInputText.textInputDocumentationLink
|
|
);
|
|
data.customText = fake.firstName;
|
|
verifyControlComponentAction(data.widgetName, data.customText);
|
|
});
|
|
it("should verify the styles of the text input widget", () => {
|
|
const data = {};
|
|
data.appName = `${fake.companyName}-App`;
|
|
data.colourHex = fake.randomRgbaHex;
|
|
data.boxShadowColor = fake.randomRgba;
|
|
data.boxShadowParam = fake.boxShadowParam;
|
|
data.bgColor = fake.randomRgba;
|
|
data.borderColor = fake.randomRgba;
|
|
data.textColor = fake.randomRgba;
|
|
data.errorTextColor = fake.randomRgba;
|
|
data.iconColor = fake.randomRgba;
|
|
|
|
openEditorSidebar(numberInputText.defaultWidgetName);
|
|
cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click();
|
|
addAllInputFieldColors(data);
|
|
|
|
cy.clearAndType('[data-cy="border-radius-input"]', "20");
|
|
cy.get('[data-cy="icon-visibility-button"]').click();
|
|
|
|
cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click();
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName)
|
|
).should("have.css", "border-radius", "20px");
|
|
|
|
verifyInputFieldColors("textinput1", data);
|
|
|
|
verifyStylesGeneralAccordion(
|
|
numberInputText.defaultWidgetName,
|
|
data.boxShadowParam,
|
|
data.colourHex,
|
|
data.boxShadowColor,
|
|
4
|
|
);
|
|
});
|
|
|
|
it("should verify the app preview", () => {
|
|
const data = {};
|
|
data.appName = `${fake.companyName}-App`;
|
|
data.tooltipText = fake.randomSentence;
|
|
data.colourHex = fake.randomRgbaHex;
|
|
data.boxShadowColor = fake.randomRgba;
|
|
data.boxShadowParam = fake.boxShadowParam;
|
|
data.randomNumber = randomNumber(10, 99);
|
|
data.minimumvalue = randomNumber(5, 10);
|
|
data.maximumValue = randomNumber(90, 99);
|
|
|
|
openEditorSidebar(numberInputText.defaultWidgetName);
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.labelDefaultValue,
|
|
data.randomNumber
|
|
);
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.labelMinimumValue,
|
|
`${data.minimumvalue}`
|
|
);
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.labelMaximumValue,
|
|
`${data.maximumValue}`
|
|
);
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.labelPlaceHolder,
|
|
data.randomNumber
|
|
);
|
|
|
|
verifyPropertiesGeneralAccordion(
|
|
numberInputText.defaultWidgetName,
|
|
data.tooltipText
|
|
);
|
|
|
|
openEditorSidebar(numberInputText.defaultWidgetName);
|
|
cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click();
|
|
verifyAndModifyParameter(
|
|
commonWidgetText.parameterBorderRadius,
|
|
commonWidgetText.borderRadiusInput
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
|
|
openEditorSidebar(numberInputText.defaultWidgetName);
|
|
cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click();
|
|
openAccordion(commonWidgetText.accordionGenaral, [], 1);
|
|
cy.get(commonWidgetSelector.boxShadowColorPicker).click();
|
|
|
|
fillBoxShadowParams(
|
|
commonWidgetSelector.boxShadowDefaultParam,
|
|
data.boxShadowParam
|
|
);
|
|
selectColourFromColourPicker(
|
|
commonWidgetText.boxShadowColor,
|
|
data.boxShadowColor,
|
|
3
|
|
);
|
|
addTextWidgetToVerifyValue("components.numberinput1.value");
|
|
|
|
cy.waitForAutoSave();
|
|
cy.openInCurrentTab(commonWidgetSelector.previewButton);
|
|
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName)
|
|
).verifyVisibleElement("have.value", data.randomNumber);
|
|
|
|
cy.clearAndType(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName),
|
|
randomNumber(1, 4)
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName)
|
|
).verifyVisibleElement("have.value", `${data.minimumvalue}`);
|
|
cy.clearAndType(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName),
|
|
randomNumber(100, 110)
|
|
);
|
|
cy.forceClickOnCanvas();
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName)
|
|
).verifyVisibleElement("have.value", `${data.maximumValue}`);
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName)
|
|
)
|
|
.invoke("attr", "placeholder")
|
|
.should("contain", data.randomNumber);
|
|
|
|
verifyTooltip(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName),
|
|
data.tooltipText
|
|
);
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(commonWidgetText.text1)
|
|
).verifyVisibleElement("have.text", data.maximumValue);
|
|
|
|
cy.get(
|
|
commonWidgetSelector.draggableWidget(numberInputText.defaultWidgetName)
|
|
).should("have.css", "border-radius", "20px");
|
|
verifyBoxShadowCss(
|
|
numberInputText.defaultWidgetName,
|
|
data.boxShadowColor,
|
|
data.boxShadowParam
|
|
);
|
|
});
|
|
});
|