Align TypeScript code with Node.js requirements (#41731) (#41747)

(cherry picked from commit 1f1ac2fc398fec83b1c40c3a10f8e4a4d0184406)

Signed-off-by: Jon Koops <jonkoops@gmail.com>
This commit is contained in:
Jon Koops 2025-08-08 14:33:54 +02:00 committed by GitHub
parent 776cc45a7c
commit 35f34bd9f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
131 changed files with 670 additions and 595 deletions

View File

@ -1,5 +1,5 @@
import { test, expect } from "@playwright/test";
import { login } from "./login";
import { login } from "./login.ts";
test("Check page heading", async ({ page }) => {
await login(page, "alice", "alice", "user-profile");

View File

@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test";
import { login } from "../login";
import { login } from "../login.ts";
test.describe("Sign out test", () => {
test("Sign out one device", async ({ browser }) => {

View File

@ -1,6 +1,6 @@
import ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation";
import IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation";
import { Page, expect, test } from "@playwright/test";
import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation.js";
import type IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation.js";
import { type Page, expect, test } from "@playwright/test";
import {
createClient,
@ -10,9 +10,9 @@ import {
deleteIdentityProvider,
deleteUser,
findClientByClientId,
} from "../admin-client";
import { SERVER_URL } from "../constants";
import groupsIdPClient from "../realms/groups-idp.json" assert { type: "json" };
} from "../admin-client.ts";
import { SERVER_URL } from "../constants.ts";
import groupsIdPClient from "../realms/groups-idp.json" with { type: "json" };
const realm = "groups";

View File

@ -5,10 +5,10 @@ import {
deleteCredential,
deleteRealm,
importRealm,
} from "../admin-client";
import { login } from "../login";
import groupsRealm from "../realms/groups-realm.json" assert { type: "json" };
import RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation";
} from "../admin-client.ts";
import { login } from "../login.ts";
import groupsRealm from "../realms/groups-realm.json" with { type: "json" };
import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation.js";
const realm = "groups";
test.describe("Signing in", () => {

View File

@ -1,11 +1,11 @@
import KeycloakAdminClient from "@keycloak/keycloak-admin-client";
import ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation";
import IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation";
import RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation";
import type { UserProfileConfig } from "@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata";
import UserRepresentation from "@keycloak/keycloak-admin-client/lib/defs/userRepresentation";
import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation.js";
import type IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation.js";
import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation.js";
import type { UserProfileConfig } from "@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata.js";
import type UserRepresentation from "@keycloak/keycloak-admin-client/lib/defs/userRepresentation.js";
import { DEFAULT_REALM, SERVER_URL } from "./constants";
import { DEFAULT_REALM, SERVER_URL } from "./constants.ts";
const adminClient = new KeycloakAdminClient({
baseUrl: SERVER_URL,

View File

@ -1,6 +1,6 @@
import { expect, test } from "@playwright/test";
import { login } from "./login";
import { getAccountUrl, getAdminUrl, getRootPath } from "./utils";
import { login } from "./login.ts";
import { getAccountUrl, getAdminUrl, getRootPath } from "./utils.ts";
test.describe("Applications test", () => {
test.beforeEach(async ({ page }) => {

View File

@ -1,5 +1,5 @@
import { test, expect } from "@playwright/test";
import { login } from "./login";
import { login } from "./login.ts";
test.describe("Groups page", () => {
test("List my groups", async ({ page }) => {

View File

@ -1,7 +1,7 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
import { ADMIN_PASSWORD, ADMIN_USER, DEFAULT_REALM } from "./constants";
import { getRootPath } from "./utils";
import { ADMIN_PASSWORD, ADMIN_USER, DEFAULT_REALM } from "./constants.ts";
import { getRootPath } from "./utils.ts";
export const login = async (
page: Page,

View File

@ -1,5 +1,5 @@
import { test, expect } from "@playwright/test";
import { login } from "./login";
import { login } from "./login.ts";
test.describe("My resources page", () => {
test.describe.configure({ mode: "serial" });

View File

@ -1,5 +1,5 @@
import { expect, test } from "@playwright/test";
import { login } from "../login";
import { login } from "../login.ts";
const realm = "verifiable-credentials";

View File

@ -1,13 +1,13 @@
import type { UserProfileConfig } from "@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata";
import type { UserProfileConfig } from "@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata.js";
import { expect, test } from "@playwright/test";
import {
createRandomUserWithPassword,
deleteUser,
enableLocalization,
importUserProfile,
} from "../admin-client";
import { login } from "../login";
import userProfileConfig from "./user-profile.json" assert { type: "json" };
} from "../admin-client.ts";
import { login } from "../login.ts";
import userProfileConfig from "./user-profile.json" with { type: "json" };
const realm = "user-profile";

View File

@ -1,11 +1,11 @@
import RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation";
import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation.js";
import { test as setup } from "@playwright/test";
import { importRealm } from "./admin-client";
import groupsRealm from "./realms/groups-realm.json" assert { type: "json" };
import resourcesRealm from "./realms/resources-realm.json" assert { type: "json" };
import userProfileRealm from "./realms/user-profile-realm.json" assert { type: "json" };
import verifiableCredentialsRealm from "./realms/verifiable-credentials-realm.json" assert { type: "json" };
import { importRealm } from "./admin-client.ts";
import groupsRealm from "./realms/groups-realm.json" with { type: "json" };
import resourcesRealm from "./realms/resources-realm.json" with { type: "json" };
import userProfileRealm from "./realms/user-profile-realm.json" with { type: "json" };
import verifiableCredentialsRealm from "./realms/verifiable-credentials-realm.json" with { type: "json" };
setup("import realm", async () => {
await importRealm(groupsRealm as RealmRepresentation);

View File

@ -1,5 +1,5 @@
import { test as setup } from "@playwright/test";
import { deleteRealm } from "./admin-client";
import { deleteRealm } from "./admin-client.ts";
setup("delete realm", async () => {
await deleteRealm("photoz");

View File

@ -1,8 +1,8 @@
import { expect, test } from "@playwright/test";
import { ADMIN_PASSWORD, ADMIN_USER, DEFAULT_REALM } from "./constants";
import { login } from "./login";
import { getAdminUrl } from "./utils";
import { ADMIN_PASSWORD, ADMIN_USER, DEFAULT_REALM } from "./constants.ts";
import { login } from "./login.ts";
import { getAdminUrl } from "./utils.ts";
test.describe("Signing in with referrer link", () => {
test("shows a referrer link when a matching client exists", async ({

View File

@ -0,0 +1,11 @@
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"erasableSyntaxOnly": true
}
}

View File

@ -1,6 +1,6 @@
import { generatePath } from "react-router-dom";
import { DEFAULT_REALM, ROOT_PATH, SERVER_URL } from "./constants";
import { DEFAULT_REALM, ROOT_PATH, SERVER_URL } from "./constants.ts";
export function getAccountUrl() {
return SERVER_URL + getRootPath();

View File

@ -1,6 +1,6 @@
import { Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form";
import { confirmModal } from "../utils/modal";
import { type Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
import { confirmModal } from "../utils/modal.ts";
export async function fillDuplicateFlowModal(
page: Page,
@ -61,7 +61,7 @@ export async function assertRowExists(page: Page, name: string, exists = true) {
if (exists) {
await expect(locator).toBeVisible();
} else {
await expect(locator).not.toBeVisible();
await expect(locator).toBeHidden();
}
}
@ -92,7 +92,7 @@ export async function goToCIBAPolicyTab(page: Page) {
await page.getByTestId("tab-ciba-policy").click();
}
export async function addPolicy(page: Page, value) {
export async function addPolicy(page: Page, value: string) {
await selectItem(page, page.getByTestId("add-policy"), value);
}

View File

@ -1,22 +1,22 @@
import { expect, test } from "@playwright/test";
import { v4 as uuidv4 } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertRequiredFieldError, clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { assertRequiredFieldError, clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
assertAxeViolations,
assertNotificationMessage,
selectActionToggleItem,
} from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToAuthentication, goToRealm } from "../utils/sidebar";
} from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToAuthentication, goToRealm } from "../utils/sidebar.ts";
import {
assertEmptyTable,
clickRowKebabItem,
clickTableRowItem,
getRowByCellText,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
addCondition,
addExecution,
@ -37,7 +37,7 @@ import {
goToPoliciesTab,
goToRequiredActions,
goToWebAuthnTab,
} from "./flow";
} from "./flow.ts";
test.describe("Authentication test", () => {
const realmName = `authentication-flow-${uuidv4()}`;
@ -56,7 +56,7 @@ test.describe("Authentication test", () => {
const itemId = "browser";
await searchItem(page, "Search for flow", itemId);
await expect(getRowByCellText(page, itemId)).toBeVisible();
await expect(getRowByCellText(page, "clients")).not.toBeVisible();
await expect(getRowByCellText(page, "clients")).toBeHidden();
});
test("should create duplicate of existing flow", async ({ page }) => {

View File

@ -1,14 +1,14 @@
import { test } from "@playwright/test";
import { v4 as uuidv4 } from "uuid";
import adminClient from "../utils/AdminClient";
import adminClient from "../utils/AdminClient.ts";
import {
assertFieldError,
assertRequiredFieldError,
clickSaveButton,
} from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToAuthentication, goToRealm } from "../utils/sidebar";
} from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToAuthentication, goToRealm } from "../utils/sidebar.ts";
import {
assertBackchannelTokenDeliveryMode,
assertExpiresInput,
@ -22,7 +22,7 @@ import {
setBackchannelTokenDeliveryMode,
setExpiresInput,
setIntervalInput,
} from "./policies-ciba";
} from "./policies-ciba.ts";
test.describe("Authentication - Policies - CIBA", () => {
const realmName = `authentication-policies-${uuidv4()}`;

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
export async function goToCIBAPolicyTab(page: Page) {
await page.getByTestId("policies").click();

View File

@ -1,10 +1,10 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToAuthentication, goToRealm } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToAuthentication, goToRealm } from "../utils/sidebar.ts";
import {
assertSupportedApplications,
fillSelects,
@ -14,7 +14,7 @@ import {
increaseInitialCounter,
setPolicyType,
setWebAuthnPolicyCreateTimeout,
} from "./policies";
} from "./policies.ts";
test.describe("OTP policies tab", () => {
const realmName = `policies-otp-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
export async function goToOTPPolicyTab(page: Page) {
await page.getByTestId("policies").click();

View File

@ -1,11 +1,11 @@
import { expect, test } from "@playwright/test";
import { v4 as uuidv4 } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertSaveButtonIsDisabled, clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToClientScopes } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { assertSaveButtonIsDisabled, clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToClientScopes } from "../utils/sidebar.ts";
import {
assertRowExists,
clickNextPageButton,
@ -13,7 +13,7 @@ import {
clickSelectRow,
getTableData,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
assertConsentInputIsVisible,
assertSwitchDisplayOnConsentScreenIsChecked,
@ -26,20 +26,20 @@ import {
selectSecondaryFilterAssignedType,
selectSecondaryFilterProtocol,
switchOffDisplayOnConsentScreen,
} from "./main";
} from "./main.ts";
enum FilterAssignedType {
AllTypes = "All types",
Default = "Default",
Optional = "Optional",
None = "None",
}
const FilterAssignedType = {
AllTypes: "All types",
Default: "Default",
Optional: "Optional",
None: "None",
};
enum FilterProtocol {
All = "All",
SAML = "SAML",
OpenID = "OpenID Connect",
}
const FilterProtocol = {
All: "All",
SAML: "SAML",
OpenID: "OpenID Connect",
};
test.describe("Client Scopes test", () => {
const clientScopeName = "client-scope-test";

View File

@ -1,6 +1,6 @@
import { Page, expect } from "@playwright/test";
import { assertSwitchIsChecked, selectItem, switchOff } from "../utils/form";
import { clickTableToolbarItem, getTableData } from "../utils/table";
import { type Page, expect } from "@playwright/test";
import { assertSwitchIsChecked, selectItem, switchOff } from "../utils/form.ts";
import { clickTableToolbarItem, getTableData } from "../utils/table.ts";
export async function selectClientScopeFilter(page: Page, value: string) {
await page.getByTestId("clientScopeSearch").click();
@ -79,7 +79,7 @@ export async function assertSwitchDisplayOnConsentScreenIsChecked(page: Page) {
export async function assertConsentInputIsVisible(page: Page, not = false) {
if (not) {
await expect(getConsentScreenTextInput(page)).not.toBeVisible();
await expect(getConsentScreenTextInput(page)).toBeHidden();
} else {
await expect(getConsentScreenTextInput(page)).toBeVisible();
}

View File

@ -1,10 +1,14 @@
import { test } from "@playwright/test";
import { v4 as uuidv4 } from "uuid";
import { clickCancelButton, clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToClientScopes } from "../utils/sidebar";
import { assertRowExists, clickTableRowItem, searchItem } from "../utils/table";
import { clickCancelButton, clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToClientScopes } from "../utils/sidebar.ts";
import {
assertRowExists,
clickTableRowItem,
searchItem,
} from "../utils/table.ts";
import {
addMappersByConfiguration,
addPredefinedMappers,
@ -13,8 +17,8 @@ import {
fillMapperDetails,
goToMappersTab,
removeMappers,
} from "./mappers";
import adminClient from "../utils/AdminClient";
} from "./mappers.ts";
import adminClient from "../utils/AdminClient.ts";
test.describe("Mappers tab test", () => {
const placeHolderClientScope = "Search for client scope";

View File

@ -1,25 +1,25 @@
import { Page, expect } from "@playwright/test";
import { type Page, expect } from "@playwright/test";
import {
assertSelectValue,
clickCancelButton,
clickSaveButton,
selectItem,
} from "../utils/form";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
} from "../utils/form.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import {
assertRowExists,
clickRowKebabItem,
clickSelectRow,
} from "../utils/table";
} from "../utils/table.ts";
export enum ClaimJsonType {
String = "String",
Long = "long",
Int = "int",
Boolean = "boolean",
Json = "JSON",
}
export const ClaimJsonType = {
String: "String",
Long: "long",
Int: "int",
Boolean: "boolean",
Json: "JSON",
};
export async function goToMappersTab(page: Page) {
await page.getByTestId("mappers").click();
@ -74,7 +74,7 @@ export async function fillMapperDetails(
page: Page,
userAttribute: string,
tokenClaimName: string,
jsonType: ClaimJsonType,
jsonType: string,
) {
await getUserAttribute(page).fill(userAttribute);
await getClaimName(page).fill(tokenClaimName);
@ -85,7 +85,7 @@ export async function assertMapperConfigurationValues(
page: Page,
userAttribute: string,
tokenClaimName: string,
jsonType: ClaimJsonType,
jsonType: string,
) {
await expect(getUserAttribute(page)).toHaveValue(userAttribute);
await expect(getClaimName(page)).toHaveValue(tokenClaimName);

View File

@ -1,17 +1,17 @@
import { expect, test } from "@playwright/test";
import { v4 as uuidv4 } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { assertModalTitle, confirmModal } from "../utils/modal";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { assertModalTitle, confirmModal } from "../utils/modal.ts";
import {
changeRoleTypeFilter,
clickHideInheritedRoles,
clickUnassign,
confirmModalAssign,
pickRole,
} from "../utils/roles";
import { goToClientScopes } from "../utils/sidebar";
} from "../utils/roles.ts";
import { goToClientScopes } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertRowExists,
@ -19,8 +19,8 @@ import {
clickTableRowItem,
getTableData,
searchItem,
} from "../utils/table";
import { assignRole, goToScopeTab } from "./scope";
} from "../utils/table.ts";
import { assignRole, goToScopeTab } from "./scope.ts";
test.describe("Scope tab test", () => {
const scopeName = `client-scope-mapper-${uuidv4()}`;

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function goToScopeTab(page: Page) {
await page.getByTestId("scopeTab").click();

View File

@ -1,9 +1,9 @@
import { test } from "@playwright/test";
import { v4 as uuidv4 } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { goToClients, goToRealm } from "../utils/sidebar";
import { assertEmptyTable, clickTableRowItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import { assertEmptyTable, clickTableRowItem } from "../utils/table.ts";
import {
assertAccessTokenSignatureAlgorithm,
assertAdvancedSwitchesOn,
@ -32,7 +32,7 @@ import {
switchOffExcludeSessionStateSwitch,
saveAuthFlowOverride,
revertAuthFlowOverride,
} from "./advanced";
} from "./advanced.ts";
test.describe("Advanced tab test", () => {
const clientId = `advanced-tab-${uuidv4()}`;

View File

@ -1,12 +1,12 @@
import { Page, expect } from "@playwright/test";
import { type Page, expect } from "@playwright/test";
import {
assertSelectValue,
selectItem,
switchOff,
switchOn,
} from "../utils/form";
import { confirmModal } from "../utils/modal";
import { clickRowKebabItem } from "../utils/table";
} from "../utils/form.ts";
import { confirmModal } from "../utils/modal.ts";
import { clickRowKebabItem } from "../utils/table.ts";
export async function goToAdvancedTab(page: Page) {
await page.getByTestId("advancedTab").click();

View File

@ -1,13 +1,17 @@
import { test } from "@playwright/test";
import adminClient from "../utils/AdminClient";
import { clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
assertAxeViolations,
assertNotificationMessage,
} from "../utils/masthead";
import { goToClients, goToRealm } from "../utils/sidebar";
import { assertRowExists, clickTableRowItem, searchItem } from "../utils/table";
} from "../utils/masthead.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import {
assertRowExists,
clickTableRowItem,
searchItem,
} from "../utils/table.ts";
import {
assertClipboardHasText,
assertDefaultResource,
@ -29,7 +33,7 @@ import {
inputClient,
selectResource,
setPolicy,
} from "./authorization";
} from "./authorization.ts";
test.use({
permissions: ["clipboard-write", "clipboard-read"],

View File

@ -1,9 +1,9 @@
import ResourceRepresentation from "@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation";
import ScopeRepresentation from "@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation";
import { Page, expect } from "@playwright/test";
import { clickRowKebabItem, getRowByCellText } from "../utils/table";
import { confirmModal } from "../utils/modal";
import PolicyRepresentation from "@keycloak/keycloak-admin-client/lib/defs/policyRepresentation";
import type ResourceRepresentation from "@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation.js";
import type ScopeRepresentation from "@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation.js";
import { type Page, expect } from "@playwright/test";
import { clickRowKebabItem, getRowByCellText } from "../utils/table.ts";
import { confirmModal } from "../utils/modal.ts";
import type PolicyRepresentation from "@keycloak/keycloak-admin-client/lib/defs/policyRepresentation.js";
export async function goToAuthorizationTab(page: Page) {
await page.getByTestId("authorizationTab").click();

View File

@ -1,12 +1,12 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertRequiredFieldError } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToClients, goToRealm } from "../utils/sidebar";
import { searchItem } from "../utils/table";
import { continueNext, createClient, save } from "./utils";
import adminClient from "../utils/AdminClient.ts";
import { assertRequiredFieldError } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import { searchItem } from "../utils/table.ts";
import { continueNext, createClient, save } from "./utils.ts";
test.describe("Clients details test", () => {
const realmName = `clients-details-realm-${uuid()}`;

View File

@ -0,0 +1,14 @@
import type { Page } from "@playwright/test";
import { selectItem, assertSelectValue } from "../utils/form.ts";
function getKeyForCodeExchangeInput(page: Page) {
return page.locator("#keyForCodeExchange");
}
export async function selectKeyForCodeExchangeInput(page: Page, value: string) {
await selectItem(page, getKeyForCodeExchangeInput(page), value);
}
export async function assertKeyForCodeExchangeInput(page: Page, value: string) {
await assertSelectValue(getKeyForCodeExchangeInput(page), value);
}

View File

@ -1,10 +1,10 @@
import { expect, test } from "@playwright/test";
import adminClient from "../utils/AdminClient";
import { clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { assertModalTitle, confirmModal } from "../utils/modal";
import { goToClients } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { assertModalTitle, confirmModal } from "../utils/modal.ts";
import { goToClients } from "../utils/sidebar.ts";
import {
assertNoResults,
clearAllFilters,
@ -12,7 +12,7 @@ import {
clickTableToolbarItem,
getTableData,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
assertClipboardContent,
assertCountValue,
@ -24,7 +24,7 @@ import {
fillNewTokenData,
goToCreateFromEmptyList,
goToInitialAccessTokenTab,
} from "./initial-access";
} from "./initial-access.ts";
test.use({
permissions: ["clipboard-write", "clipboard-read"],

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { assertFieldError } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { assertFieldError } from "../utils/form.ts";
export async function goToInitialAccessTokenTab(page: Page) {
await page.getByTestId("initialAccessToken").click();
@ -14,7 +14,7 @@ export async function assertInitialAccessTokensIsEmpty(page: Page) {
export async function assertInitialAccessTokensIsNotEmpty(page: Page) {
await expect(
page.getByTestId("no-initial-access-tokens-empty-action"),
).not.toBeVisible();
).toBeHidden();
}
export async function goToCreateFromEmptyList(page: Page) {

View File

@ -1,25 +1,25 @@
import { expect, test } from "@playwright/test";
import path from "path";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertRequiredFieldError } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { assertModalTitle, confirmModal } from "../utils/modal";
import { goToClients, goToRealm } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { assertRequiredFieldError } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { assertModalTitle, confirmModal } from "../utils/modal.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import {
clearAllFilters,
clickRowKebabItem,
getRowByCellText,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
cancel,
clientCapabilityConfig,
continueNext,
createClient,
save,
} from "./utils";
} from "./utils.ts";
test.describe("Clients test", () => {
const realmName = `clients-realm-${uuid()}`;

View File

@ -1,20 +1,20 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { clickCancelButton, clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { clickCancelButton, clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
assertAxeViolations,
assertNotificationMessage,
} from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToClients, goToRealm } from "../utils/sidebar";
} from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import {
assertRowExists,
clickRowKebabItem,
clickTableRowItem,
getTableData,
} from "../utils/table";
} from "../utils/table.ts";
import {
clickCreateAnonymousPolicy,
clickCreateAuthenticatedPolicy,
@ -22,7 +22,7 @@ import {
fillPolicyForm,
goToAuthenticatedSubTab,
goToClientRegistrationTab,
} from "./registration-policies";
} from "./registration-policies.ts";
test.describe("Client registration policies tab", () => {
const tabName = "Client registration";

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function goToClientRegistrationTab(page: Page) {
await page.getByTestId("registration").click();

View File

@ -1,22 +1,22 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import adminClient from "../utils/AdminClient.ts";
import {
assertAttributeLength,
clickAttributeSaveButton,
deleteAttribute,
fillAttributeData,
goToAttributesTab,
} from "../utils/attributes";
import { assertRequiredFieldError, clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
} from "../utils/attributes.ts";
import { assertRequiredFieldError, clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
assertNotificationMessage,
selectActionToggleItem,
} from "../utils/masthead";
import { assertModalTitle, confirmModal } from "../utils/modal";
import { clickUnassign } from "../utils/roles";
import { goToClients, goToRealm } from "../utils/sidebar";
} from "../utils/masthead.ts";
import { assertModalTitle, confirmModal } from "../utils/modal.ts";
import { clickUnassign } from "../utils/roles.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import {
assertNoResults,
assertRowExists,
@ -25,7 +25,7 @@ import {
clickSelectRow,
clickTableRowItem,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
addAssociatedRoles,
assertDescriptionValue,
@ -34,7 +34,7 @@ import {
goToCreateRole,
goToCreateRoleFromEmptyState,
goToRolesTab,
} from "./role";
} from "./role.ts";
test.describe("Roles tab test", () => {
const realmName = `clients-realm-${uuid()}`;

View File

@ -1,10 +1,10 @@
import { expect, Page } from "@playwright/test";
import { expect, type Page } from "@playwright/test";
import {
changeRoleTypeFilter,
confirmModalAssign,
pickRole,
RoleType,
} from "../utils/roles";
type RoleType,
} from "../utils/roles.ts";
export async function goToRolesTab(page: Page) {
await page.getByTestId("rolesTab").click();

View File

@ -1,13 +1,13 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { switchOff, switchOn } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { assertModalTitle, cancelModal, confirmModal } from "../utils/modal";
import { goToClients } from "../utils/sidebar";
import { clickTableRowItem } from "../utils/table";
import { goToAdvancedTab, revertFineGrain, saveFineGrain } from "./advanced";
import adminClient from "../utils/AdminClient.ts";
import { switchOff, switchOn } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { assertModalTitle, cancelModal, confirmModal } from "../utils/modal.ts";
import { goToClients } from "../utils/sidebar.ts";
import { clickTableRowItem } from "../utils/table.ts";
import { goToAdvancedTab, revertFineGrain, saveFineGrain } from "./advanced.ts";
import {
assertCertificate,
assertNameIdFormatDropdown,
@ -20,7 +20,7 @@ import {
goToKeysTab,
saveSamlSettings,
setTermsOfServiceUrl,
} from "./saml";
} from "./saml.ts";
test.describe("Fine Grain SAML Endpoint Configuration", () => {
const clientName = `saml-advanced-tab-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { selectItem, switchOff, switchOn } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { selectItem, switchOff, switchOn } from "../utils/form.ts";
function getTermsOfServiceUrl(page: Page) {
return page.getByTestId("attributes.tosUri");

View File

@ -1,11 +1,11 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { selectChangeType } from "../client-scope/main";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { assertModalTitle, confirmModal } from "../utils/modal";
import { goToClients, goToRealm } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { selectChangeType } from "../client-scope/main.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { assertModalTitle, confirmModal } from "../utils/modal.ts";
import { goToClients, goToRealm } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertRowExists,
@ -16,7 +16,7 @@ import {
clickTableToolbarItem,
getTableData,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
assertHasAccessTokenGenerated,
assertHasIdTokenGenerated,
@ -31,7 +31,7 @@ import {
goToClientScopesTab,
goToGenerateAccessTokenTab,
selectUser,
} from "./scope";
} from "./scope.ts";
type ClientScope = {
name: string;

View File

@ -1,6 +1,6 @@
import { Page, expect } from "@playwright/test";
import { clickTableToolbarItem } from "../utils/table";
import { selectItem } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { clickTableToolbarItem } from "../utils/table.ts";
import { selectItem } from "../utils/form.ts";
export async function goToClientScopesTab(page: Page) {
await page.getByTestId("clientScopesTab").click();

View File

@ -1,5 +1,5 @@
import ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation";
import { Page } from "@playwright/test";
import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation.js";
import type { Page } from "@playwright/test";
export async function createClient(
page: Page,

View File

@ -1,10 +1,14 @@
import { Page, test } from "@playwright/test";
import { type Page, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login, logout } from "../utils/login";
import { assertAxeViolations } from "../utils/masthead";
import { goToEvents, goToRealm } from "../utils/sidebar";
import { assertEmptyTable, assertRowExists, expandRow } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { login, logout } from "../utils/login.ts";
import { assertAxeViolations } from "../utils/masthead.ts";
import { goToEvents, goToRealm } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertRowExists,
expandRow,
} from "../utils/table.ts";
import {
assertSearchButtonDisabled,
assertSearchChipGroupItemExist,
@ -14,7 +18,7 @@ import {
fillSearchPanel,
goToAdminEventsTab,
goToEventsConfig,
} from "./list";
} from "./list.ts";
test.describe("Events tests", () => {
const tableName = "Events";

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { selectItem, switchOn } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { selectItem, switchOn } from "../utils/form.ts";
export async function goToEventsConfig(page: Page) {
await page.getByRole("link", { name: "Event configs" }).click();
@ -51,7 +51,7 @@ export async function assertSearchButtonDisabled(page: Page, disabled = true) {
if (disabled) {
await expect(page.getByTestId("search-events-btn")).toBeDisabled();
} else {
await expect(page.getByTestId("search-events-btn")).not.toBeDisabled();
await expect(page.getByTestId("search-events-btn")).toBeEnabled();
}
}
@ -68,7 +68,7 @@ export async function assertSearchChipGroupItemExist(
if (exist) {
await expect(locator).toHaveText(`User ID${itemName}`);
} else {
await expect(locator).not.toBeVisible();
await expect(locator).toBeHidden();
}
}

View File

@ -1,17 +1,17 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import adminClient from "../utils/AdminClient.ts";
import {
assertAttributeLength,
clickAttributeSaveButton,
deleteAttribute,
fillAttributeData,
goToAttributesTab,
} from "../utils/attributes";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToGroups } from "../utils/sidebar";
import { goToGroupDetails } from "./util";
} from "../utils/attributes.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToGroups } from "../utils/sidebar.ts";
import { goToGroupDetails } from "./util.ts";
test.describe("Attributes", () => {
const groupName = `group-${uuid()}`;

View File

@ -1,14 +1,14 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import {
assertAxeViolations,
assertNotificationMessage,
selectActionToggleItem,
} from "../utils/masthead";
import { cancelModal, confirmModal } from "../utils/modal";
import { goToGroups } from "../utils/sidebar";
} from "../utils/masthead.ts";
import { cancelModal, confirmModal } from "../utils/modal.ts";
import { goToGroups } from "../utils/sidebar.ts";
import {
assertNoResults,
assertRowExists,
@ -16,9 +16,9 @@ import {
clickSelectRow,
clickTableToolbarItem,
searchItem,
} from "../utils/table";
import { createGroup, renameGroup, searchGroup } from "./list";
import { goToGroupDetails } from "./util";
} from "../utils/table.ts";
import { createGroup, renameGroup, searchGroup } from "./list.ts";
import { goToGroupDetails } from "./util.ts";
test.describe("Group test", () => {
const groupName = `group-${uuid()}`;

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function createGroup(
page: Page,

View File

@ -1,22 +1,22 @@
import { test } from "@playwright/test";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { cancelModal } from "../utils/modal";
import { goToGroups } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { cancelModal } from "../utils/modal.ts";
import { goToGroups } from "../utils/sidebar.ts";
import {
assertRowExists,
clickRowKebabItem,
clickSelectRow,
clickTableRowItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
addMember,
goToMembersTab,
leaveGroup,
toggleIncludeSubGroupUsers,
} from "./members";
import { goToChildGroupsTab } from "./util";
} from "./members.ts";
import { goToChildGroupsTab } from "./util.ts";
test.describe("Members", () => {
const predefinedGroups = ["level", "level1", "level2", "level3"];

View File

@ -1,5 +1,5 @@
import { Page } from "@playwright/test";
import { clickSelectRow, clickTableToolbarItem } from "../utils/table";
import type { Page } from "@playwright/test";
import { clickSelectRow, clickTableToolbarItem } from "../utils/table.ts";
export async function goToMembersTab(page: Page) {
await page.getByTestId("members").click();

View File

@ -1,23 +1,23 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import {
changeRoleTypeFilter,
clickHideInheritedRoles,
clickUnassign,
confirmModalAssign,
pickRole,
} from "../utils/roles";
import { goToGroups } from "../utils/sidebar";
} from "../utils/roles.ts";
import { goToGroups } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertRowExists,
clickTableRowItem,
} from "../utils/table";
import { assignRole, goToRoleMappingTab } from "./role";
import { confirmModal } from "../utils/modal";
} from "../utils/table.ts";
import { assignRole, goToRoleMappingTab } from "./role.ts";
import { confirmModal } from "../utils/modal.ts";
test.describe("Role mappings", () => {
const predefinedGroup = "group1";

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function goToRoleMappingTab(page: Page) {
await page.getByTestId("role-mapping-tab").click();

View File

@ -1,5 +1,5 @@
import { Page } from "@playwright/test";
import { clickTableRowItem } from "../utils/table";
import type { Page } from "@playwright/test";
import { clickTableRowItem } from "../utils/table.ts";
export async function goToGroupDetails(page: Page, name: string) {
await clickTableRowItem(page, name);

View File

@ -1,4 +1,4 @@
import { Page, expect } from "@playwright/test";
import { type Page, expect } from "@playwright/test";
const SERVER_URL = "http://localhost:8080";
const discoveryUrl = `${SERVER_URL}/realms/master/.well-known/openid-configuration`;

View File

@ -1,11 +1,11 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { switchOff, switchOn } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToIdentityProviders } from "../utils/sidebar";
import { clickTableRowItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { switchOff, switchOn } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToIdentityProviders } from "../utils/sidebar.ts";
import { clickTableRowItem } from "../utils/table.ts";
import {
addMapper,
assertAuthorizationUrl,
@ -20,7 +20,7 @@ import {
createOIDCProvider,
goToMappersTab,
setUrl,
} from "./main";
} from "./main.ts";
test.describe("OIDC identity provider test", () => {
const oidcProviderName = "oidc";

View File

@ -1,10 +1,10 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToIdentityProviders } from "../utils/sidebar";
import { clickTableRowItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToIdentityProviders } from "../utils/sidebar.ts";
import { clickTableRowItem } from "../utils/table.ts";
import {
addAuthConstraints,
addMapper,
@ -12,8 +12,8 @@ import {
clickSaveMapper,
createSAMLProvider,
goToMappersTab,
} from "./main";
import { editSAMLSettings } from "./saml";
} from "./main.ts";
import { editSAMLSettings } from "./saml.ts";
test.describe("SAML identity provider test", () => {
const samlProviderName = "saml";

View File

@ -1,10 +1,14 @@
import { Page, expect } from "@playwright/test";
import { selectItem, switchOff, switchOn } from "../utils/form";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToIdentityProviders } from "../utils/sidebar";
import { clickTableRowItem } from "../utils/table";
import { assertInvalidUrlNotification, clickSaveButton, setUrl } from "./main";
import { type Page, expect } from "@playwright/test";
import { selectItem, switchOff, switchOn } from "../utils/form.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToIdentityProviders } from "../utils/sidebar.ts";
import { clickTableRowItem } from "../utils/table.ts";
import {
assertInvalidUrlNotification,
clickSaveButton,
setUrl,
} from "./main.ts";
export async function editSAMLSettings(page: Page, samlProviderName: string) {
// Toggle provider state

View File

@ -1,9 +1,9 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login, logout } from "../utils/login";
import { assertAxeViolations } from "../utils/masthead";
import { goToClients } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { login, logout } from "../utils/login.ts";
import { assertAxeViolations } from "../utils/masthead.ts";
import { goToClients } from "../utils/sidebar.ts";
import {
assertIsDesktopView,
assertIsMobileView,
@ -14,7 +14,7 @@ import {
toggleGlobalHelp,
toggleMobileViewHelp,
toggleUsernameDropdown,
} from "./main";
} from "./main.ts";
test.describe("Masthead tests", () => {
test.beforeEach(async ({ page }) => {
@ -59,7 +59,7 @@ test.describe("Masthead tests", () => {
await expect(page.locator(helpLabel)).toBeVisible();
await clickGlobalHelp(page);
await toggleGlobalHelp(page);
await expect(page.locator(helpLabel)).not.toBeVisible();
await expect(page.locator(helpLabel)).toBeHidden();
await toggleGlobalHelp(page);
await expect(page.locator(helpLabel)).toBeVisible();
});

View File

@ -1,4 +1,4 @@
import { Page, expect } from "@playwright/test";
import { type Page, expect } from "@playwright/test";
function getMobileUserDropdownSelector(page: Page) {
return page.getByTestId("options-kebab-toggle");
@ -25,13 +25,13 @@ export async function goToAccountManagement(page: Page) {
}
export async function assertIsMobileView(page: Page) {
await expect(getUserDropdownSelector(page)).not.toBeVisible();
await expect(getUserDropdownSelector(page)).toBeHidden();
await expect(getMobileUserDropdownSelector(page)).toBeVisible();
}
export async function assertIsDesktopView(page: Page) {
await expect(getUserDropdownSelector(page)).toBeVisible();
await expect(getMobileUserDropdownSelector(page)).not.toBeVisible();
await expect(getMobileUserDropdownSelector(page)).toBeHidden();
}
export async function toggleUsernameDropdown(page: Page) {

View File

@ -1,15 +1,15 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertRequiredFieldError, switchOff } from "../utils/form";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { assertRequiredFieldError, switchOff } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
assertNotificationMessage,
selectActionToggleItem,
} from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToClients, goToRealmSettings } from "../utils/sidebar";
import { assertRowExists } from "../utils/table";
} from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToClients, goToRealmSettings } from "../utils/sidebar.ts";
import { assertRowExists } from "../utils/table.ts";
import {
assertCurrentRealm,
clickClearResourceFile,
@ -18,7 +18,7 @@ import {
clickCreateRealmForm,
fillRealmName,
goToRealmSection,
} from "./realm";
} from "./realm.ts";
const testRealmName = `Test-realm-${uuid()}`;
const newRealmName = `New-Test-realm-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { goToRealm, goToRealms } from "../utils/sidebar";
import { type Page, expect } from "@playwright/test";
import { goToRealm, goToRealms } from "../utils/sidebar.ts";
function getCurrentRealmItem(page: Page) {
return page.getByTestId("currentRealm");

View File

@ -1,20 +1,20 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToOrganizations, goToRealm } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToOrganizations, goToRealm } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertRowExists,
clickTableRowItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
clickAddIdentityProvider,
fillForm,
goToIdentityProviders,
} from "./idp";
} from "./idp.ts";
test.describe("Identity providers", () => {
const realmName = `organization-idp-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page } from "@playwright/test";
import { selectItem } from "../utils/form";
import type { Page } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
export async function goToIdentityProviders(page: Page) {
await page.getByTestId("identityProvidersTab").click();

View File

@ -1,25 +1,25 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertSaveButtonIsDisabled, clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { assertSaveButtonIsDisabled, clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
assertNotificationMessage,
selectActionToggleItem,
} from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToOrganizations, goToRealm } from "../utils/sidebar";
} from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToOrganizations, goToRealm } from "../utils/sidebar.ts";
import {
assertRowExists,
clickRowKebabItem,
clickTableRowItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
fillCreatePage,
fillNameField,
getNameField,
goToCreate,
} from "./main";
} from "./main.ts";
test.describe("Organization CRUD", () => {
const realmName = `organization-${uuid()}`;

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function goToCreate(page: Page, empty: boolean = true) {
await page

View File

@ -1,16 +1,16 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { clickAdd } from "../utils/modal";
import { goToOrganizations, goToRealm } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { clickAdd } from "../utils/modal.ts";
import { goToOrganizations, goToRealm } from "../utils/sidebar.ts";
import {
assertRowExists,
clickSelectRow,
clickTableRowItem,
} from "../utils/table";
import { clickAddRealmUser, goToMembersTab } from "./members";
} from "../utils/table.ts";
import { clickAddRealmUser, goToMembersTab } from "./members.ts";
test.describe("Members", () => {
const realmName = `organization-members-${uuid()}`;

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function goToMembersTab(page: Page) {
await page.getByTestId("membersTab").click();

View File

@ -1,11 +1,11 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { clickSaveButton, selectItem } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToRealm } from "../utils/sidebar";
import { assertRowExists } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { clickSaveButton, selectItem } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToRealm } from "../utils/sidebar.ts";
import { assertRowExists } from "../utils/table.ts";
import {
clickCreateNewPolicy,
clickCreatePermission,
@ -19,8 +19,8 @@ import {
pickGroup,
removeGroup,
selectResource,
} from "./main";
import { fillPolicyForm, goToPolicies } from "./policy";
} from "./main.ts";
import { fillPolicyForm, goToPolicies } from "./policy.ts";
test.describe("Permissions section tests", () => {
const realmName = `permissions-${uuid()}`;

View File

@ -1,8 +1,8 @@
import PolicyRepresentation from "@keycloak/keycloak-admin-client/lib/defs/policyRepresentation";
import { Page } from "@playwright/test";
import { selectItem } from "../utils/form";
import { confirmModal } from "../utils/modal";
import { clickRowKebabItem } from "../utils/table";
import type PolicyRepresentation from "@keycloak/keycloak-admin-client/lib/defs/policyRepresentation.js";
import type { Page } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
import { confirmModal } from "../utils/modal.ts";
import { clickRowKebabItem } from "../utils/table.ts";
type PermissionForm = PolicyRepresentation & {
enforcementMode?: "allResources" | "specificResources";

View File

@ -1,16 +1,16 @@
import test from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { clickSaveButton } from "../utils/form";
import { login } from "../utils/login";
import { goToRealm } from "../utils/sidebar";
import { goToPermissions } from "./main";
import adminClient from "../utils/AdminClient.ts";
import { clickSaveButton } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { goToRealm } from "../utils/sidebar.ts";
import { goToPermissions } from "./main.ts";
import {
clickCreateNewPolicy,
clickPolicyType,
fillPolicyForm,
goToPolicies,
} from "./policy";
} from "./policy.ts";
test.describe("Policy section tests", () => {
const realmName = `permissions-policy-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page } from "@playwright/test";
import { selectItem } from "../utils/form";
import type { Page } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
export async function clickCreateNewPolicy(page: Page) {
await page.getByTestId("no-policies-empty-action").click();

View File

@ -1,10 +1,10 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertAxeViolations } from "../utils/masthead";
import { goToRealm, goToRealmRoles } from "../utils/sidebar";
import { clickTableRowItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertAxeViolations } from "../utils/masthead.ts";
import { goToRealm, goToRealmRoles } from "../utils/sidebar.ts";
import { clickTableRowItem } from "../utils/table.ts";
test.describe("Accessibility tests for realm roles", () => {
const realmName = "role-a11y-" + uuid();

View File

@ -1,7 +1,7 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import { fillRoleData } from "../clients/role";
import adminClient from "../utils/AdminClient";
import { fillRoleData } from "../clients/role.ts";
import adminClient from "../utils/AdminClient.ts";
import {
assertAttribute,
assertAttributeLength,
@ -9,22 +9,22 @@ import {
deleteAttribute,
fillAttributeData,
goToAttributesTab,
} from "../utils/attributes";
} from "../utils/attributes.ts";
import {
assertRequiredFieldError,
clickCancelButton,
clickSaveButton,
} from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
} from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import {
changeRoleTypeFilter,
clickUnassign,
confirmModalAssign,
pickRole,
} from "../utils/roles";
import { goToRealm, goToRealmRoles } from "../utils/sidebar";
} from "../utils/roles.ts";
import { goToRealm, goToRealmRoles } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertNoResults,
@ -32,14 +32,14 @@ import {
clickRowKebabItem,
clickTableRowItem,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
assertUnassignDisabled,
assignRole,
clickAddRoleButton,
clickCreateRoleButton,
goToAssociatedRolesTab,
} from "./main";
} from "./main.ts";
test.describe("Realm roles test", () => {
const realmName = `realm-roles-${uuid()}`;

View File

@ -1,4 +1,4 @@
import { Page, expect } from "@playwright/test";
import { type Page, expect } from "@playwright/test";
export async function clickCreateRoleButton(page: Page) {
await page.locator("text=Create role").click();

View File

@ -1,17 +1,20 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertAxeViolations } from "../utils/masthead";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import { goToRealmEventsTab } from "./events";
import { goToAddProviders, goToKeys } from "./keys";
import { goToLoginTab } from "./login";
import { goToLocalizationTab, goToRealmOverridesSubTab } from "./localization";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertAxeViolations } from "../utils/masthead.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import { goToRealmEventsTab } from "./events.ts";
import { goToAddProviders, goToKeys } from "./keys.ts";
import { goToLoginTab } from "./login.ts";
import {
goToLocalizationTab,
goToRealmOverridesSubTab,
} from "./localization.ts";
import {
goToClientPoliciesList,
goToClientPoliciesTab,
} from "./client-policies";
} from "./client-policies.ts";
test.describe("Accessibility tests for realm settings", () => {
const realmName = `realm-settings-accessibility-${uuid()}`;

View File

@ -1,22 +1,22 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertFieldError } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import adminClient from "../utils/AdminClient.ts";
import { assertFieldError } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import {
assertModalMessage,
assertModalTitle,
cancelModal,
confirmModal,
} from "../utils/modal";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
} from "../utils/modal.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertEmptyTable,
assertRowExists,
clickTableRowItem,
searchItem,
} from "../utils/table";
} from "../utils/table.ts";
import {
addClientRolesCondition,
addClientScopeCondition,
@ -41,7 +41,7 @@ import {
shouldCancelAddingCondition,
shouldNotHaveConditionsConfigured,
shouldReloadJSONPolicies,
} from "./client-policies";
} from "./client-policies.ts";
test.describe("Realm settings client policies tab tests", () => {
const realmName = `realm-settings-client-policies_${uuid()}`;

View File

@ -1,6 +1,6 @@
import { Page, expect } from "@playwright/test";
import { clickRowKebabItem } from "../utils/table";
import { selectItem } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { clickRowKebabItem } from "../utils/table.ts";
import { selectItem } from "../utils/form.ts";
export async function goToClientPoliciesTab(page: Page) {
await page.getByTestId("rs-clientPolicies-tab").click();

View File

@ -1,12 +1,12 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import {
assertNotificationMessage,
selectActionToggleItem,
} from "../utils/masthead";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
} from "../utils/masthead.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertExecutorInList,
assertIntentClient,
@ -22,9 +22,9 @@ import {
searchClientProfile,
searchNonExistingClientProfile,
selectExecutorType,
} from "./client-profiles";
import { clickTableRowItem } from "../utils/table";
import { confirmModal } from "../utils/modal";
} from "./client-profiles.ts";
import { clickTableRowItem } from "../utils/table.ts";
import { confirmModal } from "../utils/modal.ts";
test.describe("Realm settings client profiles tab tests", () => {
const profileName = "Test";

View File

@ -1,6 +1,10 @@
import { Page, expect } from "@playwright/test";
import { assertEmptyTable, assertRowExists, searchItem } from "../utils/table";
import { confirmModal } from "../utils/modal";
import { type Page, expect } from "@playwright/test";
import {
assertEmptyTable,
assertRowExists,
searchItem,
} from "../utils/table.ts";
import { confirmModal } from "../utils/modal.ts";
export async function goToClientPoliciesTab(page: Page) {
await page.getByTestId("rs-clientPolicies-tab").click();

View File

@ -1,9 +1,9 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
clickSaveEmailButton,
goToEmailTab,
@ -13,7 +13,7 @@ import {
assertEmailPageWithPasswordAuth,
populateEmailPageWithTokenAuth,
assertEmailPageWithTokenAuth,
} from "./email";
} from "./email.ts";
test.describe("Email", () => {
const realmName = `email-realm-settings-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { switchOn } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { switchOn } from "../utils/form.ts";
export async function goToEmailTab(page: Page) {
await page.getByTestId("rs-email-tab").click();

View File

@ -1,11 +1,11 @@
import { test } from "@playwright/test";
import adminClient from "../utils/AdminClient";
import { switchOn } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { assertModalMessage, confirmModal } from "../utils/modal";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import { assertRowExists, searchItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { switchOn } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { assertModalMessage, confirmModal } from "../utils/modal.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import { assertRowExists, searchItem } from "../utils/table.ts";
import {
addSavedEventTypes,
clickClearEvents,
@ -15,7 +15,7 @@ import {
fillEventListener,
goToEventsTab,
goToRealmEventsTab,
} from "./events";
} from "./events.ts";
test.describe("Realm settings events tab tests", () => {
const realmName = `events-realm-settings-${crypto.randomUUID()}`;

View File

@ -1,5 +1,5 @@
import { Page } from "@playwright/test";
import { clickSelectRow } from "../utils/table";
import type { Page } from "@playwright/test";
import { clickSelectRow } from "../utils/table.ts";
export async function goToRealmEventsTab(page: Page) {
await page.getByTestId("rs-realm-events-tab").click();

View File

@ -1,16 +1,16 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { selectActionToggleItem } from "../utils/masthead";
import { cancelModal, confirmModal } from "../utils/modal";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { selectActionToggleItem } from "../utils/masthead.ts";
import { cancelModal, confirmModal } from "../utils/modal.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertDialogClosed,
assertWarningMessage,
toggleIncludeClients,
toggleIncludeGroupsAndRoles,
} from "./export";
} from "./export.ts";
test.describe("Partial realm export", () => {
const REALM_NAME = `partial-export-test-${uuid()}`;

View File

@ -1,15 +1,15 @@
import { Page, expect } from "@playwright/test";
import { switchOff, switchOn } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { switchOff, switchOn } from "../utils/form.ts";
export async function assertDialogClosed(page: Page) {
await expect(page.getByTestId("confirm")).not.toBeVisible();
await expect(page.getByTestId("confirm")).toBeHidden();
}
export async function assertWarningMessage(page: Page, toBeVisible = false) {
if (toBeVisible) {
await expect(page.getByTestId("warning-message")).toBeVisible();
} else {
await expect(page.getByTestId("warning-message")).not.toBeVisible();
await expect(page.getByTestId("warning-message")).toBeHidden();
}
}

View File

@ -1,11 +1,11 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { switchOff, switchOn } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToClients, goToRealm, goToRealmSettings } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { switchOff, switchOn } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToClients, goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertDisplayName,
assertFrontendURL,
@ -15,8 +15,8 @@ import {
fillDisplayName,
fillFrontendURL,
fillRequireSSL,
} from "./general";
import { SERVER_URL } from "../utils/constants";
} from "./general.ts";
import { SERVER_URL } from "../utils/constants.ts";
test.describe("Realm settings general tab tests", () => {
const realmName = `general-realm-settings-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { selectItem } from "../utils/form.ts";
export async function clickSaveRealm(page: Page) {
await page.getByTestId("realmSettingsGeneralTab-save").click();

View File

@ -1,9 +1,9 @@
import { Page, test } from "@playwright/test";
import { type Page, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { goToUserFederation } from "../utils/sidebar";
import { assertProviderCardText, assertRealmSettingsText } from "./i18n";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { goToUserFederation } from "../utils/sidebar.ts";
import { assertProviderCardText, assertRealmSettingsText } from "./i18n.ts";
// Test configuration
const testConfig = {

View File

@ -1,4 +1,4 @@
import { expect, Page } from "@playwright/test";
import { expect, type Page } from "@playwright/test";
export async function assertRealmSettingsText(
page: Page,

View File

@ -1,12 +1,12 @@
import { expect, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { chooseFile } from "../utils/file-chooser";
import { selectItem } from "../utils/form";
import { login } from "../utils/login";
import { selectActionToggleItem } from "../utils/masthead";
import { cancelModal, confirmModal } from "../utils/modal";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import adminClient from "../utils/AdminClient.ts";
import { chooseFile } from "../utils/file-chooser.ts";
import { selectItem } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { selectActionToggleItem } from "../utils/masthead.ts";
import { cancelModal, confirmModal } from "../utils/modal.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertClearButtonDisabled,
assertClientVisible,
@ -23,7 +23,7 @@ import {
toggleClients,
toggleGroups,
toggleUsers,
} from "./import";
} from "./import.ts";
test.describe("Partial import test", () => {
const testRealm = `Partial-import-${uuid()}`;
@ -49,7 +49,7 @@ test.describe("Partial import test", () => {
test("Opens and closes partial import dialog", async ({ page }) => {
await expect(page.getByTestId("confirm")).toBeDisabled();
await cancelModal(page);
await expect(page.getByTestId("confirm")).not.toBeVisible();
await expect(page.getByTestId("confirm")).toBeHidden();
});
test("Import button only enabled if JSON has something to import", async ({
@ -108,7 +108,7 @@ test.describe("Partial import test", () => {
await chooseFile(page, "../utils/files/client-only.json");
await expect(page.locator("select")).not.toBeVisible();
await expect(page.locator("select")).toBeHidden();
await assertTextContent(page, "1 Clients");

View File

@ -1,11 +1,11 @@
import { Locator, Page, expect } from "@playwright/test";
import { switchOff, switchOn } from "../utils/form";
import { type Locator, type Page, expect } from "@playwright/test";
import { switchOff, switchOn } from "../utils/form.ts";
export async function assertImportButtonDisabled(page: Page, disabled = true) {
if (disabled) {
await expect(page.getByTestId("confirm")).toBeDisabled();
} else {
await expect(page.getByTestId("confirm")).not.toBeDisabled();
await expect(page.getByTestId("confirm")).toBeEnabled();
}
}
@ -91,7 +91,7 @@ export async function assertClearButtonDisabled(page: Page, disabled = true) {
if (disabled) {
await expect(getClearButton(page)).toBeDisabled();
} else {
await expect(getClearButton(page)).not.toBeDisabled();
await expect(getClearButton(page)).toBeEnabled();
}
}

View File

@ -1,19 +1,23 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { switchToggle } from "../utils/form";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import { assertRowExists, clickRowKebabItem, searchItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { switchToggle } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertRowExists,
clickRowKebabItem,
searchItem,
} from "../utils/table.ts";
import {
assertPriority,
goToAddProviders,
goToDetails,
goToKeys,
switchToFilter,
} from "./keys";
} from "./keys.ts";
test.describe("Realm Settings - Keys", () => {
const realmName = `events-realm-settings-${uuid()}`;

View File

@ -1,6 +1,6 @@
import { Page, expect } from "@playwright/test";
import { clickTableRowItem } from "../utils/table";
import { selectItem } from "../utils/form";
import { type Page, expect } from "@playwright/test";
import { clickTableRowItem } from "../utils/table.ts";
import { selectItem } from "../utils/form.ts";
export async function goToKeys(page: Page) {
await page.getByTestId("rs-keys-tab").click();

View File

@ -1,11 +1,15 @@
import { test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { login } from "../utils/login";
import { assertNotificationMessage } from "../utils/masthead";
import { confirmModal } from "../utils/modal";
import { goToRealm, goToRealmSettings } from "../utils/sidebar";
import { assertRowExists, clickRowKebabItem, searchItem } from "../utils/table";
import adminClient from "../utils/AdminClient.ts";
import { login } from "../utils/login.ts";
import { assertNotificationMessage } from "../utils/masthead.ts";
import { confirmModal } from "../utils/modal.ts";
import { goToRealm, goToRealmSettings } from "../utils/sidebar.ts";
import {
assertRowExists,
clickRowKebabItem,
searchItem,
} from "../utils/table.ts";
import {
addBundle,
clickConfirmEditButton,
@ -16,7 +20,7 @@ import {
goToRealmOverridesSubTab,
selectLocale,
switchInternationalization,
} from "./localization";
} from "./localization.ts";
test.describe("Go to localization tab", () => {
const realmName = `localization-${uuid()}`;

View File

@ -1,5 +1,5 @@
import { Page } from "@playwright/test";
import { selectItem, switchOff, switchOn } from "../utils/form";
import type { Page } from "@playwright/test";
import { selectItem, switchOff, switchOn } from "../utils/form.ts";
export async function goToLocalizationTab(page: Page) {
await page.getByTestId("rs-localization-tab").click();

View File

@ -1,14 +1,14 @@
import { Page, test } from "@playwright/test";
import { type Page, test } from "@playwright/test";
import { v4 as uuid } from "uuid";
import adminClient from "../utils/AdminClient";
import { assertSwitchIsChecked, switchToggle } from "../utils/form";
import { login } from "../utils/login";
import adminClient from "../utils/AdminClient.ts";
import { assertSwitchIsChecked, switchToggle } from "../utils/form.ts";
import { login } from "../utils/login.ts";
import {
goToClientScopes,
goToRealm,
goToRealmSettings,
} from "../utils/sidebar";
import { goToLoginTab } from "./login";
} from "../utils/sidebar.ts";
import { goToLoginTab } from "./login.ts";
test.describe("Realm settings tabs tests", () => {
const realmName = `realm-settings_${uuid()}`;

View File

@ -1,4 +1,4 @@
import { Page } from "@playwright/test";
import type { Page } from "@playwright/test";
export async function goToLoginTab(page: Page) {
await page.getByTestId("rs-login-tab").click();

Some files were not shown because too many files have changed in this diff Show More