mascarpone/e2e/pages/util.ts

36 lines
1.1 KiB
TypeScript

import { expect } from '@playwright/test';
import type { Page } from '@playwright/test';
export const login = async (page: Page) => {
await page.goto('/');
await page.getByLabel("Username").fill("test");
await page.getByLabel("Password").fill("test");
await page.getByRole("button", { name: /login/i }).click();
};
export const todate = () => new Date().toISOString().split('T')[0];
type UserFields = {
names?: Array<string>,
birthday?: string,
};
export const verifyCreateUser = async (page: Page, fields: UserFields) => {
await page.getByRole('button', { name: /add contact/i }).click();
await page.waitForResponse('/contact/new');
await expect(page.locator('#alpine-loaded')).not.toHaveAttribute('x-cloak');
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();
}
for (const [label, value] of Object.entries(simple)) {
await page.getByLabel(label).fill(value);
}
await page.getByRole('button', { name: /save/i }).click();
await page.waitForResponse(/\/contact\/\d+/);
};