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,
numTestsKeptInMemory: 30,
videoUploadOnPasses: false,
experimentalMemoryManagement: true,
retries: {
runMode: 3,

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -26,17 +26,17 @@ describe("User profile tabs", () => {
const realmName = "Realm_" + crypto.randomUUID();
const attributeName = "Test";
before(() => {
before(() =>
adminClient.createRealm(realmName, {
attributes: { userProfileEnabled: "true" },
});
keycloakBefore();
loginPage.logIn();
});
})
);
after(() => adminClient.deleteRealm(realmName));
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToRealm(realmName);
sidebarPage.goToRealmSettings();
});
@ -107,7 +107,7 @@ describe("User profile tabs", () => {
getAttributesGroupTab();
listingPage.deleteItem("Test");
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";
describe("Realm tests", () => {
before(() => {
keycloakBefore();
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
});
after(() =>
@ -113,6 +113,7 @@ describe("Realm tests", () => {
});
it("should change to Test realm", () => {
sidebarPage.goToRealm(editedRealmName);
sidebarPage.getCurrentRealm().should("eq", editedRealmName);
sidebarPage

View file

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

View file

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

View file

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

View file

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

View file

@ -77,8 +77,8 @@ const MsadAccountControlsMapper = "MSAD account controls";
describe("User Fed LDAP mapper tests", () => {
beforeEach(() => {
keycloakBefore();
loginPage.logIn();
keycloakBefore();
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";
describe("User Federation LDAP tests", () => {
before(() => {
keycloakBefore();
loginPage.logIn();
});
beforeEach(() => {
loginPage.logIn();
keycloakBefore();
sidebarPage.goToUserFederation();
cy.intercept("GET", "/admin/realms/master").as("getProvider");
});

View file

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

View file

@ -23,12 +23,3 @@ import "./commands";
if (!Cypress.env("KEYCLOAK_SERVER")) {
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,6 +14,10 @@ export default class LoginPage {
}
logIn(userName = "admin", password = "admin") {
cy.session(
[userName, password],
() => {
cy.visit("/");
cy.get('[role="progressbar"]').should("not.exist");
cy.get(this.oldLoadContainer).should("not.exist");
cy.get(this.loadContainer).should("not.exist");
@ -28,6 +32,12 @@ export default class LoginPage {
cy.get(this.submitBtn).click();
}
});
},
{
validate() {
cy.get('[role="progressbar"]').should("not.exist");
},
}
);
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

337
package-lock.json generated
View file

@ -100,7 +100,7 @@
"@types/react": "^17.0.53",
"@types/react-dom": "^17.0.18",
"@vitejs/plugin-react": "^2.2.0",
"cypress": "^11.2.0",
"cypress": "^12.5.1",
"del": "^7.0.0",
"jsdom": "^21.1.0",
"ldap-server-mock": "^6.0.1",
@ -111,6 +111,314 @@
"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": {
"dependencies": {
"@octokit/rest": "^19.0.7",
@ -7130,6 +7438,7 @@
"integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==",
"dev": true,
"hasInstallScript": true,
"peer": true,
"dependencies": {
"@cypress/request": "^2.88.10",
"@cypress/xvfb": "^1.2.4",
@ -7185,19 +7494,22 @@
"version": "14.18.36",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
"integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
"dev": true
"dev": true,
"peer": true
},
"node_modules/cypress/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
"dev": true,
"peer": true
},
"node_modules/cypress/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,
"peer": true,
"dependencies": {
"slice-ansi": "^3.0.0",
"string-width": "^4.2.0"
@ -7214,6 +7526,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
"dev": true,
"peer": true,
"engines": {
"node": ">= 6"
}
@ -7222,13 +7535,15 @@
"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
"dev": true,
"peer": true
},
"node_modules/cypress/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,
"peer": true,
"dependencies": {
"cross-spawn": "^7.0.0",
"get-stream": "^5.0.0",
@ -7252,6 +7567,7 @@
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"peer": true,
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
@ -7267,6 +7583,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
"peer": true,
"dependencies": {
"pump": "^3.0.0"
},
@ -7282,6 +7599,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
"integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
"dev": true,
"peer": true,
"engines": {
"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",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
"peer": true,
"engines": {
"node": ">=8"
}
@ -7300,6 +7619,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
"peer": true,
"engines": {
"node": ">=8"
},
@ -7312,6 +7632,7 @@
"resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
"integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
"dev": true,
"peer": true,
"dependencies": {
"cli-truncate": "^2.1.0",
"colorette": "^2.0.16",
@ -7339,6 +7660,7 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
"peer": true,
"engines": {
"node": ">=6"
}
@ -7348,6 +7670,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"peer": true,
"dependencies": {
"path-key": "^3.0.0"
},
@ -7360,6 +7683,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"peer": true,
"dependencies": {
"mimic-fn": "^2.1.0"
},
@ -7375,6 +7699,7 @@
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"peer": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@ -7385,6 +7710,7 @@
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
"integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"dev": true,
"peer": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"astral-regex": "^2.0.0",
@ -7399,6 +7725,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"peer": true,
"dependencies": {
"emoji-regex": "^8.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",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
"peer": true,
"engines": {
"node": ">=6"
}
@ -7422,6 +7750,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},