ToolJet/cypress-tests/cypress/support/utils/editor/inputFieldUtils.js
Midhun Kumar E d36cc44920
test: Add automation for text-input revamp. (#8671)
* 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]>
2024-02-06 10:27:31 +05:30

121 lines
3.6 KiB
JavaScript

import { commonWidgetSelector } from "Selectors/common";
import {
addAndVerifyTooltip,
openAccordion,
openEditorSidebar,
selectColourFromColourPicker,
verifyAndModifyParameter,
verifyAndModifyToggleFx,
verifyWidgetColorCss,
} from "Support/utils/commonWidget";
import { commonWidgetText, customValidation } from "Texts/common";
import { textInputText } from "Texts/textInput";
export const addValidations = (
widgetName,
data,
min = commonWidgetText.labelMinLength,
max = commonWidgetText.labelMaxLength
) => {
openEditorSidebar(widgetName);
openAccordion(commonWidgetText.accordionValidation);
verifyAndModifyParameter(
commonWidgetText.labelRegex,
commonWidgetText.regularExpression
);
verifyAndModifyParameter(min, data.minimumLength);
verifyAndModifyParameter(max, data.maximumLength);
verifyAndModifyParameter(
commonWidgetText.labelcustomValidadtion,
customValidation(data.widgetName, data.customText)
);
verifyAndModifyToggleFx("Make this field mandatory", "");
};
export const addAndVerifyAdditionalActions = (widgetName, tooltipText) => {
openEditorSidebar(widgetName);
openAccordion("Additional Actions");
verifyAndModifyToggleFx(
commonWidgetText.parameterVisibility,
commonWidgetText.codeMirrorLabelTrue
);
cy.get(commonWidgetSelector.draggableWidget(widgetName)).should(
"not.be.visible"
);
cy.get(
commonWidgetSelector.parameterTogglebutton(
commonWidgetText.parameterVisibility
)
).click();
verifyAndModifyToggleFx(
commonWidgetText.parameterDisable,
commonWidgetText.codeMirrorLabelFalse
);
cy.waitForAutoSave();
cy.get(commonWidgetSelector.draggableWidget(widgetName)).should(
"have.attr",
"disabled"
);
cy.get(
commonWidgetSelector.parameterTogglebutton(
commonWidgetText.parameterDisable
)
).click();
verifyAndModifyToggleFx(
commonWidgetText.loadingState,
commonWidgetText.codeMirrorLabelFalse
);
cy.get(commonWidgetSelector.draggableWidget(widgetName))
.parent()
.within(() => {
cy.get(".tj-widget-loader").should("be.visible");
});
cy.get(
commonWidgetSelector.parameterTogglebutton(commonWidgetText.loadingState)
).click();
addAndVerifyTooltip(
commonWidgetSelector.draggableWidget(widgetName),
tooltipText
);
};
export const addAllInputFieldColors = (data) => {
selectColourFromColourPicker("BG color", data.bgColor);
selectColourFromColourPicker("Border color", data.borderColor);
selectColourFromColourPicker("Text color", data.textColor);
selectColourFromColourPicker("Error text color", data.errorTextColor);
selectColourFromColourPicker("Icon color", data.iconColor);
};
export const verifyInputFieldColors = (selectorInput, data) => {
verifyWidgetColorCss(selectorInput, "color", data.textColor);
verifyWidgetColorCss(selectorInput, "border-color", data.borderColor);
verifyWidgetColorCss(selectorInput, "background-color", data.bgColor);
openEditorSidebar(textInputText.defaultWidgetName);
cy.get('[data-cy="make-this-field-mandatory-toggle-button"]').click();
cy.get(commonWidgetSelector.draggableWidget("textinput1")).clear();
cy.forceClickOnCanvas();
cy.verifyCssProperty(
'[data-cy="textinput1-invalid-feedback"]',
"color",
`rgba(${data.errorTextColor[0]}, ${data.errorTextColor[1]}, ${
data.errorTextColor[2]
}, ${data.errorTextColor[3] / 100})`
);
cy.get(commonWidgetSelector.draggableWidget("textinput1"))
.siblings("svg")
.should(
"have.css",
"stroke",
`rgba(${data.iconColor[0]}, ${data.iconColor[1]}, ${data.iconColor[2]}, ${
data.iconColor[3] / 100
})`
);
};