-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test: Editor tests for renaming, copying, moving, and deleting APIs #38896
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
import { | ||
agHelper, | ||
debuggerHelper, | ||
homePage, | ||
} from "../../../../support/Objects/ObjectsCore"; | ||
import { apiPage } from "../../../../support/Objects/ObjectsCore"; | ||
import { | ||
PageLeftPane, | ||
PagePaneSegment, | ||
} from "../../../../support/Pages/EditorNavigation"; | ||
import FileTabs from "../../../../support/Pages/IDE/FileTabs"; | ||
import PageList from "../../../../support/Pages/PageList"; | ||
|
||
describe( | ||
"Additional API tests", | ||
{ tags: ["@tag.Datasource", "@tag.Git"] }, | ||
() => { | ||
it("1. Validate renaming & copying API from editor", () => { | ||
// Create first API | ||
apiPage.CreateApi(); | ||
// Rename the API | ||
apiPage.renameFromEditor("changedName"); | ||
// Create second API | ||
apiPage.CreateApi("secondApi", "GET"); | ||
// Add a new blank page to the application | ||
PageList.AddNewPage("New blank page"); | ||
// Copy the API to the same page | ||
apiPage.performActionFromEditor("copy", "changedName", "Page1", "Page1"); | ||
// Copy the API to a different page | ||
apiPage.performActionFromEditor("copy", "secondApi", "Page1", "Page2"); | ||
}); | ||
|
||
it("2. Validate moving & deleting API from editor", () => { | ||
// Create a new application | ||
homePage.NavigateToHome(); | ||
homePage.CreateNewApplication(); | ||
// Create first API | ||
apiPage.CreateApi("ApiToBeMoved", "GET"); | ||
apiPage.CreateApi("ApiNotToBeMoved", "GET"); | ||
// Having only one page in the app, check if the API is moved to the same page | ||
apiPage.performActionFromEditor("move", "ApiToBeMoved", "Page1", "Page1"); | ||
// Add a new blank page to the application | ||
PageList.AddNewPage("New blank page"); | ||
// Move the API to a different page & check if the source page does not have the API anymore | ||
apiPage.performActionFromEditor("move", "ApiToBeMoved", "Page1", "Page2"); | ||
apiPage.performActionFromEditor("move", "ApiToBeMoved", "Page2", "Page1"); | ||
apiPage.deleteAPIFromEditor("ApiToBeMoved", "Page1"); | ||
}); | ||
Comment on lines
+33
to
+48
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add assertions to verify API move and delete operations. Add assertions after each operation to verify the expected state: // After moving API within same page
PageLeftPane.assertPresence("ApiToBeMoved");
// After moving API to different page
PageLeftPane.assertNotPresence("ApiToBeMoved", "Page1");
PageLeftPane.assertPresence("ApiToBeMoved", "Page2");
// After deleting API
PageLeftPane.assertNotPresence("ApiToBeMoved", "Page1"); |
||
|
||
it("3. Validate whether correct tab opens up after clicking on link from logs", () => { | ||
// Create a new application | ||
homePage.NavigateToHome(); | ||
homePage.CreateNewApplication(); | ||
for (let i = 0; i < 4; i++) { | ||
apiPage.CreateApi(``, "GET"); | ||
} | ||
debuggerHelper.OpenDebugger(); | ||
//Navigate to the "Logs" tab in the debugger | ||
debuggerHelper.ClickLogsTab(); | ||
// Click on the entity link in the log entry at index 2 | ||
debuggerHelper.ClicklogEntityLink(false, 2); | ||
// Assert that the correct tab ("Api3") opens | ||
agHelper.AssertClassExists(FileTabs.locators.tabName("Api3"), "active"); | ||
Comment on lines
+61
to
+63
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Avoid hardcoded index in log selection. The test relies on a hardcoded index (2) which makes it brittle. Consider using a more reliable way to identify the correct log entry, such as searching for specific content or using test data attributes. |
||
}); | ||
|
||
it("4. Validate whether closed tab opens up after clicking on link from logs", () => { | ||
// Close all the tabs (Api1 to Api4) | ||
for (let i = 1; i < 5; i++) { | ||
FileTabs.closeTab(`Api${i}`); | ||
} | ||
// Switch to the "UI" segment in the page left pane | ||
PageLeftPane.switchSegment(PagePaneSegment.UI); | ||
debuggerHelper.OpenDebugger(); | ||
// Navigate to the "Logs" tab in the debugger | ||
debuggerHelper.ClickLogsTab(); | ||
// Click on the entity link in the log entry at index 1 | ||
debuggerHelper.ClicklogEntityLink(false, 1); | ||
// Assert that the correct tab ("Api2") reopens | ||
agHelper.AssertClassExists(FileTabs.locators.tabName("Api2"), "active"); | ||
Comment on lines
+77
to
+79
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Avoid hardcoded index in log selection. Similar to the previous test, using a hardcoded index (1) makes the test brittle. Consider a more reliable way to identify the correct log entry. |
||
}); | ||
}, | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Add PageLeftPane assertions after API copy operations
Add the following verifications:
🔗 Analysis chain
Add assertions for API presence after copy operations.
The test should verify that the copied API exists in both source and target pages.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 114
Script:
Length of output: 2086
Script:
Length of output: 230
Script:
Length of output: 13943