mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-25 16:42:34 +00:00
* initial version playwright rewrite Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * small refactor cancel button Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added policies ciba to playwright Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added policies spec Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added flow tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added axe tests for flows Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added more tests for authentication flows Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client advanced test to playwright Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client authorization tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added axe check Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added test for initial access token Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added registration policies test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client scope test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client scope tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * updated dependency Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client role test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix running playwright tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client saml Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added saml test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added events test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * more groups tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added group role test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added realm settings i18n tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added oidc and saml test for identity provider Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * update ci to run playwright instead of cypress Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * add masthead test and use component instead Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added organizations test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added export realm test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added partial import Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added realm roles Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * add realm client policies test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added client profile tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * merge errors Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * realm settings Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added realm settings general test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * add login tab and localization Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * realm settings accessibility test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added user profile test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added realm create test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added realm user registration spec Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added sessions test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added kerberos test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added ldap mapper test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added ldap test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * removed cypress tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added user tab test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * run playwright tests instead of jest tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fixed some tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fixed tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fixed some more tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fixed tests Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix test Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * removed cypress Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * remove cyperss Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * Remove some more workflow remanants from Cypress Signed-off-by: Jon Koops <jonkoops@gmail.com> Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * lock file Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * pr review Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> --------- Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> Signed-off-by: Jon Koops <jonkoops@gmail.com> Co-authored-by: Jon Koops <jonkoops@gmail.com>
120 lines
3.0 KiB
TypeScript
120 lines
3.0 KiB
TypeScript
import { Locator, Page, expect } from "@playwright/test";
|
|
|
|
export async function searchItem(
|
|
page: Page,
|
|
placeHolder: string,
|
|
itemName: string,
|
|
) {
|
|
await page.locator("table tbody").waitFor();
|
|
await page.getByPlaceholder(placeHolder).fill(itemName);
|
|
await page.keyboard.press("Enter");
|
|
}
|
|
|
|
export async function clearAllFilters(page: Page) {
|
|
await page.getByTestId("clear-all-filters-empty-action").click();
|
|
}
|
|
|
|
export async function clickTableRowItem(page: Page, itemName: string) {
|
|
await page.getByRole("link", { name: itemName }).first().click();
|
|
}
|
|
|
|
export function getRowByCellText(page: Page, cellText: string): Locator {
|
|
return page.getByText(cellText, { exact: true });
|
|
}
|
|
|
|
export async function clickRowKebabItem(
|
|
page: Page,
|
|
itemName: string,
|
|
action: string,
|
|
) {
|
|
await page
|
|
.getByRole("row", { name: itemName })
|
|
.getByLabel("Kebab toggle")
|
|
.click();
|
|
await page.getByRole("menuitem", { name: action }).click();
|
|
}
|
|
|
|
export async function assertRowExists(
|
|
page: Page,
|
|
itemName: string,
|
|
exist = true,
|
|
) {
|
|
if (exist) {
|
|
await expect(page.getByRole("row", { name: itemName })).toBeVisible();
|
|
} else {
|
|
await expect(page.getByRole("row", { name: itemName })).not.toBeVisible();
|
|
}
|
|
}
|
|
|
|
export async function assertNoResults(page: Page) {
|
|
await expect(
|
|
page.getByRole("heading", { name: "No search results" }),
|
|
).toBeVisible();
|
|
}
|
|
|
|
export async function clickTableToolbarItem(
|
|
page: Page,
|
|
itemName: string,
|
|
kebab = false,
|
|
) {
|
|
if (kebab) {
|
|
await page.getByTestId("kebab").click();
|
|
}
|
|
return page
|
|
.locator(`[data-testid="table-toolbar"]`)
|
|
.getByText(itemName)
|
|
.click();
|
|
}
|
|
|
|
export async function getTableData(page: Page, name: string) {
|
|
const table = page.getByLabel(name, { exact: true });
|
|
await table.locator("tbody").waitFor();
|
|
const rows = await table.locator("tbody tr").elementHandles();
|
|
|
|
const tableData = await Promise.all(
|
|
rows.map(async (row) => {
|
|
const cells = await row.$$("td");
|
|
return await Promise.all(cells.map((cell) => cell.innerText()));
|
|
}),
|
|
);
|
|
return tableData;
|
|
}
|
|
|
|
export async function clickNextPageButton(page: Page) {
|
|
await page
|
|
.getByLabel("Pagination bottom")
|
|
.getByLabel("Go to next page")
|
|
.click();
|
|
}
|
|
|
|
export async function assertEmptyTable(page: Page) {
|
|
await expect(page.getByTestId("empty-state")).toBeVisible();
|
|
}
|
|
|
|
export async function clickSelectRow(
|
|
page: Page,
|
|
tableName: string,
|
|
row: number | string,
|
|
) {
|
|
if (typeof row === "string") {
|
|
const rows = await getTableData(page, tableName);
|
|
const rowIndex = rows.findIndex((r) => r.includes(row as string));
|
|
if (rowIndex === -1) {
|
|
throw new Error(`Row ${row} not found: ${rows}`);
|
|
}
|
|
row = rowIndex;
|
|
}
|
|
await page.getByLabel(tableName).getByLabel(`Select row ${row}`).click();
|
|
}
|
|
|
|
export async function expandRow(page: Page, tableName: string, row: number) {
|
|
await page
|
|
.getByLabel(tableName)
|
|
.locator(`button[id="expandable-row-${row}"]`)
|
|
.click();
|
|
}
|
|
|
|
export async function refreshTable(page: Page) {
|
|
await page.getByTestId("refresh").click();
|
|
}
|