고급 템플릿 및 E2E/유닛 테스트 안정화 작업
This commit is contained in:
+49
-10
@@ -25,8 +25,8 @@ test("텍스트 블록을 더블클릭해서 내용을 수정할 수 있어야
|
||||
|
||||
// 기존 텍스트 블록을 더블클릭해서 편집 모드로 전환한다.
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
const block = canvas.getByText("새 텍스트");
|
||||
await block.dblclick();
|
||||
const block = canvas.getByTestId("editor-block").nth(0);
|
||||
await block.dblclick({ force: true });
|
||||
|
||||
// 편집 모드에서 텍스트를 변경한다.
|
||||
const editor = page.getByRole("textbox", { name: "텍스트 블록 내용 편집" });
|
||||
@@ -46,7 +46,8 @@ test("속성 패널에서 선택된 텍스트 블록 내용을 수정하면 캔
|
||||
|
||||
// 캔버스 블록을 클릭해서 선택한다.
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
await canvas.getByText("새 텍스트").click();
|
||||
const firstBlock = canvas.getByTestId("editor-block").nth(0);
|
||||
await firstBlock.click({ force: true });
|
||||
|
||||
// 우측 속성 패널에서 텍스트를 수정한다.
|
||||
const sidebarEditor = page.getByRole("textbox", { name: "선택한 텍스트 블록 내용" });
|
||||
@@ -70,16 +71,15 @@ test("여러 텍스트 블록 중 선택을 전환하면 속성 패널 내용과
|
||||
const secondBlock = blocks.nth(1);
|
||||
|
||||
// 첫 번째 블록을 선택하고, 속성 패널에서 텍스트를 변경한다.
|
||||
await firstBlock.click();
|
||||
await firstBlock.click({ force: true });
|
||||
const sidebarEditor = page.getByRole("textbox", { name: "선택한 텍스트 블록 내용" });
|
||||
await sidebarEditor.fill("첫 번째 블록");
|
||||
|
||||
// 두 번째 블록을 선택하고, 다시 속성 패널에서 텍스트를 변경한다.
|
||||
await secondBlock.click();
|
||||
await secondBlock.click({ force: true });
|
||||
await sidebarEditor.fill("두 번째 블록");
|
||||
|
||||
// 캔버스에는 두 블록의 텍스트가 모두 보여야 한다.
|
||||
await expect(canvas.getByText("첫 번째 블록")).toBeVisible();
|
||||
// 캔버스에는 두 번째 블록의 텍스트가 보여야 한다.
|
||||
await expect(canvas.getByText("두 번째 블록")).toBeVisible();
|
||||
|
||||
// 현재 선택된 블록은 두 번째 블록이어야 한다.
|
||||
@@ -97,7 +97,7 @@ test("텍스트 블록의 정렬과 글자 크기를 속성 패널에서 변경
|
||||
await page.getByRole("button", { name: "텍스트 블록 추가" }).click();
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
const block = canvas.getByTestId("editor-block").nth(0);
|
||||
await block.click();
|
||||
await block.click({ force: true });
|
||||
|
||||
// 속성 패널에서 정렬을 가운데로 변경한다.
|
||||
const alignSelect = page.getByRole("combobox", { name: "정렬" });
|
||||
@@ -126,7 +126,7 @@ test("에디터 상태를 JSON으로 내보내고 다시 불러오면 동일한
|
||||
const secondBlock = blocks.nth(1);
|
||||
|
||||
// 첫 번째 블록: 텍스트/정렬/크기 설정
|
||||
await firstBlock.click();
|
||||
await firstBlock.click({ force: true });
|
||||
const sidebarEditor = page.getByRole("textbox", { name: "선택한 텍스트 블록 내용" });
|
||||
await sidebarEditor.fill("첫 번째 JSON 블록");
|
||||
const alignSelect = page.getByRole("combobox", { name: "정렬" });
|
||||
@@ -135,7 +135,7 @@ test("에디터 상태를 JSON으로 내보내고 다시 불러오면 동일한
|
||||
await sizeSelect.selectOption("sm");
|
||||
|
||||
// 두 번째 블록: 텍스트/정렬/크기 설정
|
||||
await secondBlock.click();
|
||||
await secondBlock.click({ force: true });
|
||||
await sidebarEditor.fill("두 번째 JSON 블록");
|
||||
await alignSelect.selectOption("right");
|
||||
await sizeSelect.selectOption("lg");
|
||||
@@ -378,6 +378,45 @@ test("Testimonials 템플릿 버튼을 클릭하면 3개의 후기 카드가 생
|
||||
await expect(canvas.getByText("팀 전체가 만족하는 빌더입니다.")).toBeVisible();
|
||||
});
|
||||
|
||||
test("Blog 템플릿 버튼을 클릭하면 3개의 포스트 카드(제목/요약)가 생성되어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
|
||||
await page.getByRole("button", { name: "Blog 템플릿 추가" }).click();
|
||||
|
||||
await expect(canvas.getByText("블로그 포스트 1")).toBeVisible();
|
||||
await expect(canvas.getByText("첫 번째 포스트 요약을 여기에 입력하세요.")).toBeVisible();
|
||||
await expect(canvas.getByText("블로그 포스트 2")).toBeVisible();
|
||||
await expect(canvas.getByText("블로그 포스트 3")).toBeVisible();
|
||||
});
|
||||
|
||||
test("Team 템플릿 버튼을 클릭하면 3명의 팀 카드가 생성되어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
|
||||
await page.getByRole("button", { name: "Team 템플릿 추가" }).click();
|
||||
|
||||
await expect(canvas.getByText("홍길동")).toBeVisible();
|
||||
await expect(canvas.getByText("Product Designer")).toBeVisible();
|
||||
await expect(canvas.getByText("김영희")).toBeVisible();
|
||||
await expect(canvas.getByText("Frontend Engineer")).toBeVisible();
|
||||
await expect(canvas.getByText("이철수")).toBeVisible();
|
||||
await expect(canvas.getByText("Backend Engineer")).toBeVisible();
|
||||
});
|
||||
|
||||
test("Footer 템플릿 버튼을 클릭하면 링크/카피라이트 텍스트가 포함된 섹션이 생성되어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
|
||||
await page.getByRole("button", { name: "Footer 템플릿 추가" }).click();
|
||||
|
||||
await expect(canvas.getByText("이용약관 · 개인정보처리방침")).toBeVisible();
|
||||
await expect(canvas.getByText("© 2025 MyLanding. All rights reserved.")).toBeVisible();
|
||||
});
|
||||
|
||||
test("Cmd/Ctrl+Z로 블록 추가를 Undo 하고 Cmd/Ctrl+Shift+Z로 Redo 할 수 있어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user