diff --git a/app/client/cypress/e2e/Regression/ClientSide/JSObject/JSObject_Tests_spec.ts b/app/client/cypress/e2e/Regression/ClientSide/JSObject/JSObject_Tests_spec.ts new file mode 100644 index 000000000000..119a712d06c9 --- /dev/null +++ b/app/client/cypress/e2e/Regression/ClientSide/JSObject/JSObject_Tests_spec.ts @@ -0,0 +1,87 @@ +import HomePage from "../../../../locators/HomePage"; +import { + agHelper, + entityExplorer, + jsEditor, + propPane, + draggableWidgets, + locators, +} from "../../../../support/ee/ObjectsCore_EE"; +import EditorNavigation, { + PageLeftPane, + PagePaneSegment, +} from "../../../../support/Pages/EditorNavigation"; +import PageList from "../../../../support/Pages/PageList"; + +describe("Validate JSObj", {}, () => { + before(() => {}); + + it("1. Verify adding JSObject and more actions options", () => { + jsEditor.CreateJSObject( + `setInterval(() => { + showAlert("Hi", "error") + }, 2500, "Int")`, + { + paste: true, + completeReplace: false, + toRun: true, + shouldCreateNewJSObj: true, + }, + ); + jsEditor.EnableDisableAsyncFuncSettings("myFun1"); + + // Add new JSObject + PageList.AddNewPage("New blank page"); + PageLeftPane.switchSegment(PagePaneSegment.JS); + agHelper.GetNClick(locators._createNew); + agHelper.GetNClick(jsEditor._addJSObj); + agHelper.AssertContains("JSObject2", "exist", ".t--entity-name"); + agHelper.GetNClick(EditorNavigation.locators.MinimizeBtn); + EditorNavigation.CloseAnnouncementModal(); + agHelper.GetNClick(jsEditor._addJSObj); + agHelper.GetNClick(EditorNavigation.locators.MaximizeBtn); + agHelper.AssertContains("JSObject3", "exist", ".t--entity-name"); + + // Verify menu item + agHelper.GetNClick(jsEditor._jsPageActions, 0, true); + agHelper.AssertContains("Rename", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Show bindings", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Copy to page", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Move to page", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Delete", "exist", HomePage.portalMenuItem); + + agHelper.GetNClick(jsEditor._moreActions, 0, true); + agHelper.AssertContains("Rename", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Copy to page", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Move to page", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Prettify code", "exist", HomePage.portalMenuItem); + agHelper.AssertContains("Delete", "exist", HomePage.portalMenuItem); + }); + + it("2. Verify alert message on page load", () => { + // Verify alert message on page load + EditorNavigation.NavigateToPage("Page1", true); + agHelper.ValidateToastMessage("Hi"); + }); + + it("3. Verify moving JSObject to new page", () => { + // Verify Move to Page + agHelper.GetNClick(jsEditor._jsPageActions, 0, true); + agHelper.HoverElement( + `${HomePage.portalMenuItem}:contains("Move to page")`, + ); + agHelper.GetNClick(`${HomePage.portalMenuItem}:contains("Page2")`); + + // Verify 'Run on page load' on new page + agHelper.GetNClick(`.t--entity-name:contains("JSObject11")`); + jsEditor.VerifyAsyncFuncSettings("myFun1"); + }); + + it("4. Verify JSObject binding", () => { + PageLeftPane.switchSegment(PagePaneSegment.UI); + entityExplorer.DragDropWidgetNVerify(draggableWidgets.BUTTON, 500, 100); + propPane.EnterJSContext("onClick", "{{JSObject11.myFun1();}}", true, false); + agHelper.GetNClick(locators._widgetInDeployed("buttonwidget")); + agHelper.ValidateToastMessage("Hi"); + }); +}); diff --git a/app/client/cypress/limited-tests.txt b/app/client/cypress/limited-tests.txt index aa00835ffb0e..3870755535d9 100644 --- a/app/client/cypress/limited-tests.txt +++ b/app/client/cypress/limited-tests.txt @@ -1,5 +1,5 @@ # To run only limited tests - give the spec names in below format: -cypress/e2e/Regression/ClientSide/Templates/Fork_Template_spec.js +cypress/e2e/Regression/ClientSide/JSObject/JSObject_Tests_spec.ts # For running all specs - uncomment below: #cypress/e2e/**/**/* diff --git a/app/client/cypress/support/Pages/JSEditor.ts b/app/client/cypress/support/Pages/JSEditor.ts index 09802ef2d7e2..431f96c79e34 100644 --- a/app/client/cypress/support/Pages/JSEditor.ts +++ b/app/client/cypress/support/Pages/JSEditor.ts @@ -32,7 +32,7 @@ export class JSEditor { public ee = ObjectsRegistry.EntityExplorer; public propPane = ObjectsRegistry.PropertyPane; private assertHelper = ObjectsRegistry.AssertHelper; - public runButtonLocator = "[data-testid='t--run-js-action']"; + public runButtonLocator = ".run-js-action"; public settingsTriggerLocator = "[data-testid='t--js-settings-trigger']"; public contextMenuTriggerLocator = "[data-testid='t--more-action-trigger']"; public runFunctionSelectLocator = "[data-testid='t--js-function-run']"; @@ -89,6 +89,9 @@ export class JSEditor { "//div[@data-testid='t--query-run-confirmation-modal']//span[text()='" + text + "']"; + _addJSObj = '[data-testid="t--ide-tabs-add-button"]'; + _jsPageActions = ".entity-context-menu"; + _moreActions = '[data-testid="t--more-action-trigger"]'; //#endregion //#region constants