Masthead new tests & refactoring (#4439)

This commit is contained in:
ikhomyn 2023-02-21 14:41:33 +01:00 committed by GitHub
parent ce7e3ec9ea
commit fed9f2716d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 99 additions and 49 deletions

View file

@ -1,4 +1,3 @@
import ListingPage from "../support/pages/admin-ui/ListingPage";
import LoginPage from "../support/pages/LoginPage";
import SidebarPage from "../support/pages/admin-ui/SidebarPage";
import Masthead from "../support/pages/admin-ui/Masthead";
@ -6,61 +5,69 @@ import { keycloakBefore } from "../support/util/keycloak_hooks";
const loginPage = new LoginPage();
const masthead = new Masthead();
const listingPage = new ListingPage();
const sidebarPage = new SidebarPage();
const helpLabel = ".pf-c-form__group-label-help";
const logOutTest = () => {
describe("Masthead tests", () => {
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
});
describe("Desktop view", () => {
it("Go to account console and back to admin console", () => {
sidebarPage.waitForPageLoad();
masthead.accountManagement();
cy.get("h1").contains("Welcome to Keycloak account management");
masthead.goToAdminConsole();
masthead.checkIsAdminUI();
});
it("Sign out reachs to log in screen", () => {
sidebarPage.waitForPageLoad();
masthead.signOut();
sidebarPage.waitForPageLoad();
loginPage.isLogInPage();
};
const goToAcctMgtTest = () => {
sidebarPage.waitForPageLoad();
masthead.accountManagement();
cy.get("h1").contains("Welcome to Keycloak account management");
cy.get("#landingReferrerLink").click({ force: true });
masthead.checkIsAdminUI();
};
describe("Masthead tests in desktop mode", () => {
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
});
it("Test dropdown in desktop mode", () => {
goToAcctMgtTest();
it("Go to realm info", () => {
sidebarPage.goToClients();
masthead.toggleUsernameDropdown().clickRealmInfo();
cy.get(".pf-c-card__title").should("contain.text", "Server info");
});
sidebarPage.goToClientScopes();
listingPage.goToItemDetails("address");
cy.get("#view-header-subkey").should("exist");
cy.findByTestId("help-label-name").should("exist");
it("Should go to documentation page", () => {
masthead.clickGlobalHelp();
masthead.clickDocumentationLink();
cy.get("#header").should("contain.text", "Server Administration Guide");
});
it("Enable/disable help mode in desktop mode", () => {
masthead.assertIsDesktopView();
cy.get(helpLabel).should("exist");
masthead.toggleGlobalHelp();
masthead.clickGlobalHelp();
cy.get(helpLabel).should("not.exist");
masthead.toggleGlobalHelp();
cy.get(helpLabel).should("exist");
});
});
cy.get("#view-header-subkey").should("not.exist");
cy.findByTestId("help-label-name").should("not.exist");
describe("Mobile view", () => {
it("Mobile menu is shown when in mobile view", () => {
cy.viewport("samsung-s10");
masthead.assertIsMobileView();
});
logOutTest();
it("Enable/disable help mode in mobile view", () => {
cy.viewport("samsung-s10");
masthead
.assertIsMobileView()
.toggleUsernameDropdown()
.toggleMobileViewHelp();
cy.get(helpLabel).should("not.exist");
masthead.toggleMobileViewHelp();
cy.get(helpLabel).should("exist");
});
});
});
describe("Masthead tests with kebab menu", () => {
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
masthead.setMobileMode(true);
});
it("Test dropdown in mobile mode", () => {
masthead.checkKebabShown();
goToAcctMgtTest();
logOutTest();
});
// TODO: Add test for help when using kebab menu.
// Feature not yet implemented for kebab.
});

View file

@ -10,6 +10,9 @@ export default class Masthead extends CommonElements {
private userDrpDwn = "#user-dropdown";
private userDrpDwnKebab = "#user-dropdown-kebab";
private globalAlerts = "global-alerts";
private documentationLink = "#link";
private backToAdminConsoleLink = "#landingReferrerLink";
private userDrpdwnItem = ".pf-c-dropdown__menu-item";
private getAlertsContainer() {
return cy.findByTestId(this.globalAlerts);
@ -35,6 +38,39 @@ export default class Masthead extends CommonElements {
cy.get("#enableHelp").click({ force: true });
}
toggleUsernameDropdown() {
this.userDropdown().click();
return this;
}
toggleMobileViewHelp() {
cy.get(this.userDrpdwnItem).contains("Help").click();
return this;
}
clickRealmInfo() {
cy.get(this.userDrpdwnItem).contains("Realm info").click();
return this;
}
clickGlobalHelp() {
cy.get(this.helpBtn).click();
return this;
}
clickDocumentationLink() {
cy.get(this.documentationLink)
.find("a")
.invoke("removeAttr", "target")
.click();
return this;
}
goToAdminConsole() {
cy.get(this.backToAdminConsoleLink).click({ force: true });
return this;
}
userDropdown() {
return cy
.document()
@ -45,13 +81,13 @@ export default class Masthead extends CommonElements {
}
signOut() {
this.userDropdown().click();
this.toggleUsernameDropdown();
cy.get("#sign-out").click();
Cypress.session.clearAllSavedSessions();
}
accountManagement() {
this.userDropdown().click();
this.toggleUsernameDropdown();
cy.get("#manage-account").click();
}
@ -83,9 +119,16 @@ export default class Masthead extends CommonElements {
return this;
}
checkKebabShown() {
assertIsDesktopView() {
cy.get(this.userDrpDwn).should("be.visible");
cy.get(this.userDrpDwnKebab).should("not.be.visible");
return this;
}
assertIsMobileView() {
cy.get(this.userDrpDwn).should("not.be.visible");
cy.get(this.userDrpDwnKebab).should("exist");
cy.get(this.userDrpDwnKebab).should("be.visible");
return this;
}