Upgrade to Cypress 12 (#4356)

This commit is contained in:
Erik Jan de Wit 2023-02-10 11:10:35 +01:00 committed by GitHub
parent ddc0b3ebaf
commit be95626cdd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 510 additions and 223 deletions

View file

@ -16,6 +16,7 @@ export default defineConfig({
videoCompression: false, videoCompression: false,
numTestsKeptInMemory: 30, numTestsKeptInMemory: 30,
videoUploadOnPasses: false, videoUploadOnPasses: false,
experimentalMemoryManagement: true,
retries: { retries: {
runMode: 3, runMode: 3,

View file

@ -13,8 +13,8 @@ describe("Policies", () => {
describe("OTP policies tab", () => { describe("OTP policies tab", () => {
const otpPoliciesPage = new OTPPolicies(); const otpPoliciesPage = new OTPPolicies();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToAuthentication(); sidebarPage.goToAuthentication();
otpPoliciesPage.goToTab(); otpPoliciesPage.goToTab();
}); });
@ -34,8 +34,8 @@ describe("Policies", () => {
describe("Webauthn policies tabs", () => { describe("Webauthn policies tabs", () => {
const webauthnPage = new WebAuthnPolicies(); const webauthnPage = new WebAuthnPolicies();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToAuthentication(); sidebarPage.goToAuthentication();
}); });

View file

@ -17,8 +17,8 @@ describe("Authentication - Policies - CIBA", () => {
after(() => adminClient.deleteRealm(realmName)); after(() => adminClient.deleteRealm(realmName));
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName); sidebarPage.goToRealm(realmName);
sidebarPage.goToAuthentication(); sidebarPage.goToAuthentication();
CIBAPolicyPage.goToTab(); CIBAPolicyPage.goToTab();

View file

@ -17,22 +17,21 @@ const masthead = new Masthead();
const sidebarPage = new SidebarPage(); const sidebarPage = new SidebarPage();
const commonPage = new CommonPage(); const commonPage = new CommonPage();
const listingPage = new ListingPage(); const listingPage = new ListingPage();
const realmName = "test" + crypto.randomUUID();
describe("Authentication test", () => { describe("Authentication test", () => {
const detailPage = new FlowDetails(); const detailPage = new FlowDetails();
const duplicateFlowModal = new DuplicateFlowModal(); const duplicateFlowModal = new DuplicateFlowModal();
const modalUtil = new ModalUtils(); const modalUtil = new ModalUtils();
before(() => { before(() => adminClient.createRealm(realmName));
cy.wrap(adminClient.createRealm("test"));
keycloakBefore();
loginPage.logIn();
sidebarPage.goToRealm("test");
});
after(() => adminClient.deleteRealm("test")); after(() => adminClient.deleteRealm(realmName));
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName);
sidebarPage.goToAuthentication(); sidebarPage.goToAuthentication();
}); });
@ -190,19 +189,17 @@ describe("Authentication test", () => {
describe("Required actions", () => { describe("Required actions", () => {
const requiredActionsPage = new RequiredActions(); const requiredActionsPage = new RequiredActions();
before(() => { before(() => adminClient.createRealm(realmName));
cy.wrap(adminClient.createRealm("test"));
keycloakBefore();
loginPage.logIn();
sidebarPage.goToRealm("test");
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName);
sidebarPage.goToAuthentication(); sidebarPage.goToAuthentication();
requiredActionsPage.goToTab(); requiredActionsPage.goToTab();
}); });
after(() => adminClient.deleteRealm("test")); after(() => adminClient.deleteRealm(realmName));
it("should enable delete account", () => { it("should enable delete account", () => {
const action = "Delete Account"; const action = "Delete Account";
@ -236,8 +233,8 @@ describe("Password policies tab", () => {
const passwordPoliciesPage = new PasswordPolicies(); const passwordPoliciesPage = new PasswordPolicies();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToAuthentication(); sidebarPage.goToAuthentication();
passwordPoliciesPage.goToTab(); passwordPoliciesPage.goToTab();
}); });

View file

@ -22,29 +22,29 @@ describe("Client authentication subtab", () => {
const permissionsSubTab = new PermissionsTab(); const permissionsSubTab = new PermissionsTab();
const clientId = "client-authentication-" + crypto.randomUUID(); const clientId = "client-authentication-" + crypto.randomUUID();
before(() => { before(() =>
keycloakBefore(); adminClient.createClient({
loginPage.logIn(); protocol: "openid-connect",
sidebarPage.goToClients(); clientId,
listingPage.searchItem(clientId).goToItemDetails(clientId); publicClient: false,
clientDetailsPage.goToAuthorizationTab(); authorizationServicesEnabled: true,
serviceAccountsEnabled: true,
cy.wrap( standardFlowEnabled: true,
adminClient.createClient({ })
protocol: "openid-connect", );
clientId,
publicClient: false,
authorizationServicesEnabled: true,
serviceAccountsEnabled: true,
standardFlowEnabled: true,
})
);
});
after(() => { after(() => {
adminClient.deleteClient(clientId); adminClient.deleteClient(clientId);
}); });
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClients();
listingPage.searchItem(clientId).goToItemDetails(clientId);
clientDetailsPage.goToAuthorizationTab();
});
it("Should update the resource server settings", () => { it("Should update the resource server settings", () => {
policiesSubTab.setPolicy("DISABLED").formUtils().save(); policiesSubTab.setPolicy("DISABLED").formUtils().save();
masthead.checkNotificationMessage("Resource successfully updated", true); masthead.checkNotificationMessage("Resource successfully updated", true);

View file

@ -12,13 +12,10 @@ describe("Client registration policies subtab", () => {
const sidebarPage = new SidebarPage(); const sidebarPage = new SidebarPage();
const clientRegistrationPage = new ClientRegistrationPage(); const clientRegistrationPage = new ClientRegistrationPage();
before(() => {
keycloakBefore();
loginPage.logIn();
sidebarPage.goToClients();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClients();
clientRegistrationPage.goToClientRegistrationTab(); clientRegistrationPage.goToClientRegistrationTab();
sidebarPage.waitForPageLoad(); sidebarPage.waitForPageLoad();
}); });

View file

@ -55,12 +55,9 @@ describe("Client Scopes test", () => {
}); });
describe("Client Scope filter list items", () => { describe("Client Scope filter list items", () => {
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClientScopes(); sidebarPage.goToClientScopes();
}); });
@ -134,12 +131,10 @@ describe("Client Scopes test", () => {
describe("Client Scope modify list items", () => { describe("Client Scope modify list items", () => {
const itemName = clientScopeName + 0; const itemName = clientScopeName + 0;
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClientScopes(); sidebarPage.goToClientScopes();
}); });
@ -198,12 +193,9 @@ describe("Client Scopes test", () => {
}); });
describe("Client Scope delete list items ", () => { describe("Client Scope delete list items ", () => {
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClientScopes(); sidebarPage.goToClientScopes();
}); });
@ -258,12 +250,9 @@ describe("Client Scopes test", () => {
}); });
describe("Client Scope creation", () => { describe("Client Scope creation", () => {
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClientScopes(); sidebarPage.goToClientScopes();
}); });

View file

@ -23,8 +23,6 @@ describe("Clients SAML tests", () => {
clientId: samlClientName, clientId: samlClientName,
publicClient: false, publicClient: false,
}); });
keycloakBefore();
loginPage.logIn();
}); });
after(() => { after(() => {
@ -32,6 +30,8 @@ describe("Clients SAML tests", () => {
}); });
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClients(); sidebarPage.goToClients();
listingPage.searchItem(samlClientName).goToItemDetails(samlClientName); listingPage.searchItem(samlClientName).goToItemDetails(samlClientName);
}); });
@ -63,8 +63,6 @@ describe("Clients SAML tests", () => {
clientId, clientId,
protocol: "saml", protocol: "saml",
}); });
keycloakBefore();
loginPage.logIn();
}); });
after(() => { after(() => {
@ -72,6 +70,8 @@ describe("Clients SAML tests", () => {
}); });
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClients(); sidebarPage.goToClients();
listingPage.searchItem(clientId).goToItemDetails(clientId); listingPage.searchItem(clientId).goToItemDetails(clientId);
cy.findByTestId("keysTab").click(); cy.findByTestId("keysTab").click();
@ -123,8 +123,6 @@ describe("Clients SAML tests", () => {
clientId, clientId,
protocol: "saml", protocol: "saml",
}); });
keycloakBefore();
loginPage.logIn();
}); });
after(() => { after(() => {
@ -132,6 +130,8 @@ describe("Clients SAML tests", () => {
}); });
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToClients(); sidebarPage.goToClients();
listingPage.searchItem(clientId).goToItemDetails(clientId); listingPage.searchItem(clientId).goToItemDetails(clientId);
}); });

