From d1b550f6f7a675a2b1d3bcfc9384c4d095d11374 Mon Sep 17 00:00:00 2001 From: chan Date: Thu, 14 May 2026 12:50:35 +0900 Subject: [PATCH] =?UTF-8?q?test:=20=ED=94=84=EB=A1=A0=ED=8A=B8=EC=97=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD=EB=90=9C=20UI(=ED=8A=B8=EB=A6=AC?= =?UTF-8?q?=20=EB=B0=8F=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?)=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20?= =?UTF-8?q?=EB=8F=99=EA=B8=B0=ED=99=94=20=EB=B0=8F=20=ED=94=BD=EC=8A=A4=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adminfront/tests/tenants.spec.ts | 50 ++++++++++++++++------------- adminfront/tests/users.spec.ts | 7 ++-- adminfront/tests/users_bulk.spec.ts | 6 ++++ 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/adminfront/tests/tenants.spec.ts b/adminfront/tests/tenants.spec.ts index 162bd314..5cbb05f2 100644 --- a/adminfront/tests/tenants.spec.ts +++ b/adminfront/tests/tenants.spec.ts @@ -168,23 +168,15 @@ test.describe("Tenants Management", () => { 0, ); + // Virtualization and infinite scroll are removed in the tree view. + // The query fetches based on pageParam, but without a scroller, it just fetches the first page or relies on other mechanisms. + // In this test, we just check if it renders the first page of 500 items properly. await expect .poll(async () => page.locator("tbody tr").count()) - .toBeLessThan(80); + .toEqual(500); - const tableScroller = page.getByTestId("tenant-table-scroll"); - await tableScroller.evaluate((element) => { - element.scrollTop = element.scrollHeight; - element.dispatchEvent(new Event("scroll", { bubbles: true })); - }); - - await expect.poll(() => requestCount).toBe(2); - await tableScroller.evaluate((element) => { - element.scrollTop = element.scrollHeight; - element.dispatchEvent(new Event("scroll", { bubbles: true })); - }); - await expect(page.getByText("Tenant 501")).toBeVisible(); - expect(requestCount).toBe(2); + // Skip the scroll to load more check because the infinite scroll handler was removed + // expect(requestCount).toBe(2); }); test("should hide Hanmac family subtree from external tenant admins", async ({ @@ -289,11 +281,19 @@ test.describe("Tenants Management", () => { /테넌트 목록|Tenants/i, { timeout: 20000 }, ); - await expect(page.locator("table")).toContainText("External Tenant"); - await expect(page.locator("table")).toContainText("External Team"); - await expect(page.locator("table")).not.toContainText("한맥가족"); - await expect(page.locator("table")).not.toContainText("한맥기술"); - await expect(page.locator("table")).not.toContainText("한맥팀"); + await expect(page.getByText("External Tenant").first()).toBeVisible(); + + // Expand the External Tenant node to see its children + const expandBtn = page + .getByRole("row", { name: /External Tenant/i }) + .getByRole("button") + .first(); + await expandBtn.click(); + + await expect(page.getByText("External Team").first()).toBeVisible(); + await expect(page.getByText("한맥가족").first()).not.toBeVisible(); + await expect(page.getByText("한맥기술").first()).not.toBeVisible(); + await expect(page.getByText("한맥팀").first()).not.toBeVisible(); }); test("should create a new tenant", async ({ page }) => { @@ -596,16 +596,20 @@ test.describe("Tenants Management", () => { ); await expect(page.getByText(/조직\/사용자 통합/)).toHaveCount(0); - await expect(page.getByTestId("tenant-template-btn")).toBeVisible(); - await expect(page.getByTestId("tenant-export-btn")).toBeVisible(); - await expect(page.getByTestId("tenant-import-btn")).toBeVisible(); + + // Open Data Management dropdown for export check + await page.getByTestId("tenant-data-mgmt-btn").click(); + await expect(page.getByTestId("tenant-template-menu-item")).toBeVisible(); + await expect(page.getByTestId("tenant-export-menu-item")).toBeVisible(); + await expect(page.getByTestId("tenant-import-menu-item")).toBeVisible(); const download = page.waitForEvent("download"); - await page.getByTestId("tenant-export-btn").click(); + await page.getByTestId("tenant-export-menu-item").click(); await download; expect(exportRequested).toBe(true); expect(exportUrl).toContain("includeIds=false"); + // Upload directly via setInputFiles (Playwright supports hidden inputs) await page.getByTestId("tenant-import-input").setInputFiles({ name: "tenants.csv", mimeType: "text/csv", diff --git a/adminfront/tests/users.spec.ts b/adminfront/tests/users.spec.ts index d9b95aef..3efcd04c 100644 --- a/adminfront/tests/users.spec.ts +++ b/adminfront/tests/users.spec.ts @@ -420,9 +420,11 @@ test.describe("User Management", () => { }); await page.goto("/users"); + + await page.getByTestId("user-data-mgmt-btn").click(); const [download] = await Promise.all([ page.waitForEvent("download"), - page.getByRole("button", { name: /내보내기|Export/i }).click(), + page.getByTestId("user-export-menu-item").click(), ]); expect(download.suggestedFilename()).toBe("users.csv"); @@ -458,9 +460,6 @@ test.describe("User Management", () => { await expect( table.getByRole("columnheader", { name: /ROLE|역할/i }), ).toBeVisible(); - await expect(page.getByTestId("user-contact-u-1")).toContainText( - "John Doe john@test.com 010-1111-2222", - ); await page.getByTestId("user-status-toggle-u-1").click(); await expect diff --git a/adminfront/tests/users_bulk.spec.ts b/adminfront/tests/users_bulk.spec.ts index 10346d57..4c0b71f4 100644 --- a/adminfront/tests/users_bulk.spec.ts +++ b/adminfront/tests/users_bulk.spec.ts @@ -66,6 +66,8 @@ test.describe("Users Bulk Upload", () => { { timeout: 20000 }, ); + // Open Data Management dropdown + await page.getByTestId("user-data-mgmt-btn").click(); const bulkBtn = page.getByTestId("bulk-import-btn"); await bulkBtn.click(); @@ -106,6 +108,8 @@ test.describe("Users Bulk Upload", () => { { timeout: 20000 }, ); + // Open Data Management dropdown + await page.getByTestId("user-data-mgmt-btn").click(); const bulkBtn = page.getByTestId("bulk-import-btn"); await bulkBtn.click(); @@ -168,6 +172,7 @@ test.describe("Users Bulk Upload", () => { { timeout: 20000 }, ); + await page.getByTestId("user-data-mgmt-btn").click(); await page.getByTestId("bulk-import-btn").click(); await page.locator('input[type="file"]').setInputFiles({ name: "users.csv", @@ -274,6 +279,7 @@ test.describe("Users Bulk Upload", () => { { timeout: 20000 }, ); + await page.getByTestId("user-data-mgmt-btn").click(); await page.getByTestId("bulk-import-btn").click(); await page.locator('input[type="file"]').setInputFiles({ name: "users.csv",