diff --git a/cypress/e2e/models/migration/applicationinventory/analysis.ts b/cypress/e2e/models/migration/applicationinventory/analysis.ts index 0909d6065..a809f68f6 100644 --- a/cypress/e2e/models/migration/applicationinventory/analysis.ts +++ b/cypress/e2e/models/migration/applicationinventory/analysis.ts @@ -34,6 +34,7 @@ import { click, clickByText, clickTab, + clickWithin, doesExistSelector, doesExistText, inputText, @@ -454,7 +455,7 @@ export class Analysis extends Application { cy.get(".pf-v5-c-page__main-section") .eq(1) .within(() => { - click(kebabTopMenuButton); + clickWithin(kebabTopMenuButton, button); }); doesExistText("Import", rbacRules["Action menu"]["Import"]); doesExistText("Manage imports", rbacRules["Action menu"]["Manage imports"]); diff --git a/cypress/e2e/models/migration/applicationinventory/application.ts b/cypress/e2e/models/migration/applicationinventory/application.ts index 9e0df2e89..696e3d1c6 100644 --- a/cypress/e2e/models/migration/applicationinventory/application.ts +++ b/cypress/e2e/models/migration/applicationinventory/application.ts @@ -64,6 +64,7 @@ import { doesExistText, clickTab, clickItemInKebabMenu, + doesExistButton, } from "../../../../utils/utils"; import { applicationData, RbacValidationRules } from "../../../types/types"; import { kebabButton, rightSideMenu, sourceDropdown } from "../../../views/analysis.view"; @@ -343,14 +344,16 @@ export class Application { cy.contains("h2", "No tags available", { timeout: 2 * SEC }); } - static validateAssessButton(rbacRules: RbacValidationRules) { + public validateAssessButton(rbacRules: RbacValidationRules) { Application.open(); - doesExistSelector(assessAppButton, rbacRules["Assess"]); + performRowActionByIcon(this.name, kebabMenu); + doesExistButton(assessAppButton, rbacRules["Assess"]); } - static validateReviewButton(rbacRules: RbacValidationRules) { + public validateReviewButton(rbacRules: RbacValidationRules) { Application.open(); - doesExistSelector(reviewAppButton, rbacRules["Review"]); + performRowActionByIcon(this.name, kebabMenu); + doesExistButton(reviewAppButton, rbacRules["Review"]); } static validateCreateAppButton(rbacRules: RbacValidationRules) { @@ -398,10 +401,6 @@ export class Application { "Discard assessment/review", rbacRules["assessment applicable options"]["Discard assessment"] ); - doesExistText( - "Copy assessment", - rbacRules["assessment applicable options"]["Copy assessment"] - ); doesExistText( "Manage dependencies", rbacRules["assessment applicable options"]["Manage dependencies"] diff --git a/cypress/e2e/tests/rbac/architect.test.ts b/cypress/e2e/tests/rbac/architect.test.ts index 1bd765964..aef668bcd 100644 --- a/cypress/e2e/tests/rbac/architect.test.ts +++ b/cypress/e2e/tests/rbac/architect.test.ts @@ -18,20 +18,16 @@ limitations under the License. import { User } from "../../models/keycloak/users/user"; import { getRandomCredentialsData, getRandomUserData } from "../../../utils/data_utils"; import { UserArchitect } from "../../models/keycloak/users/userArchitect"; -import { deleteByList, getRandomApplicationData, login, logout } from "../../../utils/utils"; +import { getRandomApplicationData, login, logout } from "../../../utils/utils"; import { Analysis } from "../../models/migration/applicationinventory/analysis"; import { CredentialsSourceControlUsername } from "../../models/administration/credentials/credentialsSourceControlUsername"; import { CredentialType } from "../../types/constants"; import { Application } from "../../models/migration/applicationinventory/application"; -import { Stakeholders } from "../../models/migration/controls/stakeholders"; import { Assessment } from "../../models/migration/applicationinventory/assessment"; -import * as data from "../../../utils/data_utils"; describe(["@tier2", "@rhsso"], "Architect RBAC operations", function () { let userArchitect = new UserArchitect(getRandomUserData()); const application = new Assessment(getRandomApplicationData()); - let stakeholdersList: Array = []; - let stakeholderNameList: Array = []; let appCredentials = new CredentialsSourceControlUsername( getRandomCredentialsData(CredentialType.sourceControl) @@ -39,15 +35,9 @@ describe(["@tier2", "@rhsso"], "Architect RBAC operations", function () { before("Creating RBAC users, adding roles for them", function () { login(); - // Navigate to stakeholders control tab and create new stakeholder - const stakeholder = new Stakeholders(data.getEmail(), data.getFullName()); - stakeholder.create(); - stakeholdersList.push(stakeholder); - stakeholderNameList.push(stakeholder.name); - appCredentials.create(); application.create(); - application.perform_assessment("low", stakeholderNameList); + application.perform_review("low"); logout(); User.loginKeycloakAdmin(); userArchitect.create(); @@ -69,12 +59,12 @@ describe(["@tier2", "@rhsso"], "Architect RBAC operations", function () { it("Architect, validate assess application button", function () { //Architect is allowed to create applications - Application.validateAssessButton(this.rbacRules); + application.validateAssessButton(this.rbacRules); }); it("Architect, validate review application button", function () { //Architect is allowed to review applications - Application.validateReviewButton(this.rbacRules); + application.validateReviewButton(this.rbacRules); }); it("Architect, validate presence of import and manage imports", function () { @@ -104,7 +94,6 @@ describe(["@tier2", "@rhsso"], "Architect RBAC operations", function () { login(); appCredentials.delete(); application.delete(); - deleteByList(stakeholdersList); logout(); User.loginKeycloakAdmin(); userArchitect.delete(); diff --git a/cypress/e2e/tests/rbac/migrator.test.ts b/cypress/e2e/tests/rbac/migrator.test.ts index 7417fa26e..48ed4ffc0 100644 --- a/cypress/e2e/tests/rbac/migrator.test.ts +++ b/cypress/e2e/tests/rbac/migrator.test.ts @@ -18,20 +18,16 @@ limitations under the License. import { User } from "../../models/keycloak/users/user"; import { getRandomCredentialsData, getRandomUserData } from "../../../utils/data_utils"; import { UserMigrator } from "../../models/keycloak/users/userMigrator"; -import { deleteByList, getRandomApplicationData, login, logout } from "../../../utils/utils"; +import { getRandomApplicationData, login, logout } from "../../../utils/utils"; import { Analysis } from "../../models/migration/applicationinventory/analysis"; import { CredentialsSourceControlUsername } from "../../models/administration/credentials/credentialsSourceControlUsername"; import { CredentialType } from "../../types/constants"; import { Application } from "../../models/migration/applicationinventory/application"; import { Assessment } from "../../models/migration/applicationinventory/assessment"; -import { Stakeholders } from "../../models/migration/controls/stakeholders"; -import * as data from "../../../utils/data_utils"; describe(["@tier2", "@rhsso"], "Migrator RBAC operations", () => { let userMigrator = new UserMigrator(getRandomUserData()); const application = new Assessment(getRandomApplicationData()); - let stakeholdersList: Array = []; - let stakeholderNameList: Array = []; let appCredentials = new CredentialsSourceControlUsername( getRandomCredentialsData(CredentialType.sourceControl) @@ -40,15 +36,9 @@ describe(["@tier2", "@rhsso"], "Migrator RBAC operations", () => { before("Creating RBAC users, adding roles for them", () => { //Need to log in as admin and create simple app with known name to use it for tests login(); - // Navigate to stakeholders control tab and create new stakeholder - const stakeholder = new Stakeholders(data.getEmail(), data.getFullName()); - stakeholder.create(); - stakeholdersList.push(stakeholder); - stakeholderNameList.push(stakeholder.name); - appCredentials.create(); application.create(); - application.perform_assessment("low", stakeholderNameList); + application.perform_review("low"); logout(); //Logging in as keycloak admin to create migrator user and test it User.loginKeycloakAdmin(); @@ -71,12 +61,12 @@ describe(["@tier2", "@rhsso"], "Migrator RBAC operations", () => { it("Migrator, validate assess application button", function () { //Migrator is not allowed to create applications - Application.validateAssessButton(this.rbacRules); + application.validateAssessButton(this.rbacRules); }); it("Migrator, validate review application button", function () { //Migrator is not allowed to review applications - Application.validateReviewButton(this.rbacRules); + application.validateReviewButton(this.rbacRules); }); it("Migrator, validate presence of import and manage imports", function () { @@ -105,7 +95,6 @@ describe(["@tier2", "@rhsso"], "Migrator RBAC operations", () => { login(); appCredentials.delete(); application.delete(); - deleteByList(stakeholdersList); logout(); User.loginKeycloakAdmin(); userMigrator.delete(); diff --git a/cypress/e2e/types/constants.ts b/cypress/e2e/types/constants.ts index fb250956d..55df8a32e 100644 --- a/cypress/e2e/types/constants.ts +++ b/cypress/e2e/types/constants.ts @@ -83,8 +83,8 @@ export const suggestedAdoptionPlan = "Suggested adoption plan"; export const assessmentQuestionnaires = "Assessment questionnaires"; export const createAppButton = "#create-application"; -export const assessAppButton = "#assess-application"; -export const reviewAppButton = "#review-application"; +export const assessAppButton = "Assess"; +export const reviewAppButton = "Review"; export const analyzeAppButton = "#analyze-application"; export const duplicateMigrationWaveError = "Danger alert:The migration wave could not be created due to a conflict with an existing wave. Make sure the name and start/end dates are unique and try again."; diff --git a/cypress/e2e/views/analysis.view.ts b/cypress/e2e/views/analysis.view.ts index 15001b9e5..278fafb02 100644 --- a/cypress/e2e/views/analysis.view.ts +++ b/cypress/e2e/views/analysis.view.ts @@ -39,5 +39,5 @@ export const analysisDetails = "Analysis details"; export const analysisDetailsEditor = ".monaco-editor"; export const rightSideMenu = "#page-drawer-content"; export const enableAutomatedTagging = "input[name=autoTaggingEnabled]"; -export const kebabTopMenuButton = 'button[aria-label="Actions"]'; +export const kebabTopMenuButton = "#toolbar-kebab"; export const kebabButton = 'button[aria-label="Kebab toggle"]'; diff --git a/cypress/utils/utils.ts b/cypress/utils/utils.ts index 823052cf7..61158056a 100644 --- a/cypress/utils/utils.ts +++ b/cypress/utils/utils.ts @@ -1617,19 +1617,15 @@ export function writeGpgKey(git_key): void { } export function doesExistSelector(selector: string, isAccessible: boolean): void { - if (isAccessible) { - cy.get(selector).should("exist"); - } else { - cy.get(selector).should("not.exist"); - } + cy.get(selector).should(isAccessible ? "exist" : "not.exist"); } export function doesExistText(str: string, toBePresent: boolean): void { - if (toBePresent) { - cy.contains(str, { timeout: 120 * SEC }).should("exist"); - } else { - cy.contains(str, { timeout: 120 * SEC }).should("not.exist"); - } + cy.contains(str).should(toBePresent ? "exist" : "not.exist"); +} + +export function doesExistButton(str: string, toBePresent: boolean): void { + cy.contains(button, str).should(toBePresent ? "exist" : "not.exist"); } export function enableSwitch(selector: string): void {