feat: extract groombook/web from monorepo
- Copy apps/web/ with all src, components, pages, portal - Inline packages/types/ as local packages/types module - Add tsconfig path aliases for @groombook/types - Port Dockerfile and CI workflow - Image name: ghcr.io/groombook/web Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { test, expect } from "./fixtures.js";
|
||||
|
||||
/**
|
||||
* E2E test: Reports Data (GRO-306)
|
||||
*
|
||||
* Verifies that the reports page loads with non-zero data when date range
|
||||
* is set to the last 60 days.
|
||||
*
|
||||
* This test runs against current dev state (no GRO-300 dependency).
|
||||
* NOTE: Skipped because dev environment may have no report data in the last 60 days.
|
||||
*/
|
||||
test.describe("Admin Reports Data", () => {
|
||||
test.skip("reports page shows non-zero data for last 60 days", async ({
|
||||
staffPage,
|
||||
}) => {
|
||||
await staffPage.goto("/admin/reports");
|
||||
await staffPage.waitForLoadState("networkidle");
|
||||
|
||||
// Wait for reports to load
|
||||
await expect(staffPage.getByRole("heading", { name: "Reports" })).toBeVisible({ timeout: 10000 });
|
||||
|
||||
// Calculate 60 days ago date
|
||||
const today = new Date();
|
||||
const sixtyDaysAgo = new Date();
|
||||
sixtyDaysAgo.setDate(today.getDate() - 60);
|
||||
|
||||
const formatDate = (d: Date) => d.toISOString().slice(0, 10);
|
||||
|
||||
// Set the date range to last 60 days
|
||||
// The page has "From" and "To" date inputs
|
||||
const fromInput = staffPage.locator('input[type="date"]').first();
|
||||
const toInput = staffPage.locator('input[type="date"]').nth(1);
|
||||
|
||||
await fromInput.fill(formatDate(sixtyDaysAgo));
|
||||
await toInput.fill(formatDate(today));
|
||||
|
||||
// Click Refresh to reload the report
|
||||
await staffPage.getByRole("button", { name: /refresh/i }).click();
|
||||
|
||||
// Wait for data to reload
|
||||
await staffPage.waitForLoadState("networkidle");
|
||||
await staffPage.waitForTimeout(1000);
|
||||
|
||||
// Verify StatCards render with values (may be $0 or 0 in dev with no data)
|
||||
// The StatCards show: Revenue, Appointments, No-shows, Cancellations, New Clients
|
||||
const statCardValues = staffPage.locator('[style*="fontSize: 26"]');
|
||||
const count = await statCardValues.count();
|
||||
expect(count).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user