The backend was updated to include the pad endpoints. The mock pad endpoints were removed in favor of the real ones. We adapted the types as well to match the real ones.
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
import { Page, expect } from '@playwright/test';
|
|
|
|
export const keyCloakSignIn = async (page: Page, browserName: string) => {
|
|
const title = await page.locator('h1').first().textContent({
|
|
timeout: 5000,
|
|
});
|
|
|
|
if (title?.includes('Sign in to your account')) {
|
|
await page
|
|
.getByRole('textbox', { name: 'username' })
|
|
.fill(`user-e2e-${browserName}`);
|
|
|
|
await page
|
|
.getByRole('textbox', { name: 'password' })
|
|
.fill(`password-e2e-${browserName}`);
|
|
|
|
await page.click('input[type="submit"]', { force: true });
|
|
}
|
|
};
|
|
|
|
export const randomName = (name: string, browserName: string, length: number) =>
|
|
Array.from({ length }, (_el, index) => {
|
|
return `${browserName}-${Math.floor(Math.random() * 10000)}-${index}-${name}`;
|
|
});
|
|
|
|
export const createPad = async (
|
|
page: Page,
|
|
padName: string,
|
|
browserName: string,
|
|
length: number,
|
|
) => {
|
|
const panel = page.getByLabel('Pads panel').first();
|
|
const buttonCreate = page.getByRole('button', { name: 'Create the pad' });
|
|
|
|
const randomPads = randomName(padName, browserName, length);
|
|
|
|
for (let i = 0; i < randomPads.length; i++) {
|
|
await panel.getByRole('button', { name: 'Add a pad' }).click();
|
|
await page.getByText('Pad name').fill(randomPads[i]);
|
|
await expect(buttonCreate).toBeEnabled();
|
|
await buttonCreate.click();
|
|
await expect(panel.locator('li').getByText(randomPads[i])).toBeVisible();
|
|
}
|
|
|
|
return randomPads;
|
|
};
|
|
|
|
export const addNewMember = async (
|
|
page: Page,
|
|
index: number,
|
|
role: 'Admin' | 'Owner' | 'Member',
|
|
fillText: string = 'test',
|
|
) => {
|
|
const responsePromiseSearchUser = page.waitForResponse(
|
|
(response) =>
|
|
response.url().includes(`/users/?q=${fillText}`) &&
|
|
response.status() === 200,
|
|
);
|
|
await page.getByLabel('Add members to the team').click();
|
|
const inputSearch = page.getByLabel(/Find a member to add to the team/);
|
|
|
|
// Select a new user
|
|
await inputSearch.fill(fillText);
|
|
|
|
// Intercept response
|
|
const responseSearchUser = await responsePromiseSearchUser;
|
|
const users = (await responseSearchUser.json()).results as {
|
|
name: string;
|
|
}[];
|
|
|
|
// Choose user
|
|
await page.getByRole('option', { name: users[index].name }).click();
|
|
|
|
// Choose a role
|
|
await page.getByRole('radio', { name: role }).click();
|
|
|
|
await page.getByRole('button', { name: 'Validate' }).click();
|
|
|
|
const table = page.getByLabel('List members card').getByRole('table');
|
|
|
|
await expect(table.getByText(users[index].name)).toBeVisible();
|
|
await expect(
|
|
page.getByText(`Member ${users[index].name} added to the team`),
|
|
).toBeVisible();
|
|
|
|
return users[index].name;
|
|
};
|