블록 UX: 삭제/복제 버튼 및 단축키 추가
This commit is contained in:
@@ -392,3 +392,53 @@ test("ArrowUp/ArrowDown 키로 선택된 블록을 위/아래로 이동하며
|
||||
await page.keyboard.press("ArrowUp");
|
||||
await expect(blocks.nth(1)).toHaveAttribute("data-selected", "true");
|
||||
});
|
||||
|
||||
test("속성 패널의 블록 삭제 버튼으로 선택된 블록을 삭제할 수 있어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
|
||||
// 텍스트 블록 두 개를 추가한다.
|
||||
await page.getByRole("button", { name: "텍스트 블록 추가" }).click();
|
||||
await page.getByRole("button", { name: "텍스트 블록 추가" }).click();
|
||||
|
||||
const blocks = canvas.getByTestId("editor-block");
|
||||
await expect(blocks).toHaveCount(2);
|
||||
|
||||
// 두 번째 블록을 선택한 다음, 속성 패널에서 "블록 삭제" 버튼을 클릭한다.
|
||||
await blocks.nth(1).click();
|
||||
await page.getByRole("button", { name: "블록 삭제" }).click();
|
||||
|
||||
// 하나의 블록만 남아야 하며, 첫 번째 블록이 남아 있어야 한다.
|
||||
const remainingBlocks = canvas.getByTestId("editor-block");
|
||||
await expect(remainingBlocks).toHaveCount(1);
|
||||
await expect(remainingBlocks.nth(0)).toHaveAttribute("data-selected", "true");
|
||||
});
|
||||
|
||||
test("Cmd/Ctrl+D 단축키로 선택된 블록을 복제할 수 있어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
|
||||
// 텍스트 블록을 하나 추가한다.
|
||||
await page.getByRole("button", { name: "텍스트 블록 추가" }).click();
|
||||
|
||||
let blocks = canvas.getByTestId("editor-block");
|
||||
await expect(blocks).toHaveCount(1);
|
||||
|
||||
// 블록의 텍스트를 식별 가능한 값으로 바꾼다.
|
||||
await blocks.nth(0).click();
|
||||
const sidebarEditor = page.getByRole("textbox", { name: "선택한 텍스트 블록 내용" });
|
||||
await sidebarEditor.fill("복제 대상 블록");
|
||||
|
||||
// Cmd/Ctrl + D 로 복제한다.
|
||||
await page.keyboard.press("Meta+D");
|
||||
|
||||
// 블록이 두 개가 되어야 한다.
|
||||
blocks = canvas.getByTestId("editor-block");
|
||||
await expect(blocks).toHaveCount(2);
|
||||
|
||||
// 두 블록 모두 동일한 텍스트를 가지고 있어야 한다.
|
||||
await expect(blocks.nth(0)).toContainText("복제 대상 블록");
|
||||
await expect(blocks.nth(1)).toContainText("복제 대상 블록");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user