test: new test case for renaming JS Object (#38361)

## Description

This PR adds a test case for the bug:
https://github.com/appsmithorg/appsmith/issues/38207

This PR tests the issue where renaming a JS Object via the context menu
caused the focus to shift to another tab in the editor.

Changes:

- Added test cases to validate that focus remains on the current tab
while renaming JS Objects.
- Verified the functionality by renaming multiple JS Objects and
ensuring the changes are reflected without altering tab focus.


## Automation

/ok-to-test tags="@tag.JS"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/12492186342>
> Commit: 5611d13c3a8d6fd26598a463b25e370e381323f5
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12492186342&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.JS`
> Spec:
> <hr>Wed, 25 Dec 2024 11:16:53 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a method to rename JavaScript objects via the context menu
in the JSEditor.
	- Added a property for referencing the list of JavaScript objects.

- **Tests**
- Implemented a new test suite to validate the renaming functionality
and ensure focus remains on the correct tab during the process.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
shadabbuchh 2024-12-25 16:53:44 +05:30 committed by GitHub
parent 0c1a1d8ee4
commit 199233be47
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,30 @@
import { jsEditor } from "../../../../support/Objects/ObjectsCore";
describe(
"To test [Bug]: Action redesign: Focus shifts to another tab when renaming a JSObject #38207",
{ tags: ["@tag.JS"] },
() => {
it("1. Validate that focus does not shift to another tab while renaming JS Objects from the context menu", () => {
// Create first JS file
jsEditor.CreateJSObject("", { prettify: false, toRun: false });
// Rename the first JS Object
jsEditor.RenameJSObjectFromContextMenu("ChangedName1");
// Validate the new name of the JS Object
cy.get(jsEditor.listOfJsObjects).eq(0).contains("ChangedName1");
// Create second JS file
jsEditor.CreateJSObject("", { prettify: false, toRun: false });
// Create third JS file
jsEditor.CreateJSObject("", { prettify: false, toRun: false });
// Rename the third JS Object
jsEditor.RenameJSObjectFromContextMenu("ChangedName3");
// Validate the new name of the 3rd JS Objcte
cy.get(jsEditor.listOfJsObjects).eq(2).contains("ChangedName3");
});
},
);

View File

@ -36,6 +36,7 @@ export class JSEditor {
public settingsTriggerLocator = "[data-testid='t--js-settings-trigger']"; public settingsTriggerLocator = "[data-testid='t--js-settings-trigger']";
public contextMenuTriggerLocator = "[data-testid='t--more-action-trigger']"; public contextMenuTriggerLocator = "[data-testid='t--more-action-trigger']";
public runFunctionSelectLocator = "[data-testid='t--js-function-run']"; public runFunctionSelectLocator = "[data-testid='t--js-function-run']";
public listOfJsObjects = "[data-testid='t--tabs-container']>div>span";
public toolbar = new PluginEditorToolbar( public toolbar = new PluginEditorToolbar(
this.runButtonLocator, this.runButtonLocator,
@ -230,6 +231,13 @@ export class JSEditor {
PageLeftPane.assertPresence(renameVal); PageLeftPane.assertPresence(renameVal);
} }
public RenameJSObjectFromContextMenu(renameVal: string) {
cy.get(this.contextMenuTriggerLocator).click();
cy.contains("Rename").should("be.visible").click();
cy.get(this._jsObjTxt).clear().type(renameVal, { force: true }).blur();
PageLeftPane.assertPresence(renameVal);
}
public RenameJSObjFromExplorer(entityName: string, renameVal: string) { public RenameJSObjFromExplorer(entityName: string, renameVal: string) {
this.ee.ActionContextMenuByEntityName({ this.ee.ActionContextMenuByEntityName({
entityNameinLeftSidebar: entityName, entityNameinLeftSidebar: entityName,