import { expect, test } from "@playwright/test";

test.describe("Admin Pages", () => {
  test.beforeEach(async ({ page }) => {
    await page.goto("/auth/signin");
    await page.fill('input[type="email"]', "admin@capakraken.dev");
    await page.fill('input[type="password"]', "admin123");
    await page.click('button[type="submit"]');
    await expect(page).toHaveURL(/\/(dashboard|resources)/);
  });

  test("settings page loads", async ({ page }) => {
    await page.goto("/admin/settings");
    await page.waitForLoadState("networkidle");
    await expect(page.locator("h1", { hasText: /System Settings/i })).toBeVisible({ timeout: 10000 });
  });

  test("users page loads with user list", async ({ page }) => {
    await page.goto("/admin/users");
    await page.waitForLoadState("networkidle");
    await expect(page.locator("h1", { hasText: /User Management/i })).toBeVisible({ timeout: 10000 });
    // Should show a table with at least the admin user
    await expect(page.locator("table")).toBeVisible({ timeout: 10000 });
    await expect(page.locator("text=admin@capakraken.dev")).toBeVisible({ timeout: 10000 });
  });

  test("roles page loads", async ({ page }) => {
    await page.goto("/roles");
    await page.waitForLoadState("networkidle");
    await expect(
      page.locator("h1").filter({ hasText: /Roles/i }),
    ).toBeVisible({ timeout: 10000 });
    // Should show table or list of roles
    await expect(
      page.locator("table").or(page.locator("text=No roles")),
    ).toBeVisible({ timeout: 10000 });
  });

  test("blueprints page loads", async ({ page }) => {
    await page.goto("/admin/blueprints");
    await page.waitForLoadState("networkidle");
    await expect(
      page.locator("h1").filter({ hasText: /Blueprints/i }),
    ).toBeVisible({ timeout: 10000 });
    // Should show blueprint cards or list from seed data
    await expect(
      page.locator("table")
        .or(page.locator("text=3D Content Production"))
        .or(page.locator("text=No blueprints")),
    ).toBeVisible({ timeout: 10000 });
  });
});
