57 lines
2.7 KiB
TypeScript
57 lines
2.7 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { login } from "./test-helpers";
|
|
|
|
test("seeded entries render with tags and no-tag state", async ({ page }) => {
|
|
await login(page, "owner1@fiddy.dev", "FiddyDev123!");
|
|
await expect(page).toHaveURL("/");
|
|
|
|
await expect(page.getByRole("button", { name: "Entries" })).toBeVisible();
|
|
await expect(page.getByText("$12.50").first()).toBeVisible();
|
|
await expect(page.locator("span:visible", { hasText: "#Food" }).first()).toBeVisible();
|
|
await expect(page.locator("span:visible", { hasText: "#Travel" }).first()).toBeVisible();
|
|
await expect(page.locator("span:visible", { hasText: "No tags" }).first()).toBeVisible();
|
|
});
|
|
|
|
test("entry details modal opens", async ({ page }) => {
|
|
await login(page, "owner1@fiddy.dev", "FiddyDev123!");
|
|
await expect(page).toHaveURL("/");
|
|
|
|
await page.getByText("$12.50").first().click();
|
|
await expect(page.getByRole("heading", { name: "Entry details" })).toBeVisible();
|
|
await page.getByRole("button", { name: "Close" }).click();
|
|
await expect(page.getByRole("heading", { name: "Entry details" })).toBeHidden();
|
|
});
|
|
|
|
test("empty tag callout shows contact admin for members", async ({ page }) => {
|
|
await login(page, "admin1@fiddy.dev", "FiddyDev123!");
|
|
await expect(page).toHaveURL("/");
|
|
|
|
const dropdown = page.getByRole("button", { name: /▼$/ });
|
|
await dropdown.click();
|
|
const waitSetActive = page.waitForResponse(res => res.url().includes("/api/groups/active") && res.request().method() === "POST");
|
|
await page.getByRole("button", { name: /Gamma Club/ }).click();
|
|
await waitSetActive;
|
|
|
|
await page.getByRole("button", { name: "Add entry" }).click();
|
|
await page.getByPlaceholder("Add tags... (who, where, why, etc.)").fill("missing");
|
|
const callout = page.getByRole("button", { name: "No Tags Assigned Yet - Contact Your Group Admin" });
|
|
await expect(callout).toBeVisible();
|
|
await expect(callout).toBeDisabled();
|
|
});
|
|
|
|
test("empty tag callout navigates to settings for admins", async ({ page }) => {
|
|
await login(page, "member1@fiddy.dev", "FiddyDev123!");
|
|
await expect(page).toHaveURL("/");
|
|
|
|
const dropdown = page.getByRole("button", { name: /▼$/ });
|
|
await dropdown.click();
|
|
const waitSetActive = page.waitForResponse(res => res.url().includes("/api/groups/active") && res.request().method() === "POST");
|
|
await page.getByRole("button", { name: /Gamma Club/ }).click();
|
|
await waitSetActive;
|
|
|
|
await page.getByRole("button", { name: "Add entry" }).click();
|
|
await page.getByPlaceholder("Add tags... (who, where, why, etc.)").fill("missing");
|
|
await page.getByRole("button", { name: "No Tags Assigned Yet - Click To Assign Tags" }).click();
|
|
await expect(page).toHaveURL(/\/groups\/settings/);
|
|
});
|