From 98fe4f3764dfb4eef085c57a63abf2092a932673 Mon Sep 17 00:00:00 2001 From: hided62 Date: Fri, 21 Aug 2026 00:55:35 +0000 Subject: [PATCH] =?UTF-8?q?fix(gateway):=20=EC=9A=B4=EC=98=81=20=EA=B0=9C?= =?UTF-8?q?=EC=9A=94=EC=9D=98=20=EB=B3=80=EA=B2=BD=20=EC=9D=B4=EB=A0=A5=20?= =?UTF-8?q?=EC=95=88=EB=82=B4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 관리자가 현재 수행할 기능과 무관한 작업 영역 재구성 설명을 제거합니다. 현재 행동 안내만 남기고 실제 Chromium에서 문구 부재와 반응형 카드 위치를 검증합니다. --- .../e2e/lobby-admin-navigation.spec.ts | 31 ++++++++++++ .../src/views/AdminOverviewView.vue | 50 +------------------ 2 files changed, 32 insertions(+), 49 deletions(-) diff --git a/app/gateway-frontend/e2e/lobby-admin-navigation.spec.ts b/app/gateway-frontend/e2e/lobby-admin-navigation.spec.ts index 52e91d8d..e5721eb6 100644 --- a/app/gateway-frontend/e2e/lobby-admin-navigation.spec.ts +++ b/app/gateway-frontend/e2e/lobby-admin-navigation.spec.ts @@ -126,6 +126,19 @@ test('bootstrap superuser can navigate the administrator workspace from the lobb await expect(page).toHaveURL(/\/gateway\/admin$/); await expect(page.getByRole('heading', { name: '운영 개요' })).toBeVisible(); + await expect(page.getByText('관리 대상을 선택하세요.')).toBeVisible(); + await expect(page.getByRole('region', { name: '관리 원칙' })).toHaveCount(0); + await expect(page.getByText('작업 영역이 분리되었습니다.')).toHaveCount(0); + const overviewGrid = page.getByRole('region', { name: '관리 기능' }); + const desktopOverviewGeometry = await overviewGrid.evaluate((element) => { + const rect = element.getBoundingClientRect(); + return { left: rect.left, right: rect.right, top: rect.top, width: rect.width }; + }); + expect(desktopOverviewGeometry.top).toBeLessThan(300); + await writeFile( + testInfo.outputPath('admin-overview-desktop-geometry.json'), + JSON.stringify(desktopOverviewGeometry) + ); const navigation = page.getByRole('navigation', { name: '관리자 메뉴' }); await expect(navigation).toBeVisible(); const userLink = navigation.getByRole('link', { name: '사용자 관리' }); @@ -148,6 +161,24 @@ test('bootstrap superuser can navigate the administrator workspace from the lobb await writeFile(testInfo.outputPath('admin-overview-mobile-geometry.json'), JSON.stringify(geometry)); await page.screenshot({ path: testInfo.outputPath('admin-overview-mobile-menu.png'), fullPage: true }); + await page.getByRole('button', { name: '관리자 메뉴' }).click(); + await expect(navigation).toBeHidden(); + await page.evaluate(() => window.scrollTo(0, 0)); + await expect.poll(() => page.evaluate(() => window.scrollY)).toBe(0); + const mobileOverviewGeometry = await overviewGrid.evaluate((element) => { + const rect = element.getBoundingClientRect(); + return { left: rect.left, right: rect.right, top: rect.top, width: rect.width }; + }); + expect(mobileOverviewGeometry.left).toBeGreaterThanOrEqual(0); + expect(mobileOverviewGeometry.right).toBeLessThanOrEqual(390); + expect(mobileOverviewGeometry.top).toBeLessThan(340); + await writeFile( + testInfo.outputPath('admin-overview-mobile-content-geometry.json'), + JSON.stringify(mobileOverviewGeometry) + ); + await page.screenshot({ path: testInfo.outputPath('admin-overview-mobile-content.png'), fullPage: true }); + + await page.getByRole('button', { name: '관리자 메뉴' }).click(); await navigation.getByRole('link', { name: 'Gateway 릴리스' }).click(); await expect(page).toHaveURL(/\/gateway\/admin\/releases$/); await expect(page.getByRole('heading', { name: 'Gateway 릴리스', level: 1 })).toBeVisible(); diff --git a/app/gateway-frontend/src/views/AdminOverviewView.vue b/app/gateway-frontend/src/views/AdminOverviewView.vue index 22e18b70..9460ad9e 100644 --- a/app/gateway-frontend/src/views/AdminOverviewView.vue +++ b/app/gateway-frontend/src/views/AdminOverviewView.vue @@ -77,19 +77,7 @@ onMounted(async () => {