This is an automated email from the ASF dual-hosted git repository.
tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push:
new 8823066e8f9 kie-issues#898: DMN Editor: Moving the divider line of or
resizing a Decision Service (#3162)
8823066e8f9 is described below
commit 8823066e8f9a54e1e56426edb94d5a1999261355
Author: Aswathi <[email protected]>
AuthorDate: Sat Jul 26 00:18:05 2025 +0530
kie-issues#898: DMN Editor: Moving the divider line of or resizing a
Decision Service (#3162)
Co-authored-by: Aswathi T V <[email protected]>
Co-authored-by: Aswathi T V <[email protected]>
---
packages/dmn-editor/src/diagram/Diagram.tsx | 4 +
packages/dmn-editor/src/diagram/nodes/Nodes.tsx | 12 ++-
.../src/mutations/applyAutoLayoutToDrd.ts | 3 +
packages/dmn-editor/src/mutations/resizeNode.ts | 107 +++++++++++++++++++++
.../mutations/updateDecisionServiceDividerLine.ts | 20 ++++
.../dmn-editor/tests-e2e/__fixtures__/nodes.ts | 10 ++
.../drds/decision-service-from-other-drd.png | Bin 29602 -> 29609 bytes
.../Google-Chrome/drds/moving-divider-line.png | Bin 0 -> 42987 bytes
.../drds/resized-decision-service.png | Bin 0 -> 43493 bytes
.../drds/decision-service-from-other-drd.png | Bin 29586 -> 29477 bytes
.../chromium/drds/moving-divider-line.png | Bin 0 -> 42849 bytes
.../chromium/drds/resized-decision-service.png | Bin 0 -> 43353 bytes
.../drds/decision-service-from-other-drd.png | Bin 28501 -> 42809 bytes
.../webkit/drds/moving-divider-line.png | Bin 0 -> 42999 bytes
.../webkit/drds/resized-decision-service.png | Bin 0 -> 43330 bytes
.../drds/modelDecisionServicesInDrds.spec.ts | 61 ++++++++++--
16 files changed, 209 insertions(+), 8 deletions(-)
diff --git a/packages/dmn-editor/src/diagram/Diagram.tsx
b/packages/dmn-editor/src/diagram/Diagram.tsx
index 8c1838f7d9c..78fddf9df4c 100644
--- a/packages/dmn-editor/src/diagram/Diagram.tsx
+++ b/packages/dmn-editor/src/diagram/Diagram.tsx
@@ -766,6 +766,8 @@ export const Diagram = React.forwardRef<DiagramRef, {
container: React.RefObject
__readonly_externalDmnsIndex: state
.computed(state)
.getDirectlyIncludedExternalModelsByNamespace(externalModelsByNamespace).dmns,
+ __readonly_href: node.id,
+ __readonly_dmnObjectId: node.data.dmnObject?.["@_id"] ??
"",
change: {
isExternal: !!node.data.dmnObjectQName.prefix,
nodeType: node.type as NodeType,
@@ -789,6 +791,7 @@ export const Diagram = React.forwardRef<DiagramRef, {
container: React.RefObject
},
},
});
+ // Handles resizing a decision contained in a decision
service in a DRD resizes it in all DRDs to keep Decision Services consistent
if (node.type === NODE_TYPES.decision &&
node.data.parentRfNode) {
const dsContainingDecision = node.data.parentRfNode;
const drds =
state.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"] ?? [];
@@ -894,6 +897,7 @@ export const Diagram = React.forwardRef<DiagramRef, {
container: React.RefObject
});
}
}
+ // Handles repositioning a decision in a decision service in
a DRD repositions it in all DRDs to have the Decision Service consistent
if (node.type === NODE_TYPES.decision &&
node.data.parentRfNode) {
const parentDecisionService = node.data.parentRfNode;
const drds =
state.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"] ?? [];
diff --git a/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
b/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
index 318e94e6f42..c4095bfc500 100644
--- a/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
+++ b/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
@@ -1179,6 +1179,7 @@ export const DecisionServiceNode = React.memo(
shapeIndex: shape.index,
localYPosition: e.y,
snapGrid: state.diagram.snapGrid,
+ __readonly_decisionServiceHref: id,
});
});
})
@@ -1192,7 +1193,16 @@ export const DecisionServiceNode = React.memo(
return () => {
selection.on(".drag", null);
};
- }, [decisionService, dmnEditorStoreApi, dmnObjectNamespace,
externalModelsByNamespace, id, index, shape.index]);
+ }, [
+ decisionService,
+ dmnEditorStoreApi,
+ dmnObjectNamespace,
+ externalModelsByNamespace,
+ id,
+ index,
+ shape.index,
+ isCollapsed,
+ ]);
const { fontCssProperties, shapeStyle } = useNodeStyle({
dmnStyle: shape["di:Style"],
diff --git a/packages/dmn-editor/src/mutations/applyAutoLayoutToDrd.ts
b/packages/dmn-editor/src/mutations/applyAutoLayoutToDrd.ts
index 26ddb0f9c3b..6321af867b4 100644
--- a/packages/dmn-editor/src/mutations/applyAutoLayoutToDrd.ts
+++ b/packages/dmn-editor/src/mutations/applyAutoLayoutToDrd.ts
@@ -125,6 +125,8 @@ export function applyAutoLayoutToDrd({
snapGrid: state.diagram.snapGrid,
__readonly_dmnObjectNamespace,
__readonly_externalDmnsIndex,
+ __readonly_href: nodeId,
+ __readonly_dmnObjectId: node.data.dmnObject?.["@_id"] ?? "",
change: {
index: node.data.index,
isExternal: !!node.data.dmnObjectQName.prefix,
@@ -178,6 +180,7 @@ export function applyAutoLayoutToDrd({
shapeIndex: parentNode.data.shape.index,
snapGrid: state.diagram.snapGrid,
localYPosition: dividerLinerLocalYPosition,
+ __readonly_decisionServiceHref: parentNode.id,
});
}
diff --git a/packages/dmn-editor/src/mutations/resizeNode.ts
b/packages/dmn-editor/src/mutations/resizeNode.ts
index bbccba8048a..3ef286c2903 100644
--- a/packages/dmn-editor/src/mutations/resizeNode.ts
+++ b/packages/dmn-editor/src/mutations/resizeNode.ts
@@ -35,6 +35,8 @@ import { SnapGrid } from "../store/Store";
import { addOrGetDrd } from "./addOrGetDrd";
import { DECISION_SERVICE_DIVIDER_LINE_PADDING } from
"./updateDecisionServiceDividerLine";
import { ExternalDmnsIndex } from "../DmnEditor";
+import { computeIndexedDrd } from "../store/computed/computeIndexes";
+import { getDecisionServicePropertiesRelativeToThisDmn } from
"./addExistingDecisionServiceToDrd";
export function resizeNode({
definitions,
@@ -43,6 +45,8 @@ export function resizeNode({
__readonly_dmnObjectNamespace,
__readonly_externalDmnsIndex,
snapGrid,
+ __readonly_href,
+ __readonly_dmnObjectId,
change,
}: {
definitions: Normalized<DMN15__tDefinitions>;
@@ -51,6 +55,8 @@ export function resizeNode({
snapGrid: SnapGrid;
__readonly_dmnObjectNamespace: string | undefined;
__readonly_externalDmnsIndex: ExternalDmnsIndex;
+ __readonly_href: string;
+ __readonly_dmnObjectId: string;
change: {
nodeType: NodeType;
isExternal: boolean;
@@ -167,4 +173,105 @@ export function resizeNode({
shapeBounds["@_width"] = newDimensions.width;
shapeBounds["@_height"] = newDimensions.height;
+
+ // Handles resizing a decision service in a DRD resizes it in all DRDs to
keep Decision Services consistent
+ if (change.nodeType === NODE_TYPES.decisionService) {
+ const drds = definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"] ?? [];
+ const drgElements = definitions.drgElement!;
+ for (let i = 0; i < drds.length; i++) {
+ if (i === drdIndex) {
+ continue;
+ }
+ const _indexedDrd = computeIndexedDrd(definitions["@_namespace"],
definitions, i);
+ const dsShape = _indexedDrd.dmnShapesByHref.get(__readonly_href);
+ if (dsShape && dsShape["dc:Bounds"] && !shape["@_isCollapsed"]) {
+ dsShape["dc:Bounds"]["@_width"] = shape["dc:Bounds"]?.["@_width"] ?? 0;
+ dsShape["dc:Bounds"]["@_height"] = shape["dc:Bounds"]?.["@_height"] ??
0;
+ }
+
+ // Apply delta shift to neighbouring nodes in other DRD
+ const decisionService = drgElements.find(
+ (elem) => elem["@_id"] === __readonly_dmnObjectId
+ ) as Normalized<DMN15__tDecisionService>;
+ const { containedDecisionHrefsRelativeToThisDmn } =
getDecisionServicePropertiesRelativeToThisDmn({
+ thisDmnsNamespace: definitions["@_namespace"],
+ decisionService,
+ decisionServiceNamespace: __readonly_dmnObjectNamespace ??
definitions["@_namespace"],
+ });
+
+ const decisionsInDecisionServiceInDrd: string[] = [];
+ for (const elem of drgElements) {
+ if (elem.__$$element === "decisionService") {
+ decisionsInDecisionServiceInDrd.push(
+ ...(elem.outputDecision ?? []).map((od) => od["@_href"]),
+ ...(elem.encapsulatedDecision ?? []).map((od) => od["@_href"])
+ );
+ }
+ }
+
+ for (const [key] of _indexedDrd.dmnShapesByHref.entries()) {
+ if (key !== __readonly_href &&
!containedDecisionHrefsRelativeToThisDmn.includes(key)) {
+ const nodeShape = _indexedDrd.dmnShapesByHref.get(key);
+ if (nodeShape && nodeShape["dc:Bounds"] && dsShape &&
!shape["@_isCollapsed"]) {
+ const nodeShapeWidth = nodeShape["dc:Bounds"]!["@_x"] +
nodeShape["dc:Bounds"]!["@_width"];
+ const nodeShapeHeight = nodeShape["dc:Bounds"]!["@_y"] +
nodeShape["dc:Bounds"]!["@_height"];
+ const dsShapeWidth = dsShape["dc:Bounds"]!["@_x"] +
dsShape["dc:Bounds"]!["@_width"] - deltaWidth;
+ const dsShapeHeight = dsShape["dc:Bounds"]!["@_y"] +
dsShape["dc:Bounds"]!["@_height"] - deltaHeight;
+
+ const drgElem = drgElements.filter((item) => item["@_id"] ===
nodeShape["@_dmnElementRef"]);
+
+ const shiftXPosition =
+ nodeShape["dc:Bounds"]["@_x"] >= dsShapeWidth &&
+ (nodeShapeHeight >= dsShape["dc:Bounds"]!["@_y"] ||
nodeShape["dc:Bounds"]["@_y"] <= dsShapeHeight);
+
+ const shiftYPosition =
+ nodeShape["dc:Bounds"]["@_y"] >= dsShapeHeight &&
+ (dsShapeWidth <= nodeShapeWidth ||
nodeShape["dc:Bounds"]!["@_x"] <= nodeShapeWidth);
+
+ const bounds = nodeShape["dc:Bounds"];
+
+ if (drgElem[0].__$$element === "decisionService") {
+ const containedDecisions = [
+ ...(drgElem[0].outputDecision ?? []).map((od) => od["@_href"]),
+ ...(drgElem[0].encapsulatedDecision ?? []).map((od) =>
od["@_href"]),
+ ];
+
+ if (shiftXPosition || shiftYPosition) {
+ const divider =
nodeShape["dmndi:DMNDecisionServiceDividerLine"];
+ const waypoints = divider?.["di:waypoint"];
+ // Handles position shift of decision service
+ if (shiftXPosition) {
+ bounds["@_x"] += deltaWidth;
+ }
+
+ if (shiftYPosition) {
+ bounds["@_y"] += deltaHeight;
+ waypoints![0]["@_y"] += deltaHeight;
+ waypoints![1]["@_y"] += deltaHeight;
+ }
+ // Handles position shift of decisions inside decision service
+ for (const decision of containedDecisions) {
+ const containedDecisionBounds =
_indexedDrd.dmnShapesByHref.get(decision)?.["dc:Bounds"];
+ if (containedDecisionBounds) {
+ if (shiftXPosition) containedDecisionBounds["@_x"] +=
deltaWidth;
+ if (shiftYPosition) containedDecisionBounds["@_y"] +=
deltaHeight;
+ }
+ }
+ }
+ } else {
+ // Handles position shift of other independent shapes
+ if (!decisionsInDecisionServiceInDrd.some((arr) =>
arr.includes(key))) {
+ if (shiftXPosition) {
+ bounds["@_x"] = bounds!["@_x"] + deltaWidth;
+ }
+ if (shiftYPosition) {
+ bounds["@_y"] = bounds!["@_y"] + deltaHeight;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
diff --git
a/packages/dmn-editor/src/mutations/updateDecisionServiceDividerLine.ts
b/packages/dmn-editor/src/mutations/updateDecisionServiceDividerLine.ts
index daebac4cb93..b28c1af6bc2 100644
--- a/packages/dmn-editor/src/mutations/updateDecisionServiceDividerLine.ts
+++ b/packages/dmn-editor/src/mutations/updateDecisionServiceDividerLine.ts
@@ -33,6 +33,8 @@ import { SnapGrid } from "../store/Store";
import { NODE_TYPES } from "../diagram/nodes/NodeTypes";
import { generateUuid } from "@kie-tools/boxed-expression-component/dist/api";
import { ExternalDmnsIndex } from "../DmnEditor";
+import { getDecisionServiceDividerLineLocalY } from
"../diagram/maths/DmnMaths";
+import { computeIndexedDrd } from "../store/computed/computeIndexes";
export const DECISION_SERVICE_DIVIDER_LINE_PADDING = 100;
@@ -46,6 +48,7 @@ export function updateDecisionServiceDividerLine({
localYPosition,
drgElementIndex,
snapGrid,
+ __readonly_decisionServiceHref,
}: {
definitions: Normalized<DMN15__tDefinitions>;
drdIndex: number;
@@ -56,6 +59,7 @@ export function updateDecisionServiceDividerLine({
localYPosition: number;
drgElementIndex: number;
snapGrid: SnapGrid;
+ __readonly_decisionServiceHref: string;
}) {
const { diagramElements } = addOrGetDrd({ definitions, drdIndex });
@@ -121,6 +125,22 @@ export function updateDecisionServiceDividerLine({
shape["dmndi:DMNDecisionServiceDividerLine"] ??=
getCentralizedDecisionServiceDividerLine(shapeBounds);
shape["dmndi:DMNDecisionServiceDividerLine"]["di:waypoint"]![0]["@_y"] =
newDividerLineYPosition;
shape["dmndi:DMNDecisionServiceDividerLine"]["di:waypoint"]![1]["@_y"] =
newDividerLineYPosition;
+
+ //Updating dividerline position in all DRDs that contain the decisions
service
+ const dividerLineLocalY = getDecisionServiceDividerLineLocalY(shape);
+ const drds = definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"] ?? [];
+ for (let i = 0; i < drds.length; i++) {
+ if (i === drdIndex) {
+ continue;
+ }
+ const _indexedDrd = computeIndexedDrd(definitions["@_namespace"],
definitions, i);
+ const dsShape =
_indexedDrd.dmnShapesByHref.get(__readonly_decisionServiceHref);
+ const dsShapeYPosition = dsShape?.["dc:Bounds"]?.["@_y"];
+ if (dsShape && dsShape["dmndi:DMNDecisionServiceDividerLine"]) {
+
dsShape["dmndi:DMNDecisionServiceDividerLine"]!["di:waypoint"]![0]["@_y"] =
dsShapeYPosition! + dividerLineLocalY;
+
dsShape["dmndi:DMNDecisionServiceDividerLine"]!["di:waypoint"]![1]["@_y"] =
dsShapeYPosition! + dividerLineLocalY;
+ }
+ }
}
export function getCentralizedDecisionServiceDividerLine(
diff --git a/packages/dmn-editor/tests-e2e/__fixtures__/nodes.ts
b/packages/dmn-editor/tests-e2e/__fixtures__/nodes.ts
index ef5cef7fd8c..582418f1448 100644
--- a/packages/dmn-editor/tests-e2e/__fixtures__/nodes.ts
+++ b/packages/dmn-editor/tests-e2e/__fixtures__/nodes.ts
@@ -294,4 +294,14 @@ export class Nodes {
await this.select({ name: args.name, position: NodePosition.TOP });
await
this.page.getByTestId(`kie-tools--dmn-editor--${args.name}-collapsed-button`).click();
}
+
+ public async moveDividerLine(args: { nodeName: string }) {
+ await this.select({ name: args.nodeName, position: NodePosition.CENTER });
+ const node = this.get({ name: args.nodeName });
+ const { x, y, width, height } = (await node.boundingBox()) ?? { x: 0, y:
0, width: 0, height: 0 };
+ await this.page.mouse.move(x + width / 2, y + height / 2);
+ await this.page.mouse.down();
+ await this.page.mouse.move(x, y - 60);
+ await this.page.mouse.up();
+ }
}
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-service-from-other-drd.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-service-from-other-drd.png
index 477bd55dd61..153b698e413 100644
Binary files
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-service-from-other-drd.png
and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-service-from-other-drd.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/moving-divider-line.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/moving-divider-line.png
new file mode 100644
index 00000000000..dede6959bb7
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/moving-divider-line.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/resized-decision-service.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/resized-decision-service.png
new file mode 100644
index 00000000000..36a81e9fc4b
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/resized-decision-service.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-service-from-other-drd.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-service-from-other-drd.png
index 7c035d7023a..f707794c25d 100644
Binary files
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-service-from-other-drd.png
and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-service-from-other-drd.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/moving-divider-line.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/moving-divider-line.png
new file mode 100644
index 00000000000..7cdce7ce88c
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/moving-divider-line.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/resized-decision-service.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/resized-decision-service.png
new file mode 100644
index 00000000000..c38d1461be1
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/resized-decision-service.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-service-from-other-drd.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-service-from-other-drd.png
index 9271a15651c..0583de60434 100644
Binary files
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-service-from-other-drd.png
and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-service-from-other-drd.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/moving-divider-line.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/moving-divider-line.png
new file mode 100644
index 00000000000..01f400ceb73
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/moving-divider-line.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/resized-decision-service.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/resized-decision-service.png
new file mode 100644
index 00000000000..5156c36d988
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/resized-decision-service.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
b/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
index 76ecc402fbc..8fd2bf489ca 100644
--- a/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
+++ b/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
@@ -339,22 +339,69 @@ test.describe("Model Decision Services - DRD", () => {
// TODO
});
- test("889 resize DS content and replicate in DRDs", async ({ drds }) => {
- test.skip(true,
"https://github.com/apache/incubator-kie-issues/issues/889");
+ test("Resizing a Decision Service in a DRD should replicate it in all DRDs",
async ({
+ drds,
+ drgNodes,
+ palette,
+ nodes,
+ diagram,
+ }) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
- description: "https://github.com/apache/incubator-kie-issues/issues/889",
+ description: "https://github.com/apache/incubator-kie-issues/issues/898",
});
- // TODO
+ await drds.toggle();
+ await drds.create({ name: "First DRD" });
+ await drgNodes.toggle();
+
+ await palette.dragNewNode({
+ type: NodeType.DECISION_SERVICE,
+ targetPosition: { x: 400, y: 200 },
+ thenRenameTo: "DS1",
+ });
+ await expect(nodes.get({ name: "DS1" })).toBeAttached();
+ await drds.toggle();
+ await drds.create({ name: "Second DRD" });
+ await drgNodes.dragNode({ name: "DS1", targetPosition: { x: 400, y: 200 }
});
+ await drgNodes.toggle();
+ await nodes.resize({ nodeName: "DS1", xOffset: 100, yOffset: 100 });
+ await drds.toggle();
+ await drds.navigateTo({ name: "First DRD" });
+ await drds.toggle();
+ await
expect(diagram.get()).toHaveScreenshot("resized-decision-service.png");
});
- test("898 move DS divider and replicate in DRDs", async ({ drds }) => {
- test.skip(true,
"https://github.com/apache/incubator-kie-issues/issues/898");
+ test("Moving decision service divider line in one DRD replicates it in all
DRDs", async ({
+ drds,
+ drgNodes,
+ palette,
+ nodes,
+ diagram,
+ }) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
description: "https://github.com/apache/incubator-kie-issues/issues/898",
});
- // TODO
+ await drds.toggle();
+ await drds.create({ name: "First DRD" });
+ await drgNodes.toggle();
+
+ await palette.dragNewNode({
+ type: NodeType.DECISION_SERVICE,
+ targetPosition: { x: 400, y: 200 },
+ thenRenameTo: "DS1",
+ });
+ await expect(nodes.get({ name: "DS1" })).toBeAttached();
+ await drds.toggle();
+ await drds.create({ name: "Second DRD" });
+ await drgNodes.dragNode({ name: "DS1", targetPosition: { x: 400, y: 200 }
});
+
+ await drgNodes.toggle();
+ await nodes.moveDividerLine({ nodeName: "DS1" });
+ await drds.toggle();
+ await drds.navigateTo({ name: "First DRD" });
+ await drds.toggle();
+ await expect(diagram.get()).toHaveScreenshot("moving-divider-line.png");
});
test("Adding a node to Decision service adds it to all DRDs where Decision
Service is in expanded form", async ({
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]