This is an automated email from the ASF dual-hosted git repository.
yamer 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 62fbc0b7296 kie-issues#1158: On the Boxed Expression Component,
changing the ExpressionVariableCell text content will fail to commit if the
focus is changed to another cell (#2611)
62fbc0b7296 is described below
commit 62fbc0b7296b2b115a178a004427579c2917749a
Author: Jozef Marko <[email protected]>
AuthorDate: Mon Oct 7 10:49:01 2024 +0200
kie-issues#1158: On the Boxed Expression Component, changing the
ExpressionVariableCell text content will fail to commit if the focus is changed
to another cell (#2611)
---
.../FunctionExpression/FunctionExpression.tsx | 5 +-
.../FunctionExpression/FunctionKindSelector.tsx | 6 +-
.../src/selection/BeeTableSelectionContext.tsx | 4 +
...ision-table-commit-annotation-by-cell-click.png | Bin 0 -> 12402 bytes
.../boxed-every-commit-variable-by-cell-click.png | Bin 0 -> 13813 bytes
...ed-invocation-commit-function-by-cell-click.png | Bin 0 -> 13488 bytes
.../boxed-some-commit-variable-by-cell-click.png | Bin 0 -> 13593 bytes
...ision-table-commit-annotation-by-cell-click.png | Bin 0 -> 12402 bytes
.../boxed-every-commit-variable-by-cell-click.png | Bin 0 -> 13813 bytes
...ed-invocation-commit-function-by-cell-click.png | Bin 0 -> 13488 bytes
.../boxed-some-commit-variable-by-cell-click.png | Bin 0 -> 13593 bytes
...ision-table-commit-annotation-by-cell-click.png | Bin 0 -> 12137 bytes
.../decisionTable/decision-table-routing.png | Bin 22356 -> 24834 bytes
.../boxed-every-commit-variable-by-cell-click.png | Bin 0 -> 13092 bytes
...ed-invocation-commit-function-by-cell-click.png | Bin 0 -> 12867 bytes
.../boxed-some-commit-variable-by-cell-click.png | Bin 0 -> 13033 bytes
.../tests-e2e/api/annotationCell.ts | 57 ++++++++++++
.../api/expressions/contextExpressionElement.ts | 3 +-
.../expressions/decisionTableExpressionElement.ts | 3 +-
.../api/expressions/functionExpressionElement.ts | 43 +++++++++
.../api/expressions/invocationExpressionElement.ts | 3 +-
...unctionExpressionElement.ts => functionType.ts} | 40 ++++++---
.../nameAndDataTypeWithStandalonePopoverCell.ts | 74 +++++++++++++++
.../boxedExpressions/context/populate.spec.ts | 79 ++++++++--------
.../decisionTable/decisionTableExpression.spec.ts | 18 ++++
.../decisionTable/populate.spec.ts | 71 +++++++--------
.../boxedExpressions/every/everyExpression.spec.ts | 14 +++
.../filter/filterExpression.spec.ts | 35 ++------
.../boxedExpressions/filter/populate.spec.ts | 11 ++-
.../function/functionExpression.spec.ts | 57 +++++-------
.../boxedExpressions/function/parameters.spec.ts | 84 ++++-------------
.../boxedExpressions/function/populate.spec.ts | 99 ++++++++++-----------
.../invocation/invocationExpression.spec.ts | 24 ++++-
.../boxedExpressions/invocation/populate.spec.ts | 67 ++++++--------
.../boxedExpressions/list/populate.spec.ts | 18 ++--
.../boxedExpressions/literal/populate.spec.ts | 8 +-
.../boxedExpressions/relation/populate.spec.ts | 46 ++++------
.../boxedExpressions/some/someExpression.spec.ts | 14 +++
38 files changed, 511 insertions(+), 372 deletions(-)
diff --git
a/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionExpression.tsx
b/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionExpression.tsx
index a7d5fa29bf2..0ed16bae669 100644
---
a/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionExpression.tsx
+++
b/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionExpression.tsx
@@ -156,7 +156,10 @@ export function
useFunctionExpressionParametersColumnHeader(
const expressionParametersContent = useMemo(
() => (
- <div className={`parameters-list ${_.isEmpty(formalParameters) ?
"empty-parameters" : ""}`}>
+ <div
+ data-testid="kie-tools--bee--parameters-list"
+ className={`parameters-list ${_.isEmpty(formalParameters) ?
"empty-parameters" : ""}`}
+ >
<p className="pf-u-text-truncate">
{_.isEmpty(formalParameters) ? (
i18n.editParameters
diff --git
a/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionKindSelector.tsx
b/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionKindSelector.tsx
index 9d60253a627..a6df997e684 100644
---
a/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionKindSelector.tsx
+++
b/packages/boxed-expression-component/src/expressions/FunctionExpression/FunctionKindSelector.tsx
@@ -74,7 +74,11 @@ export const FunctionKindSelector:
React.FunctionComponent<FunctionKindSelectorP
}, []);
const displaySelectedFunctionKind = useMemo(
- () => <div
className="selected-function-kind">{_.first(selectedFunctionKind)}</div>,
+ () => (
+ <div className="selected-function-kind"
data-testid="kie-tools--bee--selected-function-kind">
+ {_.first(selectedFunctionKind)}
+ </div>
+ ),
[selectedFunctionKind]
);
diff --git
a/packages/boxed-expression-component/src/selection/BeeTableSelectionContext.tsx
b/packages/boxed-expression-component/src/selection/BeeTableSelectionContext.tsx
index 40c5c20afb6..56744e90f23 100644
---
a/packages/boxed-expression-component/src/selection/BeeTableSelectionContext.tsx
+++
b/packages/boxed-expression-component/src/selection/BeeTableSelectionContext.tsx
@@ -1019,6 +1019,10 @@ export function useBeeTableSelectableCell(
const onMouseDown = useCallback(
(e: React.MouseEvent) => {
+ if (document.activeElement instanceof HTMLInputElement) {
+ // See https://github.com/apache/incubator-kie-issues/issues/1158
+ (document.activeElement as any)?.blur?.();
+ }
e.stopPropagation();
if (
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
new file mode 100644
index 00000000000..55fbf6b8d2b
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
new file mode 100644
index 00000000000..1fb7974759a
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
new file mode 100644
index 00000000000..fc3d654f7d1
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
new file mode 100644
index 00000000000..63a012c7aea
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/Google-Chrome/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
new file mode 100644
index 00000000000..55fbf6b8d2b
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
new file mode 100644
index 00000000000..1fb7974759a
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
new file mode 100644
index 00000000000..fc3d654f7d1
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
new file mode 100644
index 00000000000..63a012c7aea
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/chromium/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
new file mode 100644
index 00000000000..0bb2f75e93b
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/boxed-decision-table-commit-annotation-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/decision-table-routing.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/decision-table-routing.png
index 4e1f42129da..df828b88626 100644
Binary files
a/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/decision-table-routing.png
and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/decisionTable/decision-table-routing.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
new file mode 100644
index 00000000000..b088277953b
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/every/boxed-every-commit-variable-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
new file mode 100644
index 00000000000..9d73f50749a
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/invocation/boxed-invocation-commit-function-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
new file mode 100644
index 00000000000..e080db5a145
Binary files /dev/null and
b/packages/boxed-expression-component/tests-e2e/__screenshots__/webkit/boxedExpressions/some/boxed-some-commit-variable-by-cell-click.png
differ
diff --git
a/packages/boxed-expression-component/tests-e2e/api/annotationCell.ts
b/packages/boxed-expression-component/tests-e2e/api/annotationCell.ts
new file mode 100644
index 00000000000..42b64c57370
--- /dev/null
+++ b/packages/boxed-expression-component/tests-e2e/api/annotationCell.ts
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { Locator } from "@playwright/test";
+import { ContextMenu } from "./expressionContainer";
+
+export class AnnotationCell {
+ constructor(private locator: Locator) {}
+
+ public async open() {
+ await this.locator.nth(0).click();
+ }
+
+ public async getPopoverMenu() {
+ return
this.locator.page().getByTestId("kie-tools--bee--expression-popover-menu");
+ }
+
+ public async setName(params: { name: string; close: boolean }) {
+ await this.locator.click();
+ await this.locator.getByRole("textbox").fill(params.name);
+ if (params.close) {
+ await this.locator.getByRole("textbox").press("Enter");
+ }
+ }
+
+ public async getName() {
+ return await
this.locator.getByTestId("kie-tools--bee--expression-info-name").nth(0).innerText();
+ }
+ public async select() {
+ // Uses the 1,1 to avoid problems by clicking on the element corner
+ await this.content.click({ position: { x: 1, y: 1 } });
+ }
+
+ get content() {
+ return this.locator.nth(0);
+ }
+
+ get contextMenu() {
+ return new ContextMenu(this.locator);
+ }
+}
diff --git
a/packages/boxed-expression-component/tests-e2e/api/expressions/contextExpressionElement.ts
b/packages/boxed-expression-component/tests-e2e/api/expressions/contextExpressionElement.ts
index b6539eab88b..7e7b05f7e0a 100644
---
a/packages/boxed-expression-component/tests-e2e/api/expressions/contextExpressionElement.ts
+++
b/packages/boxed-expression-component/tests-e2e/api/expressions/contextExpressionElement.ts
@@ -21,6 +21,7 @@ import { Locator } from "@playwright/test";
import { Monaco } from "../../__fixtures__/monaco";
import { ChildExpression } from "../expressionContainer";
import { NameAndDataTypeCell } from "../nameAndDataTypeCell";
+import { NameAndDataTypeWithStandalonePopoverCell as VariableDescriptionCell }
from "../nameAndDataTypeWithStandalonePopoverCell";
export class ContextExpressionElement {
constructor(
@@ -102,7 +103,7 @@ export class ContextExpressionEntry {
}
get variable() {
- return new NameAndDataTypeCell(this.locator.getByRole("cell").nth(0));
+ return new VariableDescriptionCell(this.locator.getByRole("cell").nth(0));
}
public async getPopoverMenu() {
diff --git
a/packages/boxed-expression-component/tests-e2e/api/expressions/decisionTableExpressionElement.ts
b/packages/boxed-expression-component/tests-e2e/api/expressions/decisionTableExpressionElement.ts
index 2ce6a761d49..84f6438e1de 100644
---
a/packages/boxed-expression-component/tests-e2e/api/expressions/decisionTableExpressionElement.ts
+++
b/packages/boxed-expression-component/tests-e2e/api/expressions/decisionTableExpressionElement.ts
@@ -21,6 +21,7 @@ import { Locator } from "@playwright/test";
import { Monaco } from "../../__fixtures__/monaco";
import { ExpressionCell } from "../expressionContainer";
import { NameAndDataTypeCell } from "../nameAndDataTypeCell";
+import { AnnotationCell } from "../annotationCell";
export class DecisionTableExpressionElement {
constructor(
@@ -284,7 +285,7 @@ export class DecisionTableExpressionElement {
}
public annotationHeaderAt(index: number) {
- return new
NameAndDataTypeCell(this.locator.getByTestId("kie-tools--bee--table-header-annotation").nth(index));
+ return new
AnnotationCell(this.locator.getByTestId("kie-tools--bee--table-header-annotation").nth(index));
}
get expressionHeaderCell() {
diff --git
a/packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
b/packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
index c5e6fe64004..9ee626c964d 100644
---
a/packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
+++
b/packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
@@ -20,6 +20,7 @@
import { Locator } from "@playwright/test";
import { Monaco } from "../../__fixtures__/monaco";
import { ChildExpression } from "../expressionContainer";
+import { FunctionTypeCell } from "../functionType";
export class FunctionExpressionElement {
constructor(
@@ -32,7 +33,49 @@ export class FunctionExpressionElement {
await this.locator.getByRole("cell", { name: "1"
}).nth(0).locator("svg").click();
}
+ public async addParameter(args: { name?: string; dataType?: string;
closeAs?: "Escape" | "Click" }) {
+ // open parameters popover
+ await this.parameters.click();
+ await this.locator.page().getByRole("button", { name: "Add parameter"
}).click();
+ if (args.name) {
+ await this.locator.page().getByPlaceholder("Parameter
Name").last().fill(args.name);
+
+ // WORKAROUND_DUE_TO
"https://github.com/apache/incubator-kie-issues/issues/540",
+ await this.locator.page().keyboard.press("Tab");
+ }
+ if (args.dataType) {
+ await this.locator.page().getByLabel("<Undefined>").last().click();
+ await this.locator.page().getByRole("option", { name: args.dataType
}).click();
+ }
+
+ // close parameters popover
+ if (args.closeAs === "Escape") {
+ await this.locator.page().keyboard.press("Escape");
+ } else {
+ await this.parameters.click();
+ }
+ }
+
+ public async deleteParameter(args: { nth: number }) {
+ // open parameters popover
+ await this.parameters.click();
+
+ // delete parameter
+ await this.locator.page().getByRole("button", { name: "", exact: true
}).nth(args.nth).click();
+
+ // close parameters popover
+ await this.parameters.click();
+ }
+
public entry(index: number) {
return new
ChildExpression(this.locator.getByTestId(`kie-tools--bee--expression-row-${index}`).nth(0),
this.monaco);
}
+
+ get functionType() {
+ return new
FunctionTypeCell(this.locator.getByTestId("kie-tools--bee--selected-function-kind"));
+ }
+
+ get parameters() {
+ return this.locator.getByTestId("kie-tools--bee--parameters-list");
+ }
}
diff --git
a/packages/boxed-expression-component/tests-e2e/api/expressions/invocationExpressionElement.ts
b/packages/boxed-expression-component/tests-e2e/api/expressions/invocationExpressionElement.ts
index 4e52faeca56..3ecf8c99679 100644
---
a/packages/boxed-expression-component/tests-e2e/api/expressions/invocationExpressionElement.ts
+++
b/packages/boxed-expression-component/tests-e2e/api/expressions/invocationExpressionElement.ts
@@ -21,6 +21,7 @@ import { Locator } from "@playwright/test";
import { Monaco } from "../../__fixtures__/monaco";
import { ChildExpression } from "../expressionContainer";
import { NameAndDataTypeCell } from "../nameAndDataTypeCell";
+import { NameAndDataTypeWithStandalonePopoverCell as ParameterDescriptionCell
} from "../nameAndDataTypeWithStandalonePopoverCell";
export class InvocationExpressionElement {
constructor(
@@ -102,7 +103,7 @@ class InvocationParameter {
}
get descriptionCell() {
- return new
NameAndDataTypeCell(this.locator.getByTestId(`kie-tools--bee--expression-column-1`).nth(0));
+ return new
ParameterDescriptionCell(this.locator.getByTestId(`kie-tools--bee--expression-column-1`).nth(0));
}
get elementCell() {
diff --git
a/packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
b/packages/boxed-expression-component/tests-e2e/api/functionType.ts
similarity index 52%
copy from
packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
copy to packages/boxed-expression-component/tests-e2e/api/functionType.ts
index c5e6fe64004..cc290fd16e7 100644
---
a/packages/boxed-expression-component/tests-e2e/api/expressions/functionExpressionElement.ts
+++ b/packages/boxed-expression-component/tests-e2e/api/functionType.ts
@@ -18,21 +18,33 @@
*/
import { Locator } from "@playwright/test";
-import { Monaco } from "../../__fixtures__/monaco";
-import { ChildExpression } from "../expressionContainer";
-
-export class FunctionExpressionElement {
- constructor(
- private locator: Locator,
- private monaco: Monaco
- ) {}
-
- public async addEntry() {
- await this.locator.getByRole("cell", { name: "1" }).nth(0).hover();
- await this.locator.getByRole("cell", { name: "1"
}).nth(0).locator("svg").click();
+import { ContextMenu } from "./expressionContainer";
+
+export class FunctionTypeCell {
+ constructor(private locator: Locator) {}
+
+ public async open() {
+ await this.locator.nth(0).click();
+ }
+
+ public async getPopoverMenu() {
+ return
this.locator.page().getByTestId("kie-tools--bee--expression-popover-menu");
+ }
+
+ public async setType(args: { type: "FEEL" | "Java" | "PMML" }) {
+ await
this.locator.page().getByTestId("kie-tools--bee--expression-popover-menu").getByText(args.type).click();
+ }
+
+ public async select() {
+ // Uses the 1,1 to avoid problems by clicking on the element corner
+ await this.content.click({ position: { x: 1, y: 1 } });
+ }
+
+ get content() {
+ return this.locator.nth(0);
}
- public entry(index: number) {
- return new
ChildExpression(this.locator.getByTestId(`kie-tools--bee--expression-row-${index}`).nth(0),
this.monaco);
+ get contextMenu() {
+ return new ContextMenu(this.locator);
}
}
diff --git
a/packages/boxed-expression-component/tests-e2e/api/nameAndDataTypeWithStandalonePopoverCell.ts
b/packages/boxed-expression-component/tests-e2e/api/nameAndDataTypeWithStandalonePopoverCell.ts
new file mode 100644
index 00000000000..6ecbc2d12fe
--- /dev/null
+++
b/packages/boxed-expression-component/tests-e2e/api/nameAndDataTypeWithStandalonePopoverCell.ts
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { Locator } from "@playwright/test";
+import { ContextMenu } from "./expressionContainer";
+
+export class NameAndDataTypeWithStandalonePopoverCell {
+ constructor(private locator: Locator) {}
+
+ public async open() {
+ await this.locator.nth(0).click();
+ }
+
+ public async getPopoverMenu() {
+ return
this.locator.page().getByTestId("kie-tools--bee--expression-popover-menu");
+ }
+
+ public async setName({ name, commit = false }: { name: string; commit?:
boolean }) {
+ await (await this.getPopoverMenu()).getByRole("textbox").fill(name);
+ if (commit) {
+ await (await this.getPopoverMenu()).getByRole("textbox").press("Enter");
+ }
+ }
+
+ public async setDataType({ dataType, commit = false }: { dataType: string;
commit?: boolean }) {
+ const popoverMenu = await this.getPopoverMenu();
+ await
popoverMenu.getByTestId("kie-tools--bee--edit-expression-data-type").click();
+ await popoverMenu.getByPlaceholder("Choose...").nth(0).fill(dataType);
+ await
popoverMenu.getByRole("group").nth(0).getByRole("option").nth(0).click();
+ if (commit) {
+ await popoverMenu.page().keyboard.press("Enter");
+ }
+ }
+
+ public async getName() {
+ return await (await
this.getPopoverMenu()).getByTestId("kie-tools--bee--expression-info-name").nth(0).innerText();
+ }
+
+ public async getDataType() {
+ return await (await this.getPopoverMenu())
+ .getByTestId("kie-tools--bee--expression-info-data-type")
+ .nth(0)
+ .innerText();
+ }
+
+ public async select() {
+ // Uses the 1,1 to avoid problems by clicking on the element corner
+ await this.content.click({ position: { x: 1, y: 1 } });
+ }
+
+ get content() {
+ return this.locator.nth(0);
+ }
+
+ get contextMenu() {
+ return new ContextMenu(this.locator);
+ }
+}
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/context/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/context/populate.spec.ts
index 57c1359304d..42c7ce77b89 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/context/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/context/populate.spec.ts
@@ -21,51 +21,54 @@ import { expect, test } from "../../__fixtures__/base";
import { TestAnnotations } from "@kie-tools/playwright-base/annotations";
test.describe("Populate Boxed Context", () => {
- test("should correctly create pre-bureau risk category boxed context", async
({
- page,
- stories,
- bee,
- resizing,
- monaco,
- }) => {
+ test("should correctly create pre-bureau risk category boxed context", async
({ page, stories, bee, resizing }) => {
await stories.openBoxedContext();
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Pre-bureau risk
category calculation");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asContext().expressionHeaderCell.open();
+ await bee.expression
+ .asContext()
+ .expressionHeaderCell.setName({ name: "Pre-bureau risk category
calculation", close: false });
+ await bee.expression.asContext().expressionHeaderCell.setDataType({
dataType: "number", close: true });
await
bee.expression.asContext().entry(0).selectExpressionMenu.selectLiteral();
- await page.getByRole("cell", { name: "ContextEntry-1 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Existing Customer");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
- await monaco.fill({ monacoParentLocator: page, content: "Applicant
data.ExistingCustomer" });
+ await bee.expression.asContext().entry(0).variable.open();
+ await bee.expression.asContext().entry(0).variable.setName({ name:
"Existing Customer" });
+ await bee.expression.asContext().entry(0).variable.setDataType({ dataType:
"boolean", commit: true });
+ await
bee.expression.asContext().entry(0).expression.asLiteral().fill("Applicant
data.ExistingCustomer");
await
bee.expression.asContext().result.selectExpressionMenu.selectDecisionTable();
- await page.getByRole("columnheader", { name: "input-1 (<Undefined>)"
}).hover({ position: { x: 0, y: 0 } });
- await page.getByRole("columnheader", { name: "input-1 (<Undefined>)"
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true }).hover();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addInputAtEnd();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
+ await
bee.expression.asContext().result.expression.asDecisionTable().addRowAtTop();
- await page.getByRole("columnheader", { name: "input-2 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Existing customer");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
- await page.getByRole("columnheader", { name: "input-1 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Application risk
score");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await
bee.expression.asContext().result.expression.asDecisionTable().inputHeaderAt(0).open();
+ await bee.expression
+ .asContext()
+ .result.expression.asDecisionTable()
+ .inputHeaderAt(0)
+ .setName({ name: "Existing customer", close: false });
+ await bee.expression
+ .asContext()
+ .result.expression.asDecisionTable()
+ .inputHeaderAt(0)
+ .setDataType({ dataType: "boolean", close: true });
+
+ await
bee.expression.asContext().result.expression.asDecisionTable().inputHeaderAt(1).open();
+ await bee.expression
+ .asContext()
+ .result.expression.asDecisionTable()
+ .inputHeaderAt(1)
+ .setName({ name: "Application risk score", close: false });
+ await bee.expression
+ .asContext()
+ .result.expression.asDecisionTable()
+ .inputHeaderAt(1)
+ .setDataType({ dataType: "number", close: true });
await bee.expression.asDecisionTable().fill({
startAtCell: 1,
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/decisionTableExpression.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/decisionTableExpression.spec.ts
index 5fde3fce110..8d2b4bded27 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/decisionTableExpression.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/decisionTableExpression.spec.ts
@@ -17,6 +17,7 @@
* under the License.
*/
+import { TestAnnotations } from "@kie-tools/playwright-base/annotations";
import { expect, test } from "../../__fixtures__/base";
test.describe("Create Decision table", () => {
@@ -112,4 +113,21 @@ test.describe("Create Decision table", () => {
}
});
});
+
+ test("should commit annotation by cell click", async ({ bee }) => {
+ test.info().annotations.push({
+ type: TestAnnotations.REGRESSION,
+ description:
"https://github.com/apache/incubator-kie-issues/issues/1158",
+ });
+
+ await bee.expression
+ .asDecisionTable()
+ .annotationHeaderAt(0)
+ .setName({ name: "Changed Annotation Name", close: false });
+
+ // commit a change by a click to another cell
+ await bee.expression.asDecisionTable().cellAt({ row: 1, column: 1
}).content.click();
+
+ await
expect(bee.getContainer()).toHaveScreenshot("boxed-decision-table-commit-annotation-by-cell-click.png");
+ });
});
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/populate.spec.ts
index b437c9a8816..966d6bf8c35 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/decisionTable/populate.spec.ts
@@ -24,47 +24,39 @@ test.describe("Populate Decision table", () => {
test("should correctly create a routing decision table", async ({ stories,
page, bee, resizing }) => {
await stories.openDecisionTable();
- await page.getByRole("columnheader", { name: "input-1 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Post-bureau risk
category");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "string" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asDecisionTable().inputHeaderAt(0).open();
+ await bee.expression
+ .asDecisionTable()
+ .inputHeaderAt(0)
+ .setName({ name: "Post-bureau risk category", close: false });
+ await bee.expression.asDecisionTable().inputHeaderAt(0).setDataType({
dataType: "string", close: true });
await resizing.reset(page.getByRole("columnheader", { name: "Post-bureau
risk category (string)" }));
- await page
- .getByRole("columnheader", { name: "Post-bureau risk category (string)"
})
- .hover({ position: { x: 0, y: 0 } });
- await page.getByRole("row", { name: "Post-bureau risk category (string)"
}).locator("svg").click();
+ await bee.expression.asDecisionTable().addInputAtStart();
- await page.getByRole("columnheader", { name: "input-2 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Post-bureau
affordability");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asDecisionTable().inputHeaderAt(0).open();
+ await bee.expression
+ .asDecisionTable()
+ .inputHeaderAt(0)
+ .setName({ name: "Post-bureau affordability", close: false });
+ await bee.expression.asDecisionTable().inputHeaderAt(0).setDataType({
dataType: "boolean", close: true });
await resizing.reset(page.getByRole("columnheader", { name: "Post-bureau
affordability (boolean)" }));
- await page
- .getByRole("columnheader", { name: "Post-bureau affordability (boolean)"
})
- .hover({ position: { x: 0, y: 0 } });
- await page.getByRole("row", { name: "Post-bureau affordability (boolean)"
}).locator("svg").click();
+ await bee.expression.asDecisionTable().addInputAtStart();
- await page.getByRole("columnheader", { name: "input-3 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Credit Score");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
- await page.getByRole("columnheader", { name: "Credit Score (number)"
}).hover({ position: { x: 0, y: 0 } });
- await page.getByRole("row", { name: "Credit Score (number)"
}).locator("svg").click();
+ await bee.expression.asDecisionTable().inputHeaderAt(0).open();
+ await bee.expression.asDecisionTable().inputHeaderAt(0).setName({ name:
"Credit Score", close: false });
+ await bee.expression.asDecisionTable().inputHeaderAt(0).setDataType({
dataType: "number", close: true });
+ await resizing.reset(page.getByRole("columnheader", { name: "Credit Score
(number)" }));
+ await bee.expression.asDecisionTable().addInputAtStart();
- await page.getByRole("columnheader", { name: "input-4 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Bankrupt");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asDecisionTable().inputHeaderAt(0).open();
+ await bee.expression.asDecisionTable().inputHeaderAt(0).setName({ name:
"Bankrupt", close: false });
+ await bee.expression.asDecisionTable().inputHeaderAt(0).setDataType({
dataType: "boolean", close: true });
+ await resizing.reset(page.getByRole("columnheader", { name: "Bankrupt
(boolean)" }));
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Routing");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "string" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asDecisionTable().outputHeaderAt(0).open();
+ await bee.expression.asDecisionTable().outputHeaderAt(0).setName({ name:
"Routing", close: false });
+ await bee.expression.asDecisionTable().outputHeaderAt(0).setDataType({
dataType: "string", close: true });
+ await resizing.reset(page.getByRole("columnheader", { name: "Routing
(string)" }));
test.info().annotations.push({
type: TestAnnotations.WORKAROUND_DUE_TO,
@@ -81,11 +73,10 @@ test.describe("Populate Decision table", () => {
await page.getByRole("columnheader", { name: "Bankrupt (boolean)"
}).hover({ position: { x: 0, y: 0 } });
await page.getByRole("columnheader", { name: "Routing (string)" }).hover({
position: { x: 0, y: 0 } });
- await page.getByRole("cell", { name: "1" }).hover();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
+ await bee.expression.asDecisionTable().addRowAtBottomOfIndex(1);
+ await bee.expression.asDecisionTable().addRowAtBottomOfIndex(2);
+ await bee.expression.asDecisionTable().addRowAtBottomOfIndex(3);
+ await bee.expression.asDecisionTable().addRowAtBottomOfIndex(4);
await bee.expression.asDecisionTable().fill({
startAtCell: 0,
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/every/everyExpression.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/every/everyExpression.spec.ts
index bf02d48d7cb..7ee73a8b847 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/every/everyExpression.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/every/everyExpression.spec.ts
@@ -45,4 +45,18 @@ test.describe("Create Boxed Every", () => {
expect((await
jsonModel.getEveryExpression()).in["@_id"]).not.toBeUndefined();
expect((await
jsonModel.getEveryExpression()).satisfies["@_id"]).not.toBeUndefined();
});
+
+ test("should commit variable by cell click", async ({ bee }) => {
+ test.info().annotations.push({
+ type: TestAnnotations.REGRESSION,
+ description:
"https://github.com/apache/incubator-kie-issues/issues/1158",
+ });
+
+ await bee.expression.asEvery().variable.fill("Changed Variable Name");
+
+ // commit a change by a click to another cell
+ await bee.expression.asEvery().in.elementCell.click();
+
+ await
expect(bee.getContainer()).toHaveScreenshot("boxed-every-commit-variable-by-cell-click.png");
+ });
});
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/filterExpression.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/filterExpression.spec.ts
index 0490d1ef39a..2c0ce70f4d4 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/filterExpression.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/filterExpression.spec.ts
@@ -21,23 +21,20 @@ import { expect, test } from "../../__fixtures__/base";
import { TestAnnotations } from "@kie-tools/playwright-base/annotations";
test.describe("Create Boxed Filter", () => {
- test("should rename a filter", async ({ page, stories }) => {
+ test("should rename a filter", async ({ bee, page, stories }) => {
await stories.openBoxedFilter("base");
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Filter Expression
Name");
- await page.keyboard.press("Enter");
+ await bee.expression.asFilter().expressionHeaderCell.open();
+ await bee.expression.asFilter().expressionHeaderCell.setName({ name:
"Filter Expression Name", close: true });
await expect(page.getByRole("columnheader", { name: "Filter Expression
Name (<Undefined>)" })).toBeVisible();
});
- test("should change a filter data type", async ({ page, stories }) => {
+ test("should change a filter data type", async ({ bee, page, stories }) => {
await stories.openBoxedFilter("base");
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asFilter().expressionHeaderCell.open();
+ await bee.expression.asFilter().expressionHeaderCell.setDataType({
dataType: "boolean", close: true });
await expect(page.getByRole("columnheader", { name: "Expression Name
(boolean)" })).toBeVisible();
});
@@ -117,8 +114,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Context Expression", async ({
bee,
- page,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -133,8 +128,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Decision Table", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -149,8 +142,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - List", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -165,8 +156,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Invocation", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -181,8 +170,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Function", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -197,8 +184,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Conditional", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -213,8 +198,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - For", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -229,8 +212,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Every", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -245,8 +226,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Some", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
@@ -261,8 +240,6 @@ test.describe("Create Boxed Filter", () => {
test("should correctly fill the 'in' cell when the 'match' cell is larger
than the 'in' cell - Filter", async ({
bee,
- jsonModel,
- stories,
}) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/populate.spec.ts
index b957939644f..32a5cc7b79c 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/filter/populate.spec.ts
@@ -20,13 +20,12 @@
import { test, expect } from "../../__fixtures__/base";
test.describe("Populate Boxed Filter", () => {
- test("should correctly create a Rebooked Flights filter", async ({ stories,
page, bee }) => {
+ test("should correctly create a Rebooked Flights filter", async ({ stories,
bee }) => {
await stories.openBoxedFilter("base");
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Rebooked Flights");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "Any" }).click();
- await page.keyboard.press("Enter");
+
+ await bee.expression.asFilter().expressionHeaderCell.open();
+ await bee.expression.asFilter().expressionHeaderCell.setName({ name:
"Rebooked Flights", close: false });
+ await bee.expression.asFilter().expressionHeaderCell.setDataType({
dataType: "Any", close: true });
// Prepare empty Filter 'in' and 'match' cells
await bee.expression.asFilter().in.selectExpressionMenu.selectLiteral();
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/functionExpression.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/functionExpression.spec.ts
index ae799d2ee72..14ec119105e 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/functionExpression.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/functionExpression.spec.ts
@@ -26,8 +26,8 @@ test.describe("Create Boxed Function", () => {
test("should render FEEL function expression correctly", async ({ bee, page
}) => {
await expect(page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" })).toBeAttached();
- await expect(page.getByRole("columnheader", { name: "F", exact: true
})).toBeAttached();
- await expect(page.getByRole("columnheader", { name: "Edit parameters"
})).toBeAttached();
+ await expect(await
bee.expression.asFunction().functionType.content.textContent()).toEqual("F");
+ await expect(await
bee.expression.asFunction().parameters.textContent()).toEqual("Edit
parameters");
await expect(page.getByText("Select expression")).toHaveCount(1);
await expect(page.getByRole("columnheader")).toHaveCount(3);
await expect(page.getByRole("cell")).toHaveCount(2);
@@ -35,13 +35,13 @@ test.describe("Create Boxed Function", () => {
});
test("should render Java function expression correctly", async ({ bee, page
}) => {
- await page.getByRole("columnheader", { name: "F", exact: true }).click();
- await page.getByRole("menuitem", { name: "Java" }).click();
+ await bee.expression.asFunction().functionType.open();
+ await bee.expression.asFunction().functionType.setType({ type: "Java" });
await
expect(bee.getContainer()).toHaveScreenshot("boxed-java-function.png");
- await expect(page.getByRole("columnheader", { name: "J", exact: true
})).toBeAttached();
+ await expect(await
bee.expression.asFunction().functionType.content.textContent()).toEqual("J");
// the "onmouseenter" events triggers if the mouse was outside of the
element before it appears on screen.
- await page.getByRole("columnheader", { name: "J", exact: true }).hover();
+ await bee.expression.asFunction().functionType.content.hover();
await page.getByText("Class name(string)").hover();
await expect(page.getByRole("cell", { name: "Class name (string)"
}).locator("svg")).toBeAttached();
await page.getByText("Method signature(string)").hover();
@@ -53,8 +53,8 @@ test.describe("Create Boxed Function", () => {
});
test("should render PMML function expression correctly", async ({ bee, page
}) => {
- await page.getByRole("columnheader", { name: "F", exact: true }).click();
- await page.getByRole("menuitem", { name: "PMML" }).click();
+ await bee.expression.asFunction().functionType.open();
+ await bee.expression.asFunction().functionType.setType({ type: "PMML" });
await
expect(bee.getContainer()).toHaveScreenshot("boxed-pmml-function.png");
await expect(page.getByRole("columnheader", { name: "P", exact: true
})).toBeAttached();
@@ -88,8 +88,8 @@ test.describe("Create Boxed Function", () => {
});
test.describe("Change function type", () => {
- test.beforeEach(async ({ page }) => {
- await page.getByRole("columnheader", { name: "F", exact: true }).click();
+ test.beforeEach(async ({ bee }) => {
+ await bee.expression.asFunction().functionType.open();
});
const functioTypes = [
@@ -99,37 +99,24 @@ test.describe("Create Boxed Function", () => {
];
for (const [functionName, abbreviation] of functioTypes) {
- test(`should change function type to ${functionName}`, async ({ page })
=> {
+ test(`should change function type to ${functionName}`, async ({ bee,
page }) => {
await page.getByRole("menuitem", { name: functionName }).hover();
await expect(page.getByLabel(`${functionName}-help`)).toBeAttached();
- await page.getByRole("menuitem", { name: functionName }).click();
+ await bee.expression.asFunction().functionType.setType({ type:
functionName as "FEEL" | "Java" | "PMML" });
await expect(page.getByRole("columnheader", { name: abbreviation,
exact: true })).toBeAttached();
});
}
});
- test("should edit function parameters", async ({ page }) => {
- await page.getByRole("columnheader", { name: "Edit parameters" }).click();
- await expect(page.getByRole("button", { name: "Add parameter"
})).toBeAttached();
-
- await page.getByRole("button", { name: "Add parameter" }).click();
- await expect(page.getByRole("button", { name: "Add parameter"
})).toBeAttached();
- await expect(page.getByRole("columnheader", { name: "(p-1: (<Undefined>))"
})).toBeAttached();
-
- await page.getByRole("textbox").click();
- await page.getByRole("textbox").press("Control+a");
- await page.getByRole("textbox").fill("test");
- await page.getByRole("textbox").press("Tab");
-
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await expect(page.getByRole("columnheader", { name: "(test: (boolean))"
})).toBeAttached();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await expect(page.getByRole("columnheader", { name: "(test: (boolean),
p-2: (<Undefined>))" })).toBeAttached();
- await page.getByLabel("", { exact: true
}).getByRole("button").nth(2).click();
- await expect(page.getByRole("columnheader", { name: "(p-2: (<Undefined>))"
})).toBeAttached();
-
- await page.getByLabel("", { exact: true
}).getByRole("button").nth(2).click();
- await expect(page.getByRole("columnheader", { name: "Edit parameters"
})).toBeAttached();
+ test("should edit function parameters", async ({ bee }) => {
+ await bee.expression.asFunction().addParameter({ name: "test", dataType:
"boolean" });
+ await bee.expression.asFunction().addParameter({});
+
+ expect(await
bee.expression.asFunction().parameters.textContent()).toEqual("(test:
(boolean), p-2: (<Undefined>))");
+
+ await bee.expression.asFunction().deleteParameter({ nth: 1 });
+ await bee.expression.asFunction().deleteParameter({ nth: 0 });
+
+ expect(await
bee.expression.asFunction().parameters.textContent()).toEqual("Edit
parameters");
});
});
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/parameters.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/parameters.spec.ts
index a28077082cc..ab1689f476e 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/parameters.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/parameters.spec.ts
@@ -18,87 +18,37 @@
*/
import { test, expect } from "../../__fixtures__/base";
-import { TestAnnotations } from "@kie-tools/playwright-base/annotations";
test.describe("Boxed Function parameters", () => {
- test("should add a function parameter and change its name and type", async
({ stories, page }) => {
+ test("should add a function parameter and change its name and type", async
({ bee, stories }) => {
await stories.openBoxedFunction();
- await page.getByRole("columnheader", { name: "Edit parameters" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter Name").fill("name");
+ await bee.expression.asFunction().addParameter({ name: "name", dataType:
"string", closeAs: "Escape" });
- test.info().annotations.push({
- type: TestAnnotations.WORKAROUND_DUE_TO,
- description: "https://github.com/apache/incubator-kie-issues/issues/540",
- });
- await page.keyboard.press("Tab");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "string" }).click();
- await page.keyboard.press("Escape");
-
- await expect(page.getByRole("columnheader", { name: "(name: (string))"
})).toBeAttached();
+ expect(await
bee.expression.asFunction().parameters.textContent()).toEqual("(name:
(string))");
});
- test("should multiple function parameter and change its name and type",
async ({ stories, page }) => {
+ test("should multiple function parameter and change its name and type",
async ({ bee, stories }) => {
await stories.openBoxedFunction();
- await page.getByRole("columnheader", { name: "Edit parameters" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- test.info().annotations.push({
- type: TestAnnotations.WORKAROUND_DUE_TO,
- description: "https://github.com/apache/incubator-kie-issues/issues/540",
- });
- // WORKAROUD: TAB EVENT
- await page.getByPlaceholder("Parameter Name").nth(0).fill("name");
- await page.keyboard.press("Tab");
- await page.getByPlaceholder("Parameter Name").nth(1).fill("age");
- await page.keyboard.press("Tab");
- await page.getByPlaceholder("Parameter Name").nth(2).fill("maried");
- await page.keyboard.press("Tab");
-
- await page.getByRole("button", { name: "options menu" }).nth(0).click();
- await page.getByRole("option", { name: "string" }).click();
- await page.getByRole("button", { name: "options menu" }).nth(1).click();
- await page.getByRole("option", { name: "number" }).click();
- await page.getByRole("button", { name: "options menu" }).nth(2).click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Escape");
+ await bee.expression.asFunction().addParameter({ name: "name", dataType:
"string" });
+ await bee.expression.asFunction().addParameter({ name: "age", dataType:
"number" });
+ await bee.expression.asFunction().addParameter({ name: "maried", dataType:
"boolean" });
- await expect(
- page.getByRole("columnheader", { name: "(name: (string), age: (number),
maried: (boolean))" })
- ).toBeAttached();
+ expect(await bee.expression.asFunction().parameters.textContent()).toEqual(
+ "(name: (string), age: (number), maried: (boolean))"
+ );
});
- test("should add function parameters and delete them", async ({ stories,
page }) => {
+ test("should add function parameters and delete them", async ({ bee, stories
}) => {
await stories.openBoxedFunction();
- await page.getByRole("columnheader", { name: "Edit parameters" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter Name").nth(0).fill("name");
- test.info().annotations.push({
- type: TestAnnotations.WORKAROUND_DUE_TO,
- description: "https://github.com/apache/incubator-kie-issues/issues/540",
- });
- // WORKAROUD: TAB EVENT
- await page.keyboard.press("Tab");
- await page.getByPlaceholder("Parameter Name").nth(1).fill("age");
- await page.keyboard.press("Tab");
- await page.getByPlaceholder("Parameter Name").nth(2).fill("maried");
- await page.keyboard.press("Tab");
- await page.getByRole("button", { name: "options menu" }).nth(0).click();
- await page.getByRole("option", { name: "string" }).click();
- await page.getByRole("button", { name: "options menu" }).nth(1).click();
- await page.getByRole("option", { name: "number" }).click();
- await page.getByRole("button", { name: "options menu" }).nth(2).click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.getByRole("button", { name: "", exact: true }).nth(0).click();
- await page.keyboard.press("Escape");
+ await bee.expression.asFunction().addParameter({ name: "name", dataType:
"string" });
+ await bee.expression.asFunction().addParameter({ name: "age", dataType:
"number" });
+ await bee.expression.asFunction().addParameter({ name: "maried", dataType:
"boolean" });
+
+ await bee.expression.asFunction().deleteParameter({ nth: 0 });
- await expect(page.getByRole("columnheader", { name: "(age: (number),
maried: (boolean))" })).toBeAttached();
+ expect(await
bee.expression.asFunction().parameters.textContent()).toEqual("(age: (number),
maried: (boolean))");
});
});
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/populate.spec.ts
index 07649f2f730..ed995046508 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/function/populate.spec.ts
@@ -30,58 +30,41 @@ test.describe("Populate Boxed Function", () => {
await page.getByRole("option", { name: "boolean" }).click();
await page.keyboard.press("Enter");
- await page.getByText("Edit parameters").click();
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter name").nth(0).click();
- await page.getByPlaceholder("Parameter name").nth(0).fill("Monthly
Income");
- await page.keyboard.press("Tab");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
-
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter name").nth(1).click();
- await page.getByPlaceholder("Parameter name").nth(1).fill("Monthly
Repayments");
- await page.keyboard.press("Tab");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
-
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter name").nth(2).click();
- await page.getByPlaceholder("Parameter name").nth(2).fill("Monthly
Expenses");
- await page.keyboard.press("Tab");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
-
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter name").nth(3).click();
- await page.getByPlaceholder("Parameter name").nth(3).fill("Risk Category");
- await page.keyboard.press("Tab");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "string" }).click();
-
- await page.getByRole("button", { name: "Add parameter" }).click();
- await page.getByPlaceholder("Parameter name").nth(4).click();
- await page.getByPlaceholder("Parameter name").nth(4).fill("Required
Monthly Income");
- await page.keyboard.press("Tab");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Escape");
+ await bee.expression.asFunction().addParameter({ name: "Monthly Income",
dataType: "number" });
+ await bee.expression.asFunction().addParameter({ name: "Monthly
Repayments", dataType: "number" });
+ await bee.expression.asFunction().addParameter({ name: "Monthly Expenses",
dataType: "number" });
+ await bee.expression.asFunction().addParameter({ name: "Risk Category",
dataType: "string" });
+ await bee.expression.asFunction().addParameter({ name: "Required Monthly
Income", dataType: "number" });
await
bee.expression.asFunction().entry(0).selectExpressionMenu.selectContext();
- await page.getByRole("cell", { name: "ContextEntry-1 (<Undefined>)",
exact: true }).hover();
- await page.getByRole("cell", { name: "ContextEntry-1 (<Undefined>)",
exact: true }).locator("svg").click();
-
- await page.getByRole("cell", { name: "ContextEntry-1 (<Undefined>)",
exact: true }).click();
- await page.getByPlaceholder("Expression Name").fill("Disposable income");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await
bee.expression.asFunction().entry(0).expression.asContext().addEntryBelowOfEntryAtIndex(0);
+ await
bee.expression.asFunction().entry(0).expression.asContext().entry(0).variable.open();
+ await bee.expression
+ .asFunction()
+ .entry(0)
+ .expression.asContext()
+ .entry(0)
+ .variable.setName({ name: "Disposable income" });
+ await bee.expression
+ .asFunction()
+ .entry(0)
+ .expression.asContext()
+ .entry(0)
+ .variable.setDataType({ dataType: "number", commit: true });
- await page.getByRole("cell", { name: "ContextEntry-2 (<Undefined>)",
exact: true }).click();
- await page.getByPlaceholder("Expression Name").fill("Credit contingency
factor");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await
bee.expression.asFunction().entry(0).expression.asContext().entry(1).variable.open();
+ await bee.expression
+ .asFunction()
+ .entry(0)
+ .expression.asContext()
+ .entry(1)
+ .variable.setName({ name: "Credit contingency factor" });
+ await bee.expression
+ .asFunction()
+ .entry(0)
+ .expression.asContext()
+ .entry(1)
+ .variable.setDataType({ dataType: "number", commit: true });
await resizing.reset(page.getByRole("cell", { name: "Credit contingency
factor (number)", exact: true }));
@@ -99,9 +82,21 @@ test.describe("Populate Boxed Function", () => {
content: "Monthly Income - (Monthly Repayments + Monthly Expenses)",
});
- await page.getByRole("cell", { name: "1", exact: true }).nth(1).hover();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
- await page.getByRole("cell", { name: "1", exact: true
}).locator("svg").click();
+ await bee.expression
+ .asFunction()
+ .entry(0)
+ .expression.asContext()
+ .entry(1)
+ .expression.asDecisionTable()
+ .addRowAtBottomOfIndex(1);
+
+ await bee.expression
+ .asFunction()
+ .entry(0)
+ .expression.asContext()
+ .entry(1)
+ .expression.asDecisionTable()
+ .addRowAtBottomOfIndex(1);
await page.getByRole("columnheader", { name: "input-1 (<Undefined>)"
}).click();
await page.getByPlaceholder("Expression Name").fill("Risk category");
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/invocationExpression.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/invocationExpression.spec.ts
index 4f4f29acc14..9e257dcb175 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/invocationExpression.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/invocationExpression.spec.ts
@@ -17,17 +17,37 @@
* under the License.
*/
+import { TestAnnotations } from "@kie-tools/playwright-base/annotations";
import { test, expect } from "../../__fixtures__/base";
test.describe("Create Boxed Invocation", () => {
test("should render expression correctly", async ({ bee, stories, page }) =>
{
await stories.openBoxedInvocation();
- await expect(page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" })).toBeAttached();
- await expect(page.getByRole("columnheader", { name: "FUNCTION"
})).toBeAttached();
+ expect(await
bee.expression.asInvocation().expressionHeaderCell.getName()).toEqual("Expression
Name");
+ expect(await
bee.expression.asInvocation().expressionHeaderCell.getDataType()).toEqual("(<Undefined>)");
+ await
expect(bee.expression.asInvocation().invokedFunctionNameCell).toBeAttached();
await expect(page.getByRole("cell", { name: "p-1" })).toBeAttached();
await expect(page.getByText("Select expression")).toHaveCount(1);
await expect(page.getByRole("columnheader")).toHaveCount(2);
await expect(page.getByRole("cell")).toHaveCount(2);
await expect(bee.getContainer()).toHaveScreenshot("boxed-invocation.png");
});
+
+ test("should commit invoked function by cell click", async ({ bee, stories,
page }) => {
+ test.info().annotations.push({
+ type: TestAnnotations.REGRESSION,
+ description:
"https://github.com/apache/incubator-kie-issues/issues/1158",
+ });
+
+ await stories.openBoxedInvocation();
+
+ // click to start editing and type new value
+ await bee.expression.asInvocation().invokedFunctionNameCell.click();
+ await page.keyboard.type("Changed Invoked Function Name");
+
+ // commit a change by a click to another cell
+ await bee.expression.asInvocation().parameter(0).descriptionCell.select();
+
+ await
expect(bee.getContainer()).toHaveScreenshot("boxed-invocation-commit-function-by-cell-click.png");
+ });
});
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/populate.spec.ts
index 8c93bbab6a8..e46496e3018 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/invocation/populate.spec.ts
@@ -29,56 +29,43 @@ test.describe("Populate Boxed Invocation", () => {
}) => {
await stories.openBoxedInvocation();
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Installment
calculation");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asInvocation().expressionHeaderCell.open();
+ await bee.expression.asInvocation().expressionHeaderCell.setName({ name:
"Installment calculation", close: false });
+ await bee.expression.asInvocation().expressionHeaderCell.setDataType({
dataType: "number", close: true });
- await page.getByRole("cell", { name: "p-1 (<Undefined>)" }).hover();
- await page.getByRole("cell", { name: "p-1 (<Undefined>)"
}).locator("svg").click();
- await page.getByRole("cell", { name: "p-1 (<Undefined>)"
}).locator("svg").click();
- await page.getByRole("cell", { name: "p-1 (<Undefined>)"
}).locator("svg").click();
- await page.getByRole("cell", { name: "p-1 (<Undefined>)"
}).locator("svg").click();
+ await bee.expression.asInvocation().addParameterBelowOfEntryAtIndex(0);
+ await bee.expression.asInvocation().addParameterBelowOfEntryAtIndex(0);
+ await bee.expression.asInvocation().addParameterBelowOfEntryAtIndex(0);
+ await bee.expression.asInvocation().addParameterBelowOfEntryAtIndex(0);
await
bee.expression.asInvocation().parameter(0).selectExpressionMenu.selectLiteral();
- await page.getByRole("cell", { name: "p-1 (<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Monthly income");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asInvocation().parameter(0).descriptionCell.open();
+ await bee.expression.asInvocation().parameter(0).descriptionCell.setName({
name: "Monthly income" });
+ await
bee.expression.asInvocation().parameter(0).descriptionCell.setDataType({
dataType: "number", commit: true });
- await
bee.expression.asInvocation().parameter(4).selectExpressionMenu.selectLiteral();
- await page.getByRole("cell", { name: "p-5 (<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Monthly repayments");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
-
- await
bee.expression.asInvocation().parameter(3).selectExpressionMenu.selectLiteral();
- await page.getByRole("cell", { name: "p-4 (<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Monthly expenses");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await
bee.expression.asInvocation().parameter(1).selectExpressionMenu.selectLiteral();
+ await bee.expression.asInvocation().parameter(1).descriptionCell.open();
+ await bee.expression.asInvocation().parameter(1).descriptionCell.setName({
name: "Monthly repayments" });
+ await
bee.expression.asInvocation().parameter(1).descriptionCell.setDataType({
dataType: "number", commit: true });
await
bee.expression.asInvocation().parameter(2).selectExpressionMenu.selectLiteral();
- await page.getByRole("cell", { name: "p-3 (<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Risk category");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asInvocation().parameter(2).descriptionCell.open();
+ await bee.expression.asInvocation().parameter(2).descriptionCell.setName({
name: "Monthly expenses" });
+ await
bee.expression.asInvocation().parameter(2).descriptionCell.setDataType({
dataType: "number", commit: true });
- await
bee.expression.asInvocation().parameter(1).selectExpressionMenu.selectLiteral();
- await page.getByRole("cell", { name: "p-2 (<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Required monthly
installment");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await
bee.expression.asInvocation().parameter(3).selectExpressionMenu.selectLiteral();
+ await bee.expression.asInvocation().parameter(3).descriptionCell.open();
+ await bee.expression.asInvocation().parameter(3).descriptionCell.setName({
name: "Risk category" });
+ await
bee.expression.asInvocation().parameter(3).descriptionCell.setDataType({
dataType: "number", commit: true });
+
+ await
bee.expression.asInvocation().parameter(4).selectExpressionMenu.selectLiteral();
+ await bee.expression.asInvocation().parameter(4).descriptionCell.open();
+ await bee.expression.asInvocation().parameter(4).descriptionCell.setName({
name: "Required monthly installment" });
+ await
bee.expression.asInvocation().parameter(4).descriptionCell.setDataType({
dataType: "number", commit: true });
await resizing.reset(page.getByRole("cell", { name: "Required monthly
installment" }));
- await page.getByRole("columnheader", { name: "FUNCTION NAME" }).click();
+ await bee.expression.asInvocation().invokedFunctionNameCell.click();
await page.keyboard.type(`Affordability calculation`);
await page.keyboard.press("Enter");
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/list/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/list/populate.spec.ts
index 152f463d285..7760a26c68d 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/list/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/list/populate.spec.ts
@@ -22,11 +22,11 @@ import { test, expect } from "../../__fixtures__/base";
test.describe("Populate Boxed List", () => {
test("should correctly create an age group boxed list", async ({ stories,
bee, page, monaco }) => {
await stories.openBoxedList();
- await page.getByRole("cell", { name: "1" }).hover();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
+
+ await bee.expression.asList().addEntryAtTop();
+ await bee.expression.asList().addEntryAtTop();
+ await bee.expression.asList().addEntryAtTop();
+ await bee.expression.asList().addEntryAtTop();
await bee.expression.asList().row(0).selectExpressionMenu.selectLiteral();
await bee.expression.asList().row(1).selectExpressionMenu.selectLiteral();
@@ -34,11 +34,9 @@ test.describe("Populate Boxed List", () => {
await bee.expression.asList().row(3).selectExpressionMenu.selectLiteral();
await bee.expression.asList().row(4).selectExpressionMenu.selectLiteral();
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Age groups");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asList().expressionHeaderCell.open();
+ await bee.expression.asList().expressionHeaderCell.setName({ name: "Age
groups", close: false });
+ await bee.expression.asList().expressionHeaderCell.setDataType({ dataType:
"number", close: true });
await monaco.fill({ monacoParentLocator: page, nth: 0, content: "<18" });
await monaco.fill({ monacoParentLocator: page, nth: 1, content: "[18..30)"
});
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/literal/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/literal/populate.spec.ts
index 740028b74b2..442cb97221d 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/literal/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/literal/populate.spec.ts
@@ -22,11 +22,9 @@ import { test, expect } from "../../__fixtures__/base";
test.describe("Populate Boxed Literal", () => {
test("should correctly create a can drive boxed literal", async ({ stories,
page, bee, resizing, monaco }) => {
await stories.openBoxedLiteral();
- await page.getByRole("columnheader", { name: "Expression Name
(<Undefined>)" }).click();
- await page.getByPlaceholder("Expression Name").fill("Can drive?");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asLiteral().expressionHeaderCell.open();
+ await bee.expression.asLiteral().expressionHeaderCell.setName({ name: "Can
drive?", close: false });
+ await bee.expression.asLiteral().expressionHeaderCell.setDataType({
dataType: "boolean", close: true });
await monaco.fill({ monacoParentLocator: page, nth: 0, content: "Age >= 18
then true else false" });
await resizing.resizeCell(
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/relation/populate.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/relation/populate.spec.ts
index 423a42b6cfd..b0966f0543a 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/relation/populate.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/relation/populate.spec.ts
@@ -24,40 +24,29 @@ test.describe("Populate Relation", () => {
test("should correctly create a people relation", async ({ stories, page,
bee, resizing }) => {
await stories.openRelation();
- await page.getByRole("columnheader", { name: "column-1 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Name");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "string" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asRelation().columnHeaderAtIndex(1).open();
+ await bee.expression.asRelation().columnHeaderAtIndex(1).setName({ name:
"Name", close: false });
+ await bee.expression.asRelation().columnHeaderAtIndex(1).setDataType({
dataType: "string", close: true });
await resizing.resizeCell(
page.getByRole("columnheader", { name: "Name (string)" }),
{ x: 0, y: 0 },
{ x: 40, y: 0 }
);
- await page.getByRole("columnheader", { name: "Name (string)" }).hover();
- await page.getByRole("row", { name: "Name (string)"
}).locator("svg").click();
+ await bee.expression.asRelation().addColumnAtRightOfIndex(1);
- await page.getByRole("columnheader", { name: "column-2 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Age");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "number" }).click();
- await page.keyboard.press("Enter");
- await page.getByRole("columnheader", { name: "Age (number)" }).hover();
- await page.getByRole("row", { name: "Age (number)"
}).locator("svg").click();
+ await bee.expression.asRelation().columnHeaderAtIndex(2).open();
+ await bee.expression.asRelation().columnHeaderAtIndex(2).setName({ name:
"Age", close: false });
+ await bee.expression.asRelation().columnHeaderAtIndex(2).setDataType({
dataType: "number", close: true });
+ await bee.expression.asRelation().addColumnAtRightOfIndex(2);
- await page.getByRole("columnheader", { name: "column-3 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Country");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "string" }).click();
- await page.keyboard.press("Enter");
- await page.getByRole("columnheader", { name: "Country (string)" }).hover();
- await page.getByRole("row", { name: "Country (string)"
}).locator("svg").click();
+ await bee.expression.asRelation().columnHeaderAtIndex(3).open();
+ await bee.expression.asRelation().columnHeaderAtIndex(3).setName({ name:
"Country", close: false });
+ await bee.expression.asRelation().columnHeaderAtIndex(3).setDataType({
dataType: "string", close: true });
+ await bee.expression.asRelation().addColumnAtRightOfIndex(3);
- await page.getByRole("columnheader", { name: "column-4 (<Undefined>)"
}).click();
- await page.getByPlaceholder("Expression Name").fill("Married");
- await page.getByLabel("<Undefined>").click();
- await page.getByRole("option", { name: "boolean" }).click();
- await page.keyboard.press("Enter");
+ await bee.expression.asRelation().columnHeaderAtIndex(4).open();
+ await bee.expression.asRelation().columnHeaderAtIndex(4).setName({ name:
"Married", close: false });
+ await bee.expression.asRelation().columnHeaderAtIndex(4).setDataType({
dataType: "boolean", close: true });
test.info().annotations.push({
type: TestAnnotations.WORKAROUND_DUE_TO,
@@ -73,9 +62,8 @@ test.describe("Populate Relation", () => {
await page.getByPlaceholder("Expression Name").fill("People");
await page.keyboard.press("Enter");
- await page.getByRole("cell", { name: "1" }).hover();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
- await page.getByRole("cell", { name: "1" }).locator("svg").click();
+ await bee.expression.asRelation().addRowAtBellowOfRowAtIndex(1);
+ await bee.expression.asRelation().addRowAtBellowOfRowAtIndex(1);
await bee.expression.asRelation().fill({
startAtCell: 0,
diff --git
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/some/someExpression.spec.ts
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/some/someExpression.spec.ts
index 2cd2cc1202b..a1ab18d1482 100644
---
a/packages/boxed-expression-component/tests-e2e/boxedExpressions/some/someExpression.spec.ts
+++
b/packages/boxed-expression-component/tests-e2e/boxedExpressions/some/someExpression.spec.ts
@@ -45,4 +45,18 @@ test.describe("Create Boxed Some", () => {
expect((await
jsonModel.getSomeExpression()).in["@_id"]).not.toBeUndefined();
expect((await
jsonModel.getSomeExpression()).satisfies["@_id"]).not.toBeUndefined();
});
+
+ test("should commit variable by cell click", async ({ bee }) => {
+ test.info().annotations.push({
+ type: TestAnnotations.REGRESSION,
+ description:
"https://github.com/apache/incubator-kie-issues/issues/1158",
+ });
+
+ await bee.expression.asSome().variable.fill("Changed Variable Name");
+
+ // commit a change by a click to another cell
+ await bee.expression.asSome().in.elementCell.click();
+
+ await
expect(bee.getContainer()).toHaveScreenshot("boxed-some-commit-variable-by-cell-click.png");
+ });
});
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]