View file

@ -69,8 +69,8 @@ describe("Clients test", () => {
}); });
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
commonPage.tableToolbarUtils().searchItem(clientId); commonPage.tableToolbarUtils().searchItem(clientId);
cy.intercept("/admin/realms/master/clients/*").as("fetchClient"); cy.intercept("/admin/realms/master/clients/*").as("fetchClient");
@ -232,12 +232,9 @@ describe("Clients test", () => {
}); });
describe("Client creation", () => { describe("Client creation", () => {
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
}); });
@ -438,7 +435,6 @@ describe("Clients test", () => {
it("Should fail to create imported client with empty ID", () => { it("Should fail to create imported client with empty ID", () => {
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
commonPage.masthead().closeAllAlertMessages();
cy.findByTestId("importClient").click(); cy.findByTestId("importClient").click();
cy.findByTestId("kc-client-id").click(); cy.findByTestId("kc-client-id").click();
cy.findByText("Save").click(); cy.findByText("Save").click();
@ -484,30 +480,19 @@ describe("Clients test", () => {
describe("Roles tab test", () => { describe("Roles tab test", () => {
const rolesTab = new ClientRolesTab(); const rolesTab = new ClientRolesTab();
let client: string; const client = "client_" + crypto.randomUUID();
before(() => { before(() =>
keycloakBefore(); adminClient.createClient({
loginPage.logIn(); clientId: client,
commonPage.sidebar().goToClients(); protocol: "openid-connect",
publicClient: false,
client = "client_" + crypto.randomUUID(); })
);
commonPage.tableToolbarUtils().createClient();
createClientPage
.selectClientType("openid-connect")
.fillClientData(client)
.continue()
.continue()
.save();
commonPage
.masthead()
.checkNotificationMessage("Client created successfully", true);
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
commonPage.tableToolbarUtils().searchItem(client); commonPage.tableToolbarUtils().searchItem(client);
commonPage.tableUtils().clickRowItemLink(client); commonPage.tableUtils().clickRowItemLink(client);
@ -696,12 +681,9 @@ describe("Clients test", () => {
const advancedTab = new AdvancedTab(); const advancedTab = new AdvancedTab();
let client: string; let client: string;
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
client = "client_" + crypto.randomUUID(); client = "client_" + crypto.randomUUID();
commonPage.tableToolbarUtils().createClient(); commonPage.tableToolbarUtils().createClient();
@ -814,9 +796,7 @@ describe("Clients test", () => {
const serviceAccountTab = new RoleMappingTab("user"); const serviceAccountTab = new RoleMappingTab("user");
const serviceAccountName = "service-account-client"; const serviceAccountName = "service-account-client";
before(() => { before(() =>
keycloakBefore();
loginPage.logIn();
adminClient.createClient({ adminClient.createClient({
protocol: "openid-connect", protocol: "openid-connect",
clientId: serviceAccountName, clientId: serviceAccountName,
@ -824,10 +804,12 @@ describe("Clients test", () => {
authorizationServicesEnabled: true, authorizationServicesEnabled: true,
serviceAccountsEnabled: true, serviceAccountsEnabled: true,
standardFlowEnabled: true, standardFlowEnabled: true,
}); })
}); );
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
}); });
@ -943,8 +925,8 @@ describe("Clients test", () => {
describe("Mapping tab", () => { describe("Mapping tab", () => {
const mappingClient = "mapping-client"; const mappingClient = "mapping-client";
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
commonPage.tableToolbarUtils().searchItem(mappingClient); commonPage.tableToolbarUtils().searchItem(mappingClient);
commonPage.tableUtils().clickRowItemLink(mappingClient); commonPage.tableUtils().clickRowItemLink(mappingClient);
@ -978,17 +960,17 @@ describe("Clients test", () => {
describe("Keys tab test", () => { describe("Keys tab test", () => {
const keysName = "keys-client"; const keysName = "keys-client";
before(() => { before(() =>
keycloakBefore();
loginPage.logIn();
adminClient.createClient({ adminClient.createClient({
protocol: "openid-connect", protocol: "openid-connect",
clientId: keysName, clientId: keysName,
publicClient: false, publicClient: false,
}); })
}); );
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
commonPage.tableToolbarUtils().searchItem(keysName); commonPage.tableToolbarUtils().searchItem(keysName);
commonPage.tableUtils().clickRowItemLink(keysName); commonPage.tableUtils().clickRowItemLink(keysName);
@ -1014,9 +996,9 @@ describe("Clients test", () => {
describe("Realm client", () => { describe("Realm client", () => {
const clientName = "master-realm"; const clientName = "master-realm";
before(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
commonPage.tableToolbarUtils().searchItem(clientName); commonPage.tableToolbarUtils().searchItem(clientName);
commonPage.tableUtils().clickRowItemLink(clientName); commonPage.tableUtils().clickRowItemLink(clientName);
@ -1045,15 +1027,19 @@ describe("Clients test", () => {
describe("Bearer only", () => { describe("Bearer only", () => {
const clientId = "bearer-only"; const clientId = "bearer-only";
before(() => { before(() =>
keycloakBefore();
loginPage.logIn();
adminClient.createClient({ adminClient.createClient({
clientId, clientId,
protocol: "openid-connect", protocol: "openid-connect",
publicClient: false, publicClient: false,
bearerOnly: true, bearerOnly: true,
}); })
);
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
commonPage.sidebar().goToClients(); commonPage.sidebar().goToClients();
cy.intercept("/admin/realms/master/clients/*").as("fetchClient"); cy.intercept("/admin/realms/master/clients/*").as("fetchClient");
commonPage.tableToolbarUtils().searchItem(clientId); commonPage.tableToolbarUtils().searchItem(clientId);

View file

@ -33,7 +33,7 @@ describe("Events tests", () => {
const eventsTestUser = { const eventsTestUser = {
eventsTestUserId: "", eventsTestUserId: "",
userRepresentation: { userRepresentation: {
username: "events-test", username: "events-test" + crypto.randomUUID(),
enabled: true, enabled: true,
credentials: [{ value: "events-test" }], credentials: [{ value: "events-test" }],
}, },
@ -53,8 +53,8 @@ describe("Events tests", () => {
describe("User events list", () => { describe("User events list", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToEvents(); sidebarPage.goToEvents();
}); });
@ -89,8 +89,8 @@ describe("Events tests", () => {
]; ];
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToEvents(); sidebarPage.goToEvents();
}); });
@ -106,6 +106,7 @@ describe("Events tests", () => {
masthead.signOut(); masthead.signOut();
loginPage.logIn(); loginPage.logIn();
cy.visit("/");
sidebarPage.goToEvents(); sidebarPage.goToEvents();
eventsPage.tabUtils().checkIsCurrentTab(EventsTab.UserEvents); eventsPage.tabUtils().checkIsCurrentTab(EventsTab.UserEvents);
@ -250,8 +251,8 @@ describe("Events tests", () => {
describe("Admin events list", () => { describe("Admin events list", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToEvents(); sidebarPage.goToEvents();
eventsPage.goToAdminEventsTab(); eventsPage.goToAdminEventsTab();
}); });
@ -288,8 +289,8 @@ describe("Events tests", () => {
const operationTypes = ["UPDATE"]; const operationTypes = ["UPDATE"];
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToEvents(); sidebarPage.goToEvents();
eventsPage.goToAdminEventsTab(); eventsPage.goToAdminEventsTab();
}); });
@ -361,8 +362,8 @@ describe("Events tests", () => {
describe("Search admin events", () => { describe("Search admin events", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToEvents(); sidebarPage.goToEvents();
eventsPage.goToAdminEventsTab(); eventsPage.goToAdminEventsTab();
}); });
@ -413,8 +414,8 @@ describe("Events tests", () => {
describe("Check more button opens auth and representation dialogs", () => { describe("Check more button opens auth and representation dialogs", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToEvents(); sidebarPage.goToEvents();
eventsPage.goToAdminEventsTab(); eventsPage.goToAdminEventsTab();
}); });

View file

@ -52,8 +52,8 @@ describe("Group test", () => {
after(() => adminClient.deleteGroups()); after(() => adminClient.deleteGroups());
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToGroups(); sidebarPage.goToGroups();
groupName = groupNamePrefix + crypto.randomUUID(); groupName = groupNamePrefix + crypto.randomUUID();
groupNames.push(groupName); groupNames.push(groupName);

View file

@ -36,8 +36,8 @@ describe("OIDC identity provider test", () => {
const secret = "123"; const secret = "123";
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToIdentityProviders(); sidebarPage.goToIdentityProviders();
}); });

View file

@ -35,12 +35,9 @@ describe("SAML identity provider test", () => {
describe("SAML identity provider creation", () => { describe("SAML identity provider creation", () => {
const samlProviderName = "saml"; const samlProviderName = "saml";
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToIdentityProviders(); sidebarPage.goToIdentityProviders();
}); });

View file

@ -41,8 +41,8 @@ describe("Identity provider test", () => {
const deleteSuccessMsg = "Provider successfully deleted."; const deleteSuccessMsg = "Provider successfully deleted.";
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToIdentityProviders(); sidebarPage.goToIdentityProviders();
}); });

View file

@ -26,8 +26,8 @@ const goToAcctMgtTest = () => {
describe("Masthead tests in desktop mode", () => { describe("Masthead tests in desktop mode", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
}); });
it("Test dropdown in desktop mode", () => { it("Test dropdown in desktop mode", () => {
@ -50,8 +50,8 @@ describe("Masthead tests in desktop mode", () => {
describe("Masthead tests with kebab menu", () => { describe("Masthead tests with kebab menu", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
masthead.setMobileMode(true); masthead.setMobileMode(true);
}); });

View file

@ -17,8 +17,8 @@ describe("Partial realm export", () => {
const realmSettings = new RealmSettings(); const realmSettings = new RealmSettings();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(REALM_NAME).goToRealmSettings(); sidebarPage.goToRealm(REALM_NAME).goToRealmSettings();
realmSettings.clickActionMenu(); realmSettings.clickActionMenu();
modal.open(); modal.open();

View file

@ -14,21 +14,19 @@ describe("Partial import test", () => {
const realmSettings = new RealmSettings(); const realmSettings = new RealmSettings();
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(TEST_REALM);
sidebarPage.goToRealmSettings(); sidebarPage.goToRealmSettings();
realmSettings.clickActionMenu(); realmSettings.clickActionMenu();
}); });
before(() => { before(() =>
cy.wrap(null).then(() => Promise.all([
Promise.all([ adminClient.createRealm(TEST_REALM),
adminClient.createRealm(TEST_REALM), adminClient.createRealm(TEST_REALM_2),
adminClient.createRealm(TEST_REALM_2), ])
]) );
);
keycloakBefore();
loginPage.logIn();
sidebarPage.goToRealm(TEST_REALM);
});
after(async () => { after(async () => {
await Promise.all([ await Promise.all([

View file

@ -21,8 +21,8 @@ const rolesTab = new ClientRolesTab();
describe("Realm roles test", () => { describe("Realm roles test", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealmRoles(); sidebarPage.goToRealmRoles();
}); });

View file

@ -16,6 +16,8 @@ describe("Realm settings client policies tab tests", () => {
const realmSettingsPage = new RealmSettingsPage(realmName); const realmSettingsPage = new RealmSettingsPage(realmName);
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage sidebarPage
.waitForPageLoad() .waitForPageLoad()
.goToRealm(realmName) .goToRealm(realmName)
@ -24,11 +26,7 @@ describe("Realm settings client policies tab tests", () => {
realmSettingsPage.goToClientPoliciesTab().goToClientPoliciesList(); realmSettingsPage.goToClientPoliciesTab().goToClientPoliciesList();
}); });
before(() => { before(() => adminClient.createRealm(realmName));
keycloakBefore();
adminClient.createRealm(realmName);
loginPage.logIn();
});
after(() => { after(() => {
adminClient.deleteRealm(realmName); adminClient.deleteRealm(realmName);

View file

@ -18,19 +18,15 @@ describe("Realm settings client profiles tab tests", () => {
const realmSettingsPage = new RealmSettingsPage(realmName); const realmSettingsPage = new RealmSettingsPage(realmName);
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.waitForPageLoad().goToRealm(realmName).goToRealmSettings(); sidebarPage.waitForPageLoad().goToRealm(realmName).goToRealmSettings();
realmSettingsPage.goToClientPoliciesTab().goToClientProfilesList(); realmSettingsPage.goToClientPoliciesTab().goToClientProfilesList();
}); });
before(() => { before(() => adminClient.createRealm(realmName));
keycloakBefore();
adminClient.createRealm(realmName);
loginPage.logIn();
});
after(async () => { after(() => adminClient.deleteRealm(realmName));
await adminClient.deleteRealm(realmName);
});
it("Go to client policies profiles tab", () => { it("Go to client policies profiles tab", () => {
realmSettingsPage.shouldDisplayProfilesTab(); realmSettingsPage.shouldDisplayProfilesTab();

View file

@ -18,8 +18,8 @@ describe("Realm settings events tab tests", () => {
const listingPage = new ListingPage(); const listingPage = new ListingPage();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName); sidebarPage.goToRealm(realmName);
}); });
@ -424,8 +424,8 @@ describe("Realm settings events tab tests", () => {
describe("Realm settings events tab tests", () => { describe("Realm settings events tab tests", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealmSettings(); sidebarPage.goToRealmSettings();
cy.findByTestId("rs-realm-events-tab").click(); cy.findByTestId("rs-realm-events-tab").click();
cy.findByTestId("rs-event-listeners-tab").click(); cy.findByTestId("rs-event-listeners-tab").click();

View file

@ -14,8 +14,8 @@ describe("Realm settings general tab tests", () => {
const realmName = "Realm_" + crypto.randomUUID(); const realmName = "Realm_" + crypto.randomUUID();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName); sidebarPage.goToRealm(realmName);
}); });

View file

@ -14,8 +14,8 @@ describe("Realm settings tabs tests", () => {
const realmName = "Realm_" + crypto.randomUUID(); const realmName = "Realm_" + crypto.randomUUID();
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName); sidebarPage.goToRealm(realmName);
}); });

View file

@ -26,17 +26,17 @@ describe("User profile tabs", () => {
const realmName = "Realm_" + crypto.randomUUID(); const realmName = "Realm_" + crypto.randomUUID();
const attributeName = "Test"; const attributeName = "Test";
before(() => { before(() =>
adminClient.createRealm(realmName, { adminClient.createRealm(realmName, {
attributes: { userProfileEnabled: "true" }, attributes: { userProfileEnabled: "true" },
}); })
keycloakBefore(); );
loginPage.logIn();
});
after(() => adminClient.deleteRealm(realmName)); after(() => adminClient.deleteRealm(realmName));
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName); sidebarPage.goToRealm(realmName);
sidebarPage.goToRealmSettings(); sidebarPage.goToRealmSettings();
}); });
@ -107,7 +107,7 @@ describe("User profile tabs", () => {
getAttributesGroupTab(); getAttributesGroupTab();
listingPage.deleteItem("Test"); listingPage.deleteItem("Test");
modalUtils.confirmModal(); modalUtils.confirmModal();
listingPage.itemExist("Test", false); listingPage.checkEmptyList();
}); });
}); });

View file

@ -20,9 +20,9 @@ const editedRealmName = "Edited-Test-realm-" + crypto.randomUUID();
const testDisabledName = "Test-Disabled"; const testDisabledName = "Test-Disabled";
describe("Realm tests", () => { describe("Realm tests", () => {
before(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
}); });
after(() => after(() =>
@ -113,6 +113,7 @@ describe("Realm tests", () => {
}); });
it("should change to Test realm", () => { it("should change to Test realm", () => {
sidebarPage.goToRealm(editedRealmName);
sidebarPage.getCurrentRealm().should("eq", editedRealmName); sidebarPage.getCurrentRealm().should("eq", editedRealmName);
sidebarPage sidebarPage

View file

@ -21,13 +21,11 @@ describe("Realm settings - User registration tab", () => {
const groupName = "The default group"; const groupName = "The default group";
before(() => { before(() => adminClient.createGroup(groupName));
adminClient.createGroup(groupName);
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealmSettings(); sidebarPage.goToRealmSettings();
userRegistration.goToTab(); userRegistration.goToTab();
}); });

View file

@ -16,9 +16,10 @@ const groupPage = new GroupPage();
describe("Sessions test", () => { describe("Sessions test", () => {
const admin = "admin"; const admin = "admin";
const client = "security-admin-console"; const client = "security-admin-console";
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToSessions(); sidebarPage.goToSessions();
}); });

View file

@ -55,8 +55,8 @@ const changeSuccessMsg =
describe("User Fed Kerberos tests", () => { describe("User Fed Kerberos tests", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToUserFederation(); sidebarPage.goToUserFederation();
}); });

View file

@ -74,8 +74,8 @@ const modifyDateMapper = "modify date";
describe("User Fed LDAP mapper tests", () => { describe("User Fed LDAP mapper tests", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToUserFederation(); sidebarPage.goToUserFederation();
}); });

View file

@ -77,8 +77,8 @@ const MsadAccountControlsMapper = "MSAD account controls";
describe("User Fed LDAP mapper tests", () => { describe("User Fed LDAP mapper tests", () => {
beforeEach(() => { beforeEach(() => {
keycloakBefore();
loginPage.logIn(); loginPage.logIn();
keycloakBefore();
sidebarPage.goToUserFederation(); sidebarPage.goToUserFederation();
}); });

View file

@ -97,12 +97,9 @@ const ldapTestFailMsg =
"Error when trying to connect to LDAP. See server.log for details. LDAP test error"; "Error when trying to connect to LDAP. See server.log for details. LDAP test error";
describe("User Federation LDAP tests", () => { describe("User Federation LDAP tests", () => {
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToUserFederation(); sidebarPage.goToUserFederation();
cy.intercept("GET", "/admin/realms/master").as("getProvider"); cy.intercept("GET", "/admin/realms/master").as("getProvider");
}); });

View file

@ -35,23 +35,21 @@ describe("User creation", () => {
let itemIdWithCred = "user_crud_cred"; let itemIdWithCred = "user_crud_cred";
const itemCredential = "Password"; const itemCredential = "Password";
before(() => { before(async () => {
for (let i = 0; i <= 2; i++) { for (let i = 0; i <= 2; i++) {
groupName += "_" + crypto.randomUUID(); groupName += "_" + crypto.randomUUID();
adminClient.createGroup(groupName); await adminClient.createGroup(groupName);
groupsList = [...groupsList, groupName]; groupsList = [...groupsList, groupName];
} }
keycloakBefore();
loginPage.logIn();
}); });
beforeEach(() => { beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToUsers(); sidebarPage.goToUsers();
}); });
after(() => { after(() => adminClient.deleteGroups());
adminClient.deleteGroups();
});
it("Go to create User page", () => { it("Go to create User page", () => {
createUserPage.goToCreateUser(); createUserPage.goToCreateUser();

View file

@ -23,12 +23,3 @@ import "./commands";
if (!Cypress.env("KEYCLOAK_SERVER")) { if (!Cypress.env("KEYCLOAK_SERVER")) {
Cypress.env("KEYCLOAK_SERVER", "http://localhost:8180"); Cypress.env("KEYCLOAK_SERVER", "http://localhost:8180");
} }
// Always preserve session related cookies.
Cypress.Cookies.defaults({
preserve: isSessionCookie,
});
function isSessionCookie({ name }: Cypress.Cookie) {
return name.startsWith("KEYCLOAK_") || name.startsWith("AUTH_SESSION_");
}

View file

@ -14,20 +14,30 @@ export default class LoginPage {
} }
logIn(userName = "admin", password = "admin") { logIn(userName = "admin", password = "admin") {
cy.get('[role="progressbar"]').should("not.exist"); cy.session(
cy.get(this.oldLoadContainer).should("not.exist"); [userName, password],
cy.get(this.loadContainer).should("not.exist"); () => {
cy.visit("/");
cy.get('[role="progressbar"]').should("not.exist");
cy.get(this.oldLoadContainer).should("not.exist");
cy.get(this.loadContainer).should("not.exist");
cy.get("body") cy.get("body")
.children() .children()
.then((children) => { .then((children) => {
if (children.length == 1) { if (children.length == 1) {
cy.get(this.userNameInput).type(userName); cy.get(this.userNameInput).type(userName);
cy.get(this.passwordInput).type(password); cy.get(this.passwordInput).type(password);
cy.get(this.submitBtn).click(); cy.get(this.submitBtn).click();
} }
}); });
cy.get('[role="progressbar"]').should("not.exist"); },
{
validate() {
cy.get('[role="progressbar"]').should("not.exist");
},
}
);
} }
} }

View file

@ -47,6 +47,7 @@ export default class Masthead extends CommonElements {
signOut() { signOut() {
this.userDropdown().click(); this.userDropdown().click();
cy.get("#sign-out").click(); cy.get("#sign-out").click();
Cypress.session.clearAllSavedSessions();
} }
accountManagement() { accountManagement() {

View file

@ -26,7 +26,7 @@ export default class FlowDetails {
const executionId = rowDetails.children().attr("data-id"); const executionId = rowDetails.children().attr("data-id");
cy.intercept( cy.intercept(
"POST", "POST",
`/admin/realms/test/authentication/executions/${executionId}/lower-priority` `/admin/realms/test*/authentication/executions/${executionId}/lower-priority`
).as("priority"); ).as("priority");
callback(); callback();
cy.wait("@priority"); cy.wait("@priority");

View file

@ -85,17 +85,17 @@ export default class ProviderSAMLSettings extends PageObject {
} }
public typeSsoServiceUrl(url: string) { public typeSsoServiceUrl(url: string) {
cy.findByTestId(this.ssoServiceUrl).click().clear().type(url); cy.findByTestId(this.ssoServiceUrl).clear().type(url);
return this; return this;
} }
public typeSingleLogoutServiceUrl(url: string) { public typeSingleLogoutServiceUrl(url: string) {
cy.findByTestId(this.singleLogoutServiceUrl).click().clear().type(url); cy.findByTestId(this.singleLogoutServiceUrl).clear().type(url);
return this; return this;
} }
public typeX509Certs(cert: string) { public typeX509Certs(cert: string) {
cy.findByTestId(this.validatingX509Certs).click().clear().type(cert); cy.findByTestId(this.validatingX509Certs).clear().type(cert);
return this; return this;
} }

View file

@ -19,6 +19,7 @@ export default class SessionsPage {
cy.findByTestId(this.actionDropdown).should("exist").click(); cy.findByTestId(this.actionDropdown).should("exist").click();
cy.findByTestId(this.revocationActionItem).should("exist").click(); cy.findByTestId(this.revocationActionItem).should("exist").click();
cy.findByTestId(this.setToNowButton).should("exist").click(); cy.findByTestId(this.setToNowButton).should("exist").click();
Cypress.session.clearAllSavedSessions();
} }
checkNotBeforeValueExists() { checkNotBeforeValueExists() {

View file

@ -102,7 +102,7 @@
"@types/react": "^17.0.53", "@types/react": "^17.0.53",
"@types/react-dom": "^17.0.18", "@types/react-dom": "^17.0.18",
"@vitejs/plugin-react": "^2.2.0", "@vitejs/plugin-react": "^2.2.0",
"cypress": "^11.2.0", "cypress": "^12.5.1",
"del": "^7.0.0", "del": "^7.0.0",
"jsdom": "^21.1.0", "jsdom": "^21.1.0",
"ldap-server-mock": "^6.0.1", "ldap-server-mock": "^6.0.1",

337
package-lock.json generated
View file

@ -100,7 +100,7 @@
"@types/react": "^17.0.53", "@types/react": "^17.0.53",
"@types/react-dom": "^17.0.18", "@types/react-dom": "^17.0.18",
"@vitejs/plugin-react": "^2.2.0", "@vitejs/plugin-react": "^2.2.0",
"cypress": "^11.2.0", "cypress": "^12.5.1",
"del": "^7.0.0", "del": "^7.0.0",
"jsdom": "^21.1.0", "jsdom": "^21.1.0",
"ldap-server-mock": "^6.0.1", "ldap-server-mock": "^6.0.1",
@ -111,6 +111,314 @@
"webpack": "^5.75.0" "webpack": "^5.75.0"
} }
}, },
"apps/admin-ui/node_modules/@types/node": {
"version": "14.18.36",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
"integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
"dev": true
},
"apps/admin-ui/node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true
},
"apps/admin-ui/node_modules/cli-truncate": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
"integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
"dev": true,
"dependencies": {
"slice-ansi": "^3.0.0",
"string-width": "^4.2.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"apps/admin-ui/node_modules/commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
"dev": true,
"engines": {
"node": ">= 6"
}
},
"apps/admin-ui/node_modules/cypress": {
"version": "12.5.1",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-12.5.1.tgz",
"integrity": "sha512-ZmCmJ3lsyeOpBfh410m5+AO2CO1AxAzFBt7k6/uVbNcrNZje1vdiwYTpj2ksPKg9mjr9lR6V8tmlDNMvr4H/YQ==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@cypress/request": "^2.88.10",
"@cypress/xvfb": "^1.2.4",
"@types/node": "^14.14.31",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
"arch": "^2.2.0",
"blob-util": "^2.0.2",
"bluebird": "^3.7.2",
"buffer": "^5.6.0",
"cachedir": "^2.3.0",
"chalk": "^4.1.0",
"check-more-types": "^2.24.0",
"cli-cursor": "^3.1.0",
"cli-table3": "~0.6.1",
"commander": "^5.1.0",
"common-tags": "^1.8.0",
"dayjs": "^1.10.4",
"debug": "^4.3.2",
"enquirer": "^2.3.6",
"eventemitter2": "6.4.7",
"execa": "4.1.0",
"executable": "^4.1.1",
"extract-zip": "2.0.1",
"figures": "^3.2.0",
"fs-extra": "^9.1.0",
"getos": "^3.2.1",
"is-ci": "^3.0.0",
"is-installed-globally": "~0.4.0",
"lazy-ass": "^1.6.0",
"listr2": "^3.8.3",
"lodash": "^4.17.21",
"log-symbols": "^4.0.0",
"minimist": "^1.2.6",
"ospath": "^1.2.2",
"pretty-bytes": "^5.6.0",
"proxy-from-env": "1.0.0",
"request-progress": "^3.0.0",
"semver": "^7.3.2",
"supports-color": "^8.1.1",
"tmp": "~0.2.1",
"untildify": "^4.0.0",
"yauzl": "^2.10.0"
},
"bin": {
"cypress": "bin/cypress"
},
"engines": {
"node": "^14.0.0 || ^16.0.0 || >=18.0.0"
}
},
"apps/admin-ui/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"apps/admin-ui/node_modules/execa": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
"integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
"dev": true,
"dependencies": {
"cross-spawn": "^7.0.0",
"get-stream": "^5.0.0",
"human-signals": "^1.1.1",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^4.0.0",
"onetime": "^5.1.0",
"signal-exit": "^3.0.2",
"strip-final-newline": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"apps/admin-ui/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
}
},
"apps/admin-ui/node_modules/get-stream": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
"dependencies": {
"pump": "^3.0.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"apps/admin-ui/node_modules/human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
"integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
"dev": true,
"engines": {
"node": ">=8.12.0"
}
},
"apps/admin-ui/node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"apps/admin-ui/node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"apps/admin-ui/node_modules/listr2": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
"integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
"dev": true,
"dependencies": {
"cli-truncate": "^2.1.0",
"colorette": "^2.0.16",
"log-update": "^4.0.0",
"p-map": "^4.0.0",
"rfdc": "^1.3.0",
"rxjs": "^7.5.1",
"through": "^2.3.8",
"wrap-ansi": "^7.0.0"
},
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"enquirer": ">= 2.3.0 < 3"
},
"peerDependenciesMeta": {
"enquirer": {
"optional": true
}
}
},
"apps/admin-ui/node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"apps/admin-ui/node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"dependencies": {
"path-key": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"apps/admin-ui/node_modules/onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"dependencies": {
"mimic-fn": "^2.1.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"apps/admin-ui/node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"apps/admin-ui/node_modules/slice-ansi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
"integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"astral-regex": "^2.0.0",
"is-fullwidth-code-point": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"apps/admin-ui/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"apps/admin-ui/node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"apps/admin-ui/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"apps/keycloak-server": { "apps/keycloak-server": {
"dependencies": { "dependencies": {
"@octokit/rest": "^19.0.7", "@octokit/rest": "^19.0.7",
@ -7130,6 +7438,7 @@
"integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"peer": true,
"dependencies": { "dependencies": {
"@cypress/request": "^2.88.10", "@cypress/request": "^2.88.10",
"@cypress/xvfb": "^1.2.4", "@cypress/xvfb": "^1.2.4",
@ -7185,19 +7494,22 @@
"version": "14.18.36", "version": "14.18.36",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
"integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
"dev": true "dev": true,
"peer": true
}, },
"node_modules/cypress/node_modules/bluebird": { "node_modules/cypress/node_modules/bluebird": {
"version": "3.7.2", "version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true "dev": true,
"peer": true
}, },
"node_modules/cypress/node_modules/cli-truncate": { "node_modules/cypress/node_modules/cli-truncate": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
"integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"slice-ansi": "^3.0.0", "slice-ansi": "^3.0.0",
"string-width": "^4.2.0" "string-width": "^4.2.0"
@ -7214,6 +7526,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
"dev": true, "dev": true,
"peer": true,
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
} }
@ -7222,13 +7535,15 @@
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true "dev": true,
"peer": true
}, },
"node_modules/cypress/node_modules/execa": { "node_modules/cypress/node_modules/execa": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
"integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"cross-spawn": "^7.0.0", "cross-spawn": "^7.0.0",
"get-stream": "^5.0.0", "get-stream": "^5.0.0",
@ -7252,6 +7567,7 @@
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"at-least-node": "^1.0.0", "at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0", "graceful-fs": "^4.2.0",
@ -7267,6 +7583,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"pump": "^3.0.0" "pump": "^3.0.0"
}, },
@ -7282,6 +7599,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
"integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
"dev": true, "dev": true,
"peer": true,
"engines": { "engines": {
"node": ">=8.12.0" "node": ">=8.12.0"
} }
@ -7291,6 +7609,7 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true, "dev": true,
"peer": true,
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@ -7300,6 +7619,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true, "dev": true,
"peer": true,
"engines": { "engines": {
"node": ">=8" "node": ">=8"
}, },
@ -7312,6 +7632,7 @@
"resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
"integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"cli-truncate": "^2.1.0", "cli-truncate": "^2.1.0",
"colorette": "^2.0.16", "colorette": "^2.0.16",
@ -7339,6 +7660,7 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true, "dev": true,
"peer": true,
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@ -7348,6 +7670,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"path-key": "^3.0.0" "path-key": "^3.0.0"
}, },
@ -7360,6 +7683,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"mimic-fn": "^2.1.0" "mimic-fn": "^2.1.0"
}, },
@ -7375,6 +7699,7 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"end-of-stream": "^1.1.0", "end-of-stream": "^1.1.0",
"once": "^1.3.1" "once": "^1.3.1"
@ -7385,6 +7710,7 @@
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
"integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"ansi-styles": "^4.0.0", "ansi-styles": "^4.0.0",
"astral-regex": "^2.0.0", "astral-regex": "^2.0.0",
@ -7399,6 +7725,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"emoji-regex": "^8.0.0", "emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0", "is-fullwidth-code-point": "^3.0.0",
@ -7413,6 +7740,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true, "dev": true,
"peer": true,
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@ -7422,6 +7750,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"has-flag": "^4.0.0" "has-flag": "^4.0.0"
}, },