대시보드, GNB 추가
This commit is contained in:
+104
-1
@@ -219,7 +219,110 @@ test("프로젝트 목록에서 '폼 제출 내역' 링크를 클릭하면 해
|
||||
|
||||
await expect(page.getByText("홍길동")).toBeVisible();
|
||||
await expect(page.getByText("user@example.com")).toBeVisible();
|
||||
await expect(page.getByText("010-1234-5678")).toBeVisible();
|
||||
await expect(page.getByText("message: 안녕하세요")).toBeVisible();
|
||||
await expect(page.getByText("1990-01-01")).toBeVisible();
|
||||
await expect(page.getByText("message: 안녕하세요")).toBeVisible();
|
||||
});
|
||||
|
||||
test("프로젝트 목록 헤더에서 대시보드로 이동할 수 있어야 한다", async ({ page }) => {
|
||||
await page.route("**/api/auth/me", async (route) => {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify({ id: "user-e2e", email: "e2e@example.com", tokenVersion: 1 }),
|
||||
});
|
||||
});
|
||||
|
||||
await page.route("**/api/projects", async (route) => {
|
||||
const request = route.request();
|
||||
const url = new URL(request.url());
|
||||
const method = request.method();
|
||||
|
||||
if (url.pathname === "/api/projects" && method === "GET") {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify([
|
||||
{
|
||||
id: "1",
|
||||
title: "테스트 프로젝트 A",
|
||||
slug: "test-project-a",
|
||||
status: "DRAFT",
|
||||
createdAt: new Date("2025-01-01T00:00:00.000Z").toISOString(),
|
||||
updatedAt: new Date("2025-01-01T00:00:00.000Z").toISOString(),
|
||||
},
|
||||
]),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
await route.fulfill({
|
||||
status: 404,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify({ message: "Not implemented in E2E mock" }),
|
||||
});
|
||||
});
|
||||
|
||||
await page.route("**/api/dashboard/overview", async (route) => {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify({
|
||||
summaryStats: {
|
||||
totalProjects: 1,
|
||||
totalSubmissions: 0,
|
||||
todaySubmissions: 0,
|
||||
last7DaysSubmissions: 0,
|
||||
},
|
||||
projectStats: [],
|
||||
dailySubmissions: [],
|
||||
}),
|
||||
});
|
||||
});
|
||||
|
||||
await page.goto("/projects");
|
||||
|
||||
await expect(page.getByText("테스트 프로젝트 A")).toBeVisible();
|
||||
|
||||
await page.getByRole("link", { name: "대시보드" }).click();
|
||||
|
||||
await expect(page).toHaveURL(/\/dashboard/);
|
||||
await expect(page.getByRole("heading", { name: "대시보드" })).toBeVisible();
|
||||
});
|
||||
|
||||
test("전체 제출 내역 페이지에서 공통 GNB와 메뉴가 보여야 한다", async ({ page }) => {
|
||||
await page.route("**/api/projects/submissions", async (route) => {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify([]),
|
||||
});
|
||||
});
|
||||
|
||||
await page.route("**/api/auth/logout", async (route) => {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify({ message: "ok" }),
|
||||
});
|
||||
});
|
||||
|
||||
await page.goto("/projects/submissions");
|
||||
|
||||
await expect(page.getByRole("heading", { name: "전체 폼 제출 내역" })).toBeVisible();
|
||||
|
||||
const dashboardLink = page.getByRole("link", { name: "대시보드" });
|
||||
await expect(dashboardLink).toBeVisible();
|
||||
|
||||
const projectsLink = page.getByRole("link", { name: "프로젝트 목록" });
|
||||
await expect(projectsLink).toBeVisible();
|
||||
|
||||
const submissionsLink = page.getByRole("link", { name: "전체 제출 내역" });
|
||||
await expect(submissionsLink).toBeVisible();
|
||||
|
||||
const menuButton = page.getByRole("button", { name: "메뉴" });
|
||||
await expect(menuButton).toBeVisible();
|
||||
|
||||
await menuButton.click();
|
||||
await expect(page.getByRole("button", { name: "로그아웃" })).toBeVisible();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user