fix(gateway): 운영 개요의 변경 이력 안내 제거

관리자가 현재 수행할 기능과 무관한 작업 영역 재구성 설명을 제거합니다. 현재 행동 안내만 남기고 실제 Chromium에서 문구 부재와 반응형 카드 위치를 검증합니다.
This commit is contained in:
2026-08-21 00:55:35 +00:00
parent 7b14585f0d
commit 98fe4f3764
2 changed files with 32 additions and 49 deletions
@@ -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();
@@ -77,19 +77,7 @@ onMounted(async () => {
</script>
<template>
<AdminConsoleLayout
title="운영 개요"
description="관리 대상을 먼저 선택하세요. 위험도가 높은 변경과 배포 이력은 각 영역에서 분리해 확인할 수 있습니다."
eyebrow="Admin workspace"
>
<section class="overview-guide" aria-label="관리 원칙">
<div>
<strong>작업 영역이 분리되었습니다.</strong>
<p>계정 변경, 서버 설정, 버전 배포가 화면에 섞이지 않도록 책임별로 나누었습니다.</p>
</div>
<span>권한 검사는 기존 서버 정책을 그대로 따릅니다.</span>
</section>
<AdminConsoleLayout title="운영 개요" description="관리 대상을 선택하세요." eyebrow="Admin workspace">
<section class="overview-grid" aria-label="관리 기능">
<RouterLink
v-for="section in sections.filter((entry) => entry.visible)"
@@ -108,37 +96,6 @@ onMounted(async () => {
</template>
<style scoped>
.overview-guide {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
margin-bottom: 22px;
border: 1px solid #3f3f46;
border-radius: 10px;
background: #18181b;
padding: 18px 20px;
}
.overview-guide strong {
color: #f4f4f5;
font-size: 14px;
}
.overview-guide p,
.overview-guide span {
margin: 4px 0 0;
color: #a1a1aa;
font-size: 12px;
line-height: 1.5;
}
.overview-guide > span {
flex: 0 0 auto;
margin: 0;
color: #fbbf24;
}
.overview-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -214,11 +171,6 @@ onMounted(async () => {
}
@media (max-width: 700px) {
.overview-guide {
align-items: flex-start;
flex-direction: column;
}
.overview-grid {
grid-template-columns: 1fr;
}