diff --git a/adminfront/tests/auth.spec.ts b/adminfront/tests/auth.spec.ts index 46daaaa8..8de9195f 100644 --- a/adminfront/tests/auth.spec.ts +++ b/adminfront/tests/auth.spec.ts @@ -19,6 +19,18 @@ test.describe("Authentication", () => { }); }, ); + + // Default mock for user profile + await page.route("**/api/v1/user/me", async (route) => { + await route.fulfill({ + json: { + id: "admin-user", + name: "Admin User", + email: "admin@example.com", + role: "super_admin", + }, + }); + }); }); test("should redirect unauthorized users to login page", async ({ page }) => { @@ -74,13 +86,17 @@ test.describe("Authentication", () => { }); await page.goto("/"); - await expect(page.locator("aside")).toBeVisible(); + + // Wait for the auth loading to finish + await expect(page.locator(".animate-spin")).not.toBeVisible(); // Mock window.confirm page.on("dialog", (dialog) => dialog.accept()); - // Click logout button (label: ui.admin.nav.logout) - await page.click('button:has-text("Logout"), button:has-text("로그아웃")'); + // Click logout button in the sidebar (use nav container to be specific) + await page.click( + 'nav button:has-text("Logout"), nav button:has-text("로그아웃")', + ); await expect(page).toHaveURL(/\/login/); }); diff --git a/adminfront/tests/owners.spec.ts b/adminfront/tests/owners.spec.ts index 056f42b7..91ac4597 100644 --- a/adminfront/tests/owners.spec.ts +++ b/adminfront/tests/owners.spec.ts @@ -28,6 +28,18 @@ test.describe("Tenant Owners Management", () => { }, ); + // Mock user profile + await page.route("**/api/v1/user/me", async (route) => { + await route.fulfill({ + json: { + id: "admin-user", + name: "Admin User", + email: "admin@example.com", + role: "super_admin", + }, + }); + }); + // Mock tenant details await page.route("**/api/v1/admin/tenants/tenant-1**", async (route) => { await route.fulfill({ @@ -55,12 +67,22 @@ test.describe("Tenant Owners Management", () => { }, ); - await page.goto("/tenants/tenant-1/owners"); + // Mock admins list (empty) + await page.route( + "**/api/v1/admin/tenants/tenant-1/admins**", + async (route) => { + await route.fulfill({ json: [] }); + }, + ); + + await page.goto("/tenants/tenant-1/permissions"); // Check if the page title and the owner are visible - await expect(page.locator("h3")).toContainText("테넌트 소유자"); - await expect(page.locator("table")).toContainText("Owner One"); - await expect(page.locator("table")).toContainText("owner1@example.com"); + await expect(page.getByText("테넌트 소유자")).toBeVisible(); + await expect(page.locator("table").first()).toContainText("Owner One"); + await expect(page.locator("table").first()).toContainText( + "owner1@example.com", + ); }); test("should add a new owner", async ({ page }) => { @@ -76,6 +98,14 @@ test.describe("Tenant Owners Management", () => { }, ); + // Mock admins list (empty) + await page.route( + "**/api/v1/admin/tenants/tenant-1/admins**", + async (route) => { + await route.fulfill({ json: [] }); + }, + ); + // Mock users search await page.route("**/api/v1/admin/users?**", async (route) => { await route.fulfill({ @@ -88,7 +118,7 @@ test.describe("Tenant Owners Management", () => { }); }); - await page.goto("/tenants/tenant-1/owners"); + await page.goto("/tenants/tenant-1/permissions"); // Click add button await page.click('button:has-text("소유자 추가")'); diff --git a/adminfront/tests/tenants.spec.ts b/adminfront/tests/tenants.spec.ts index 817f285a..f8988375 100644 --- a/adminfront/tests/tenants.spec.ts +++ b/adminfront/tests/tenants.spec.ts @@ -28,6 +28,18 @@ test.describe("Tenants Management", () => { }, ); + // Mock user profile + await page.route("**/api/v1/user/me", async (route) => { + await route.fulfill({ + json: { + id: "admin-user", + name: "Admin User", + email: "admin@example.com", + role: "super_admin", + }, + }); + }); + // Default mock for tenants to avoid proxy leaks await page.route("**/api/v1/admin/tenants**", async (route) => { if (route.request().method() === "GET") {