PromucFlow_constructor/app/client/cypress/support/widgetCommands.js
Aishwarya-U-R d7b2bad974
test: Cypress | Cy 12 upgrade + Flaky fixes (#23852)
## Description
- This PR upgrades cypress from 11.2 to 12.13.0 which fixes the random
browser crash issue in CI runs
 - ValidateNetworkStatus() updates to validate the n/w responses
 - cy.route() to cy.intercept()
 - Converting dataSources.json to HostPort.ts
 - Api responses read - updating to right Cy12 supported format
- js inconsistent testJsontext to TS `EnterJSContext` in few failing
specs
 - CI - higher resolution trials
- Improves _.agHelper.RefreshPage() - fixing Error: Socket closed before
finished writing response
 - AssertDocumentReady() created
 - within(()) & .children() - handled for Cy12
- Improved DeployApp(), NavigateBacktoEditor(), RefreshPage(), AddDsl()
methods
- js inconsistent goToEditFromPublish to TS `NavigateBacktoEditor` in
all specs
- js inconsistent PublishtheApp to TS `_.agHelper.DeployApp` in all
specs
- Convert /DynamicHeight/Text_Widget_spec.js to TS with all supporting
TS helpers
 - ToggleJSMode()
 - COMMIT_INFO_MESSAGE improved
 - Remove tooltip on the Application Name after rename
- js inconsistent cy.addDsl(dsl); to TS helper `_.agHelper.AddDsl(val);`
 - ++++ Much more improvements....

#### Type of change
- Script fixes

## Testing
#### How Has This Been Tested?
- [X] Cypress

## Checklist:
#### QA activity:
- [X] Added `Test Plan Approved` label after Cypress tests were reviewed

---------

Co-authored-by: Vijetha-Kaja <vijetha@appsmith.com>
2023-06-15 18:51:11 +05:30

1701 lines
51 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 pages = require("../locators/Pages.json");
const commonlocators = require("../locators/commonlocators.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 apiwidget = require("../locators/apiWidgetslocator.json");
const dynamicInputLocators = require("../locators/DynamicInput.json");
const viewWidgetsPage = require("../locators/ViewWidgets.json");
const generatePage = require("../locators/GeneratePage.json");
import { ObjectsRegistry } from "../support/Objects/Registry";
import { TABLE_COLUMN_ORDER_KEY } from "./Constants";
let pageidcopy = " ";
const ee = ObjectsRegistry.EntityExplorer;
const agHelper = ObjectsRegistry.AggregateHelper;
const propPane = ObjectsRegistry.PropertyPane;
export const initLocalstorage = () => {
cy.window().then((window) => {
window.localStorage.setItem("ShowCommentsButtonToolTip", "");
window.localStorage.setItem("updateDismissed", "true");
});
};
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, doesPropertyTabExist = true) => {
if (doesPropertyTabExist) cy.moveToContentTab();
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("switchToPaginationTab", () => {
cy.get(apiwidget.paginationTab).first().click({ force: true });
});
Cypress.Commands.add("selectDateFormat", (value) => {
cy.get(
".t--property-control-dateformat .ads-v2-select > .rc-select-selector",
).click({
force: true,
});
cy.get(".t--dropdown-option")
.children()
.contains(value)
.click({ force: true });
});
Cypress.Commands.add("selectDropdownValue", (element, value) => {
cy.get(element).last().scrollIntoView().click({ force: true });
cy.get(".t--dropdown-option")
.children()
.contains(value)
.click({ force: true });
});
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("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", () => {
propPane.SelectPlatformFunction("onTabSelected", "Show modal");
agHelper.GetNClick(propPane._actionOpenDropdownSelectModal, 0, true);
cy.get(".t--create-modal-btn").click({ force: true });
});
Cypress.Commands.add("createModal", (ModalName, property) => {
ObjectsRegistry.PropertyPane.AddAction(property);
cy.get(ObjectsRegistry.CommonLocators._dropDownValue("Show modal")).click();
cy.get(modalWidgetPage.selectModal).click();
cy.wait(2000);
cy.get(modalWidgetPage.createModalButton).click({ force: true });
cy.wait(3000);
cy.assertPageSave();
// 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");
ee.SelectEntityInModal("Modal1", "Widgets");
//cy.get(".t--modal-widget" +" "+ widgetsPage.textWidget).click();
cy.testCodeMirror(ModalName);
cy.moveToStyleTab();
cy.xpath(widgetsPage.textCenterAlign).first().click({ force: true });
cy.assertPageSave();
cy.get(".bp3-overlay-backdrop").last().click({ force: true });
});
Cypress.Commands.add("createModalWithIndex", (ModalName, index) => {
cy.get(widgetsPage.actionSelect).eq(index).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();
// changing the model name verify
// cy.widgetText(
// ModalName,
// modalWidgetPage.modalName,
// modalWidgetPage.modalName,
// );
//cy.wait(20000);
//changing the Model label
// cy.get(modalWidgetPage.modalWidget + " " + widgetsPage.textWidget)
// .first()
// .trigger("mouseover");
ee.SelectEntityInModal("Modal1", "Widgets");
//cy.get(".t--modal-widget" +" "+ widgetsPage.textWidget).click();
cy.testCodeMirror(ModalName);
cy.moveToStyleTab();
cy.xpath(widgetsPage.textCenterAlign).first().click({ force: true });
cy.assertPageSave();
cy.get(".bp3-overlay-backdrop").click({ force: true });
});
Cypress.Commands.add("selectOnClickOption", (option) => {
cy.get(".bp3-popover-content").should("be.visible");
cy.get("ul.bp3-menu div.bp3-fill")
.should("be.visible")
.contains(option)
.click({ force: true });
});
Cypress.Commands.add("selectWidgetOnClickOption", (option) => {
cy.get(".bp3-popover-content").should("be.visible");
cy.get(commonlocators.selectWidgetVirtualList)
.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.propertyPaneTitle)
.click({ force: true })
.type(text, { delay: 300 })
.type("{enter}");
cy.get(inputcss).first().click({ force: true });
cy.contains(innercss, text);
});
Cypress.Commands.add("verifyUpdatedWidgetName", (text, txtToVerify) => {
cy.get(commonlocators.propertyPaneTitle)
.click({ force: true })
.type(text)
.type("{enter}");
cy.assertPageSave();
if (!txtToVerify) cy.get(".editable-text-container").contains(text);
else cy.get(".editable-text-container").contains(txtToVerify);
cy.wait(2000); //for widget name to reflect!
});
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.propertyPaneTitle)
.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("getCodeMirror", () => {
cy.EnableAllCodeEditors();
return cy
.get(".CodeMirror textarea")
.first()
.focus()
.type("{ctrl}{shift}{downarrow}");
});
Cypress.Commands.add("testCodeMirror", (value) => {
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
cy.EnableAllCodeEditors();
cy.wait(2000);
cy.get(".CodeMirror textarea")
.first()
.focus()
.type(`{${modifierKey}}a`)
.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.EnableAllCodeEditors();
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("clearComputedValueFirst", () => {
cy.get(".CodeMirror textarea")
.first()
.focus({ force: true })
.type("{uparrow}", { force: true })
.type("{ctrl}{shift}{downarrow}", { force: true });
cy.focused().then(() => {
cy.get(".CodeMirror textarea").first().clear({
force: true,
});
cy.log("The field is empty");
});
cy.wait(1000);
});
Cypress.Commands.add("updateComputedValueV2", (value) => {
cy.get(".t--property-control-computedvalue .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(".t--property-control-computedvalue .CodeMirror textarea")
.first()
.type(value, {
force: true,
parseSpecialCharSequences: false,
});
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000);
});
Cypress.Commands.add("testCodeMirrorWithIndex", (value, index) => {
cy.EnableAllCodeEditors();
cy.get(".CodeMirror textarea")
.eq(index)
.focus()
.type("{ctrl}{shift}{downarrow}", { force: true })
.then(($cm) => {
if ($cm.val() !== "") {
cy.get(".CodeMirror textarea").eq(index).clear({
force: true,
});
}
cy.get(".CodeMirror textarea")
.eq(index)
.type("{ctrl}{shift}{downarrow}", { force: true })
.clear({ force: true })
.type(value, {
force: true,
parseSpecialCharSequences: false,
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(200);
cy.get(".CodeMirror textarea").eq(index).should("have.value", value);
});
});
Cypress.Commands.add("testCodeMirrorLast", (value) => {
cy.EnableAllCodeEditors();
cy.get(".CodeMirror textarea")
.last()
.focus()
.type("{ctrl}{shift}{downarrow}", { force: true })
.then(($cm) => {
if ($cm.val() !== "") {
cy.get(".CodeMirror textarea").last().clear({
force: true,
});
}
cy.get(".CodeMirror textarea")
.last()
.type("{ctrl}{shift}{downarrow}", { force: true })
.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.EnableAllCodeEditors();
cy.get(".t--property-control-" + endp + " .CodeMirror textarea")
.first()
.focus({ force: true })
.type("{ctrl}{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
});
Cypress.Commands.add("testJsontextclear", (endp) => {
cy.get(".t--property-control-" + endp + " .CodeMirror textarea")
.first()
.focus({ force: true })
.type("{ctrl}{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,
});
}
});
});
Cypress.Commands.add("testJsonTextClearMultiline", (endp) => {
const modifierKey = Cypress.platform === "darwin" ? "meta" : "ctrl";
cy.get(".t--property-control-" + endp + " .CodeMirror textarea")
.first()
.focus({ force: true })
.type(`{${modifierKey}}{a}`, { force: true })
.type(`{${modifierKey}}{del}`, { force: true });
});
Cypress.Commands.add("getCodeInput", ($selector, value) => {
cy.EnableAllCodeEditors();
cy.get($selector)
.first()
.click({ force: true })
.find(".CodeMirror")
.first()
.then((ins) => {
const input = ins[0];
return cy.wrap(input);
});
});
/**
* 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.getCodeInput($selector).then((input) => {
const codeMirrorInput = input[0].CodeMirror;
codeMirrorInput.focus();
cy.wait(200);
codeMirrorInput.setValue(value);
cy.wait(500); //time for value to set
});
});
Cypress.Commands.add(
"focusCodeInput",
($selector, cursor = { ch: 0, line: 0 }) => {
cy.getCodeInput($selector).then((input) => {
const codeMirrorInput = input[0].CodeMirror;
codeMirrorInput.focus();
cy.wait(200);
codeMirrorInput.setCursor(cursor);
cy.wait(1000); //time for value to set
});
},
);
Cypress.Commands.add(
"assertCursorOnCodeInput",
($selector, cursor = { ch: 0, line: 0 }) => {
cy.EnableAllCodeEditors();
cy.get($selector)
.first()
.find(".CodeMirror")
.first()
.then((ins) => {
const input = ins[0].CodeMirror;
// The input gets focused with a slight delay so we need to wait for it
cy.waitUntil(() => input.hasFocus()).then(() => {
const editorCursor = input.getCursor();
expect(editorCursor.ch).to.equal(cursor.ch);
expect(editorCursor.line).to.equal(cursor.line);
});
});
},
);
Cypress.Commands.add(
"assertSoftFocusOnCodeInput",
($selector, cursor = { ch: 0, line: 0 }) => {
cy.EnableAllCodeEditors();
cy.get($selector)
.find(".CodeEditorTarget")
.should("have.focus")
.find(".CodeMirror")
.first()
.then((ins) => {
const input = ins[0].CodeMirror;
if (!input.hasFocus()) {
input.focus();
}
expect(input.hasFocus()).to.be.true;
const editorCursor = input.getCursor();
expect(editorCursor.ch).to.equal(cursor.ch);
expect(editorCursor.line).to.equal(cursor.line);
});
},
);
Cypress.Commands.add("selectColor", (GivenProperty, colorOffset = -15) => {
// 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.colorPickerV2Color)
.eq(colorOffset)
.then(($elem) => {
cy.get($elem).click({ force: true });
});
});
Cypress.Commands.add("toggleJsAndUpdate", (endp, value) => {
cy.EnableAllCodeEditors();
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("toggleJsAndUpdateWithIndex", (endp, value, index) => {
cy.get(".CodeMirror textarea")
.eq(index)
.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(index).clear({
force: true,
});
}
cy.get(".CodeMirror textarea").eq(index).type(value, {
force: true,
parseSpecialCharSequences: false,
});
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(200);
});
Cypress.Commands.add("assertControlVisibility", (endp) => {
cy.get(".t--property-control-" + endp + " .CodeMirror")
.first()
.should("not.be.visible");
});
Cypress.Commands.add("tableColumnDataValidation", (columnName) => {
cy.backFromPropertyPanel();
cy.get("[data-rbd-draggable-id='" + columnName + "'] input")
.scrollIntoView()
.first()
.focus({ force: true })
.should("be.visible");
});
Cypress.Commands.add("tableV2ColumnDataValidation", (columnName) => {
cy.backFromPropertyPanel();
cy.get("[data-rbd-draggable-id='" + columnName + "'] input[type='text']")
.scrollIntoView()
.first()
.focus({ force: true })
.should("be.visible");
});
Cypress.Commands.add("tableColumnPopertyUpdate", (colId, newColName) => {
cy.backFromPropertyPanel();
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("tableV2ColumnPopertyUpdate", (colId, newColName) => {
cy.backFromPropertyPanel();
cy.get("[data-rbd-draggable-id='" + colId + "'] input[type='text']")
.scrollIntoView()
.should("be.visible")
.click({
force: true,
});
cy.get("[data-rbd-draggable-id='" + colId + "'] input[type='text']").clear({
force: true,
});
cy.get("[data-rbd-draggable-id='" + colId + "'] input[type='text']").type(
newColName,
{
force: true,
},
);
cy.get(".draggable-header ").contains(newColName).should("be.visible");
});
Cypress.Commands.add("backFromPropertyPanel", () => {
cy.wait(500);
cy.get("body").then(($body) => {
let count = $body.find(commonlocators.editPropBackButton)?.length || 0;
if (count > 0) {
cy.get(commonlocators.editPropBackButton).click({ force: true });
cy.wait(500);
cy.backFromPropertyPanel();
}
});
});
Cypress.Commands.add("hideColumn", (colId) => {
cy.backFromPropertyPanel();
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.backFromPropertyPanel();
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.backFromPropertyPanel();
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(
"openFieldConfiguration",
(fieldIdentifier, shouldClosePanel = true) => {
if (shouldClosePanel) {
cy.backFromPropertyPanel();
}
cy.get(
"[data-rbd-draggable-id='" + fieldIdentifier + "'] .t--edit-column-btn",
).click({
force: true,
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000);
},
);
Cypress.Commands.add("deleteJSONFormField", (fieldIdentifier) => {
cy.backFromPropertyPanel();
cy.get(
"[data-rbd-draggable-id='" + fieldIdentifier + "'] .t--delete-column-btn",
).click({
force: true,
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000);
});
Cypress.Commands.add("makeColumnVisible", (colId) => {
cy.backFromPropertyPanel();
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("addColumnV2", (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.defaultColNameV2).clear({
force: true,
});
cy.get(widgetsPage.defaultColNameV2).type(colId, { force: true });
});
Cypress.Commands.add("editColumn", (colId, shouldReturnToMainPane = true) => {
if (shouldReturnToMainPane) {
cy.backFromPropertyPanel();
}
cy.get("[data-rbd-draggable-id='" + colId + "'] .t--edit-column-btn").click({
force: true,
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1500);
});
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, property) => {
cy.get(`.t--add-action-${property}`).click();
cy.get(`.single-select:contains('Show alert')`).click();
cy.enterActionValue(value, property);
});
// Cypress.Commands.add("addSuccessMessage", (value) => {
// cy.get(commonlocators.chooseMsgType).last().click({ force: true });
// cy.get(commonlocators.chooseAction).children().contains("Success").click();
// cy.enterActionValue(value);
// });
Cypress.Commands.add("selectResetWidget", (eventName) => {
cy.get(`.t--add-action-${eventName}`).scrollIntoView().click({ force: true });
cy.get('.single-select:contains("Reset widget")').click({ force: true });
});
Cypress.Commands.add("selectWidgetForReset", (value) => {
cy.get(widgetsPage.selectWidget).click({ force: true });
cy.get(`.single-select:contains(${value})`).click();
});
Cypress.Commands.add("SetDateToToday", () => {
cy.get(".react-datepicker .react-datepicker__day--today").click({
force: true,
});
cy.assertPageSave();
});
Cypress.Commands.add("enterActionValue", (value, property) => {
cy.EnableAllCodeEditors();
let codeMirrorTextArea = ".CodeMirror textarea";
if (property) codeMirrorTextArea = `${codeMirrorTextArea}`;
cy.get(codeMirrorTextArea)
.last()
.focus()
.type("{ctrl}{shift}{downarrow}", { force: true })
.then(($cm) => {
if ($cm.val() !== "") {
cy.get(codeMirrorTextArea).last().clear({
force: true,
});
}
cy.get(codeMirrorTextArea).last().type(value, {
force: true,
parseSpecialCharSequences: false,
});
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(200);
});
});
Cypress.Commands.add("enterEventValue", (value) => {
cy.get(commonlocators.optionchangetextDropdown)
.focus()
.type("{ctrl}{shift}{downarrow}")
.then(($cm) => {
if ($cm.val() !== "") {
cy.get(commonlocators.optionchangetextDropdown).clear({
force: true,
});
}
cy.get(commonlocators.optionchangetextDropdown).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, navigateToCanvasPage = true) => {
let pageId;
cy.CreatePage();
cy.wait("@createPage").then((xhr) => {
expect(xhr.response.body.responseMeta.status).to.equal(201);
if (pageName) {
pageId = xhr.response.body.data.id;
cy.wait(2000);
cy.get(`div[id=entity-${pageId}] .t--context-menu`).click({
force: true,
});
cy.get(pages.editName).click({ force: true });
cy.get(pages.editInput).type(pageName + "{enter}");
cy.wrap(pageId).as("currentPageId");
}
cy.get("#loading").should("not.exist");
});
});
Cypress.Commands.add("Deletepage", (Pagename) => {
cy.CheckAndUnfoldEntityItem("Pages");
cy.get(`.t--entity-item:contains(${Pagename})`).within(() => {
cy.get(".t--context-menu").click({ force: true });
});
cy.wait(2000);
cy.selectAction("Delete");
cy.selectAction("Are you sure?");
cy.wait("@deletePage")
.its("response.body.responseMeta.status")
.should("eq", 200);
});
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("selectTxtSize", (text) => {
cy.get(".t--dropdown-option").contains(text).click({ force: true });
});
Cypress.Commands.add("getAlert", (eventName, value = "hello") => {
cy.get(`.t--add-action-${eventName}`).scrollIntoView().click({ force: true });
cy.get('.single-select:contains("Show alert")')
.click({ force: true })
.wait(500);
agHelper.EnterActionValue("Message", value);
cy.get(".t--open-dropdown-Select-type").click({ force: true });
cy.get(".bp3-popover-content .bp3-menu li")
.contains("Success")
.click({ force: true });
ObjectsRegistry.AggregateHelper.GetNClick(
ObjectsRegistry.PropertyPane._actionSelectorPopupClose,
0,
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("addQueryFromLightningMenu", (QueryName) => {
cy.get(commonlocators.dropdownSelectButton)
.first()
.click({ force: true })
.selectOnClickOption("Execute a query")
.selectOnClickOption(QueryName);
});
Cypress.Commands.add(
"addAPIFromLightningMenu",
(ApiName, eventName = "onClick") => {
ObjectsRegistry.PropertyPane.AddAction(eventName);
cy.get(ObjectsRegistry.CommonLocators._dropDownValue("Execute a query"))
.click()
.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("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`).first().click({ force: true }).wait(500);
cy.get(".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("openPropertyPaneFromModal", (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`).first().click({ force: true }).wait(500);
cy.get(".t--widget-propertypane-toggle > .t--widget-name")
.last()
.click({ force: true });
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000);
});
Cypress.Commands.add(
"openPropertyPaneByWidgetName",
(widgetName, widgetType) => {
const selector = `[data-widgetname-cy="${widgetName}"] .t--draggable-${widgetType}`;
cy.wait(500);
cy.get(selector)
.first()
.trigger("mouseover", { force: true })
.click({ force: true })
.wait(500);
cy.get(".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`)
.first()
.click({ force: true })
.wait(500);
cy.get(".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("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", "")
.replaceAll(/\u200B/g, "")
.replaceAll("\n", "")
.replaceAll("/Type / to access quick commands", "");
cy.log(originalWidget);
cy.get(widgetsPage.copyWidget).click({ force: true });
cy.wait(3000);
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.wait(1000);
cy.get("body").type(`{${modifierKey}}v`);
cy.wait(3000);
cy.openPropertyPaneCopy(widget);
cy.get(widgetsPage.propertypaneText)
.children()
.last()
.invoke("text")
.then((y) => {
//cy.log(y);
let copiedWidget = y
.replaceAll("x", "")
.replaceAll(/\u200B/g, "")
.replaceAll("\n", "")
.replaceAll("/Type / to access quick commands", "");
cy.log(copiedWidget);
expect(originalWidget).to.equal(copiedWidget);
});
});
});
Cypress.Commands.add("deleteWidget", () => {
// Delete the button widget
cy.get(widgetsPage.removeWidget).click({ force: true });
cy.wait(3000);
cy.wait("@updateLayout");
});
Cypress.Commands.add("UpdateChartType", (typeOfChart) => {
cy.selectDropdownValue(viewWidgetsPage.chartType, typeOfChart);
cy.get(
`${viewWidgetsPage.chartTypeText} .rc-select-selection-item span`,
).should("have.text", typeOfChart);
});
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 div`;
return selector;
});
Cypress.Commands.add("getTableV2DataSelector", (rowNum, colNum) => {
const selector = `.t--widget-tablewidgetv2 .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}]`;
return selector;
});
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 div`;
const tabVal = cy.get(selector).invoke("text");
return tabVal;
});
Cypress.Commands.add("readTableV2data", (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}"]`;
const tabVal = cy.get(selector).invoke("text");
return tabVal;
});
Cypress.Commands.add(
"readTabledataPublish",
(rowNum, colNum, shouldNotGoOneLeveDeeper) => {
// 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 ${
!shouldNotGoOneLeveDeeper ? "div" : ""
}`;
const tabVal = cy.get(selector).invoke("text");
return tabVal;
},
);
Cypress.Commands.add("readTableV2dataPublish", (rowNum, colNum) => {
const selector = `.t--widget-tablewidgetv2 .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}]`;
const tabVal = cy.get(selector).invoke("text");
return tabVal;
});
Cypress.Commands.add(
"readTabledataValidateCSS",
(rowNum, colNum, cssProperty, cssValue, shouldNotGotOneLeveDeeper) => {
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div ${
!shouldNotGotOneLeveDeeper ? "div" : ""
}`;
cy.get(selector).should("have.css", cssProperty, cssValue);
},
);
Cypress.Commands.add(
"readTableV2dataValidateCSS",
(rowNum, colNum, cssProperty, cssValue) => {
const selector = `.t--widget-tablewidgetv2 .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] .cell-wrapper`;
cy.get(selector).should("have.css", cssProperty, cssValue);
},
);
Cypress.Commands.add(
"readTabledataFromSpecificIndex",
(rowNum, colNum, index) => {
// 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).eq(index).invoke("text");
return tabVal;
},
);
Cypress.Commands.add(
"readTableV2dataFromSpecificIndex",
(rowNum, colNum, index) => {
const selector = `.t--widget-tablewidgetv2 .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}]`;
const tabVal = cy.get(selector).eq(index).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 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("readTableV2LinkPublish", (rowNum, colNum) => {
const selector = `.t--widget-tablewidgetv2 .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] div .image-cell-wrapper .image-cell`;
const bgUrl = cy.get(selector).should("have.attr", "src");
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("contain.text", value);
});
Cypress.Commands.add(
"validateWidgetExists",
{ prevSubject: true },
(selector) => {
cy.get(selector).should("exist");
},
);
Cypress.Commands.add("clearPropertyValue", (value) => {
cy.EnableAllCodeEditors();
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("deleteQueryOrJS", (Action) => {
cy.CheckAndUnfoldEntityItem("Queries/JS");
cy.get(`.t--entity-item:contains(${Action})`).within(() => {
cy.get(".t--context-menu").click({ force: true });
});
cy.selectAction("Delete");
cy.selectAction("Are you sure?");
cy.wait("@deleteAction")
.its("response.body.responseMeta.status")
.should("eq", 200);
});
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("EnableAllCodeEditors", () => {
cy.get(commonlocators.lazyCodeEditorFallback, { timeout: 60000 }).should(
"not.exist",
);
// Code editors might not always be present on the page, so we need to check for their existence first
// (https://docs.cypress.io/guides/core-concepts/conditional-testing#Element-existence)
cy.get("body").then(($body) => {
if ($body.find(commonlocators.lazyCodeEditorRendered).length === 0) return;
return cy.get(commonlocators.lazyCodeEditorRendered).each(($el) => {
cy.wrap($el).find(".CodeMirror").should("exist");
});
});
});
Cypress.Commands.add("getTableCellHeight", (x, y) => {
return cy
.get(
`.t--widget-tablewidgetv2 .tbody .td[data-colindex=${x}][data-rowindex=${y}] .cell-wrapper div`,
)
.invoke("css", "height");
});
Cypress.Commands.add("hoverTableCell", (x, y) => {
return cy.get(`[data-colindex="${x}"][data-rowindex="${y}"]`).then((ele) => {
const { left, top } = ele[0].getBoundingClientRect();
cy.get(
`[data-colindex=${x}][data-rowindex=${y}] .t--table-text-cell`,
).trigger("mousemove", top + 5, left + 5, {
eventConstructor: "MouseEvent",
force: true,
});
});
});
Cypress.Commands.add("editTableCell", (x, y) => {
cy.get(`[data-colindex="${x}"][data-rowindex="${y}"] .t--editable-cell-icon`)
.invoke("show")
.click({ force: true });
cy.wait(500);
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] .t--inlined-cell-editor input.bp3-input`,
).should("exist");
});
Cypress.Commands.add("editTableSelectCell", (x, y) => {
cy.get(`[data-colindex="${x}"][data-rowindex="${y}"] .t--editable-cell-icon`)
.invoke("show")
.click({ force: true });
cy.get(`[data-colindex="${x}"][data-rowindex="${y}"] .select-button`).should(
"exist",
);
});
Cypress.Commands.add("makeColumnEditable", (column) => {
cy.get(
`[data-rbd-draggable-id="${column}"] .t--card-checkbox input+span`,
).click();
});
Cypress.Commands.add("enterTableCellValue", (x, y, text) => {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] .t--inlined-cell-editor input.bp3-input`,
)
.click({ force: true })
.clear({ force: true });
if (text) {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] .t--inlined-cell-editor input.bp3-input`,
)
.focus()
.type(text)
.wait(500);
}
});
Cypress.Commands.add("discardTableCellValue", (x, y) => {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] .t--inlined-cell-editor input.bp3-input`,
).type("{esc}", { force: true });
});
Cypress.Commands.add("saveTableCellValue", (x, y) => {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] .t--inlined-cell-editor input.bp3-input`,
).type("{enter}", { force: true });
});
Cypress.Commands.add("saveTableRow", (x, y) => {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] button span:contains('Save')`,
).click({ force: true });
});
Cypress.Commands.add("AssertTableRowSavable", (x, y) => {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] button span:contains('Save')`,
).should("exist");
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] button span:contains('Save')`,
).should("not.be.disabled");
});
Cypress.Commands.add("discardTableRow", (x, y) => {
cy.get(
`[data-colindex="${x}"][data-rowindex="${y}"] button span:contains('Discard')`,
).click({ force: true });
});
Cypress.Commands.add("moveToStyleTab", () => {
cy.get(commonlocators.propertyStyle).first().click({ force: true });
});
Cypress.Commands.add("moveToContentTab", () => {
cy.get(commonlocators.propertyContent).first().click({ force: true });
});
Cypress.Commands.add("openPropertyPaneWithIndex", (widgetType, index) => {
const selector = `.t--draggable-${widgetType}`;
cy.wait(500);
cy.get(selector)
.eq(index)
.scrollIntoView()
.trigger("mouseover", { force: true })
.wait(500);
cy.get(`${selector}:first-of-type`)
.eq(index)
.scrollIntoView()
.click({ force: true })
.wait(500);
cy.get(".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("changeLayoutHeight", (locator) => {
cy.get(commonlocators.heightProperty)
.last()
.scrollIntoView()
.click({ force: true });
cy.get(commonlocators.heightPropertyOption)
.contains(locator)
.click({ force: true });
cy.wait("@updateLayout").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
});
Cypress.Commands.add("changeLayoutHeightWithoutWait", (locator) => {
cy.get(commonlocators.heightProperty)
.last()
.scrollIntoView()
.click({ force: true });
cy.get(commonlocators.heightPropertyOption)
.contains(locator)
.click({ force: true });
});
Cypress.Commands.add("checkMinDefaultValue", (endp, value) => {
cy.get(".cm-m-null")
.first()
.invoke("text")
.then((text) => {
const someText = text;
cy.log(someText);
expect(someText).to.equal(value);
});
});
Cypress.Commands.add("checkMaxDefaultValue", (endp, value) => {
cy.get(".cm-m-null")
.last()
.invoke("text")
.then((text) => {
const someText = text;
cy.log(someText);
expect(someText).to.equal(value);
});
});
Cypress.Commands.add("freezeColumnFromDropdown", (columnName, direction) => {
cy.get(`[data-header=${columnName}] .header-menu .bp3-popover2-target`).click(
{ force: true },
);
cy.get(".bp3-menu")
.contains(`Freeze column ${direction}`)
.click({ force: true });
cy.wait(500);
});
Cypress.Commands.add("sortColumn", (columnName, direction) => {
cy.get(`[data-header=${columnName}] .header-menu .bp3-popover2-target`).click(
{ force: true },
);
cy.get(".bp3-menu")
.contains(`Sort column ${direction}`)
.click({ force: true });
cy.wait(500);
});
Cypress.Commands.add(
"checkIfColumnIsFrozenViaCSS",
(rowNum, coumnNum, position = "sticky") => {
cy.getTableV2DataSelector(rowNum, coumnNum).then((selector) => {
cy.get(selector).should("have.css", "position", position);
});
},
);
Cypress.Commands.add(
"checkColumnPosition",
(columnName, expectedColumnPosition) => {
cy.get(`[data-header]`)
.eq(expectedColumnPosition)
.then(($elem) => {
const dataHeaderAttribute = $elem.attr("data-header");
expect(dataHeaderAttribute).to.equal(columnName);
});
},
);
Cypress.Commands.add("readLocalColumnOrder", (columnOrderKey) => {
const localColumnOrder = window.localStorage.getItem(columnOrderKey) || "";
if (localColumnOrder) {
const parsedTableConfig = JSON.parse(localColumnOrder);
if (parsedTableConfig) {
const tableWidgetId = Object.keys(parsedTableConfig)[0];
return parsedTableConfig[tableWidgetId];
}
}
});
Cypress.Commands.add(
"checkLocalColumnOrder",
(expectedOrder, direction, columnOrderKey = TABLE_COLUMN_ORDER_KEY) => {
cy.wait(1000);
cy.readLocalColumnOrder(columnOrderKey).then((tableWidgetOrder) => {
if (tableWidgetOrder) {
const { leftOrder: observedLeftOrder, rightOrder: observedRightOrder } =
tableWidgetOrder;
if (direction === "left") {
expect(expectedOrder).to.be.deep.equal(observedLeftOrder);
}
if (direction === "right") {
expect(expectedOrder).to.be.deep.equal(observedRightOrder);
}
}
});
},
);
Cypress.Commands.add("findAndExpandEvaluatedTypeTitle", () => {
cy.wait(2500); //for eval popup to open
cy.get(commonlocators.evaluatedTypeTitle).first().next().find("span").click();
});
/**
* sourceColumn - Column name that needs to be dragged/picked.
* targetColumn - Name of the column where the sourceColumn needs to be dropped
*/
Cypress.Commands.add("dragAndDropColumn", (sourceColumn, targetColumn) => {
const dataTransfer = new DataTransfer();
cy.get(`[data-header="${sourceColumn}"] [draggable='true']`).trigger(
"dragstart",
{ force: true, dataTransfer },
);
cy.get(`[data-header="${targetColumn}"] [draggable='true']`).trigger("drop", {
force: true,
dataTransfer,
});
cy.wait(500);
});
Cypress.Commands.add("resizeColumn", (columnName, resizeAmount) => {
cy.get(`[data-header="${columnName}"] .resizer`)
.trigger("mousedown")
.trigger("mousemove", { x: resizeAmount, y: 0, force: true })
.trigger("mouseup");
});