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 () => { - - - - 작업 영역이 분리되었습니다. - 계정 변경, 서버 설정, 버전 배포가 한 화면에 섞이지 않도록 책임별로 나누었습니다. - - 권한 검사는 기존 서버 정책을 그대로 따릅니다. - - + {
계정 변경, 서버 설정, 버전 배포가 한 화면에 섞이지 않도록 책임별로 나누었습니다.