2025-11-27 13:45:21 -06:00
|
|
|
import type { Page } from '@playwright/test';
|
|
|
|
|
|
|
|
|
|
export const login = async (page: Page) => {
|
2026-01-23 21:20:27 -06:00
|
|
|
await page.goto('/');
|
|
|
|
|
await page.getByLabel("Username").fill("test");
|
|
|
|
|
await page.getByLabel("Password").fill("test");
|
|
|
|
|
await page.getByRole("button", { name: /login/i }).click();
|
2025-11-27 13:45:21 -06:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const todate = () => new Date().toISOString().split('T')[0];
|
|
|
|
|
|
|
|
|
|
type UserFields = {
|
2026-01-23 21:20:27 -06:00
|
|
|
names?: Array<string>,
|
|
|
|
|
birthday?: string,
|
2025-11-27 13:45:21 -06:00
|
|
|
};
|
|
|
|
|
export const verifyCreateUser = async (page: Page, fields: UserFields) => {
|
2026-01-23 21:20:27 -06:00
|
|
|
await page.getByRole('button', { name: /add contact/i }).click();
|
2025-11-27 13:45:21 -06:00
|
|
|
|
2026-01-23 21:20:27 -06:00
|
|
|
const { names, ...simple } = fields;
|
|
|
|
|
for (const name of (names ?? [])) {
|
|
|
|
|
await page.getByRole('textbox', { name: 'New name' }).fill(name);
|
|
|
|
|
await page.getByRole('button', { name: 'Add' }).nth(1).click();
|
|
|
|
|
}
|
2025-11-27 13:45:21 -06:00
|
|
|
|
2026-01-23 21:20:27 -06:00
|
|
|
for (const [label, value] of Object.entries(simple)) {
|
|
|
|
|
await page.getByLabel(label).fill(value);
|
|
|
|
|
}
|
2025-11-27 13:45:21 -06:00
|
|
|
|
2026-01-23 21:20:27 -06:00
|
|
|
await page.getByRole('button', { name: /save/i }).click();
|
2025-11-27 13:45:21 -06:00
|
|
|
};
|
|
|
|
|
|