mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-25 23:47:17 +00:00
141 lines
3.9 KiB
JavaScript
141 lines
3.9 KiB
JavaScript
import { commonWidgetSelector, inspectorSelectors } from "Selectors/common";
|
|
|
|
export const openAndVerifyNode = (nodeName, nodes, verificationFunction) => {
|
|
openStateFromComponent(nodeName);
|
|
verifyNodes(nodes, verificationFunction);
|
|
};
|
|
|
|
export const verifyNodes = (nodes, verificationFunction) => {
|
|
nodes.forEach((node) =>
|
|
verificationFunction(node.key, node.type, node.value)
|
|
);
|
|
};
|
|
|
|
export const openNode = (node, index = 0, time = 1000) => {
|
|
cy.get(`[data-cy="inspector-${node.toLowerCase()}-expand-button"]`, {
|
|
timeout: time,
|
|
})
|
|
.eq(index)
|
|
.click();
|
|
};
|
|
|
|
export const openStateFromComponent = (widgetName) => {
|
|
cy.get(commonWidgetSelector.draggableWidget(widgetName))
|
|
.realHover()
|
|
.realHover();
|
|
|
|
cy.get(commonWidgetSelector.draggableWidget(widgetName))
|
|
.realHover()
|
|
.then(() => {
|
|
cy.get(`[data-cy="${widgetName}-inspect-button"]`)
|
|
.realHover({ position: "topRight" })
|
|
.last()
|
|
.realClick();
|
|
});
|
|
};
|
|
|
|
export const verifyNodeData = (node, type, value, index = 0) => {
|
|
cy.get(`[data-cy="inspector-${node.toLowerCase()}-label"]`)
|
|
.eq(index)
|
|
.realHover()
|
|
.verifyVisibleElement("have.text", `${node}`);
|
|
|
|
cy.get(`[data-cy="inspector-${node.toLowerCase()}-value"]`)
|
|
.eq(index)
|
|
.verifyVisibleElement("have.text", type == "Function" ? "function" : value);
|
|
};
|
|
|
|
export const deleteComponentFromInspector = (node) => {
|
|
cy.get('[data-cy="inspector-menu-icon"]').click();
|
|
cy.get(`[data-cy="inspector-delete-component-action"`)
|
|
.realHover()
|
|
.parent()
|
|
.find('[style="height: 13px; width: 13px;"] > img')
|
|
.last()
|
|
.click();
|
|
};
|
|
|
|
export const navigateToInspectorNodes = ([node, subNode, label]) => {
|
|
cy.get('[data-cy="left-sidebar-inspector"] [aria-label="Inspector"]')
|
|
.should("be.visible")
|
|
.click();
|
|
cy.get(".tooltip-inner").invoke("hide");
|
|
cy.get(inspectorSelectors.inspectorNode(node)).should("be.visible");
|
|
cy.get(inspectorSelectors.inspectorGlobalsExpandButton(node))
|
|
.should("be.visible")
|
|
.click();
|
|
cy.get(inspectorSelectors.inspectorSubNode(subNode))
|
|
.should("be.visible")
|
|
.click();
|
|
if (label) {
|
|
cy.get(inspectorSelectors.inspectorNodeLabel(label))
|
|
.should("be.visible")
|
|
.click();
|
|
} else {
|
|
cy.get(inspectorSelectors.inspectorNodeLabel(label)).should("not.exist");
|
|
}
|
|
};
|
|
|
|
export const verifyInspectorValue = (node, expectedValue) => {
|
|
cy.get(
|
|
`${inspectorSelectors.inspectorNodeValue(node)} > .json-viewer-node-value > div`
|
|
)
|
|
.should("be.visible")
|
|
.and("have.text", expectedValue);
|
|
};
|
|
|
|
export const verifyInspectorKeyValue = (key, value) => {
|
|
const normalizeKey = (key) =>
|
|
key.replace(/[^a-zA-Z0-9]/g, "-").replace(/-+/g, "-");
|
|
|
|
const expectedLabelText = (key) => {
|
|
if (/^[a-z]+[A-Z]/.test(key)) {
|
|
return key;
|
|
}
|
|
return key;
|
|
};
|
|
|
|
const selectorKey = normalizeKey(key);
|
|
const expectedLabel = expectedLabelText(key);
|
|
|
|
cy.get(`${inspectorSelectors.inspectorNodeLabel(selectorKey)} > div`).should(
|
|
"have.text",
|
|
expectedLabel
|
|
);
|
|
|
|
const valueSelector = `${inspectorSelectors.inspectorNodeValue(selectorKey)} > .json-viewer-node-value > div`;
|
|
|
|
let finalValue = value;
|
|
if (value && /[`]/.test(value)) {
|
|
finalValue = value.replace(/`/g, "");
|
|
}
|
|
if (
|
|
finalValue != null &&
|
|
finalValue !== "null" &&
|
|
!finalValue.startsWith('"') &&
|
|
!finalValue.startsWith("[") &&
|
|
!finalValue.startsWith("{")
|
|
) {
|
|
finalValue = `"${finalValue}"`;
|
|
}
|
|
cy.get(valueSelector).should("have.text", finalValue);
|
|
};
|
|
|
|
export const navigateAndVerifyInspector = (
|
|
nodePath = [],
|
|
keyValueDataList = [],
|
|
expectedValue
|
|
) => {
|
|
navigateToInspectorNodes(nodePath);
|
|
|
|
if (expectedValue) {
|
|
const lastNode = nodePath[nodePath.length - 1];
|
|
verifyInspectorValue(lastNode, expectedValue);
|
|
}
|
|
// const toSnakeCase = (key) =>
|
|
// key.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase();
|
|
|
|
keyValueDataList.forEach(([key, value]) => {
|
|
verifyInspectorKeyValue(key, value);
|
|
});
|
|
};
|