섹션 레이아웃 및 템플릿 스타일 개선
This commit is contained in:
@@ -287,6 +287,42 @@ test("블록 드래그앤드롭으로 순서를 변경할 수 있어야 한다",
|
||||
await expect(reorderedBlocks.nth(1)).toContainText("블록");
|
||||
});
|
||||
|
||||
test("리스트 블록에도 드래그 핸들이 있고 선택/드래그가 가능해야 한다", async ({ page }) => {
|
||||
test.skip(process.env.CI === "true");
|
||||
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);
|
||||
|
||||
const textBlock = blocks.nth(0);
|
||||
const listBlock = blocks.nth(1);
|
||||
|
||||
// 리스트 블록 안에 드래그 핸들이 존재해야 한다.
|
||||
const listHandle = listBlock.getByRole("button", { name: "블록 드래그 핸들" });
|
||||
await expect(listHandle).toBeVisible();
|
||||
|
||||
// 리스트 블록을 클릭하면 선택 상태가 되어야 한다.
|
||||
await listBlock.click({ force: true });
|
||||
await expect(listBlock).toHaveAttribute("aria-selected", "true");
|
||||
await expect(textBlock).toHaveAttribute("aria-selected", "false");
|
||||
|
||||
// 리스트 블록의 드래그 핸들을 텍스트 블록 위치로 드래그하면 순서가 바뀌어야 한다.
|
||||
const textHandle = textBlock.getByRole("button", { name: "블록 드래그 핸들" });
|
||||
await listHandle.dragTo(textHandle, { force: true });
|
||||
|
||||
const reorderedBlocks = canvas.getByTestId("editor-block");
|
||||
await expect(reorderedBlocks).toHaveCount(2);
|
||||
|
||||
// 드래그 이후에는 리스트 블록이 첫 번째 위치로 올라와야 한다.
|
||||
await expect(reorderedBlocks.nth(0)).toContainText("리스트 아이템");
|
||||
});
|
||||
|
||||
test("버튼 블록을 추가하고 라벨과 링크를 수정할 수 있어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
@@ -636,6 +672,42 @@ test("리스트 블록을 추가하고 첫 번째 아이템과 번호 매기기/
|
||||
await expect(listBlock).toHaveClass(/pb-text-center/);
|
||||
});
|
||||
|
||||
test("리스트 아이템을 선택하면 패널에서 아이템 위/아래/들여쓰기/내어쓰기 버튼을 사용할 수 있어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
const canvas = page.getByTestId("editor-canvas");
|
||||
|
||||
// 리스트 블록을 추가한다.
|
||||
await page.getByRole("button", { name: "리스트 블록 추가" }).click();
|
||||
|
||||
const blocks = canvas.getByTestId("editor-block");
|
||||
const listBlock = blocks.nth(0);
|
||||
|
||||
// 리스트 블록 안의 첫 번째 li 를 클릭해서 아이템을 선택한다.
|
||||
const firstItem = listBlock.locator("li").first();
|
||||
await firstItem.click({ force: true });
|
||||
|
||||
// 우측 패널의 아이템 조작 버튼들이 활성화되어야 한다.
|
||||
const moveUpButton = page.getByRole("button", { name: "아이템 위로" });
|
||||
const moveDownButton = page.getByRole("button", { name: "아이템 아래로" });
|
||||
const indentButton = page.getByRole("button", { name: "아이템 들여쓰기" });
|
||||
const outdentButton = page.getByRole("button", { name: "아이템 내어쓰기" });
|
||||
|
||||
await expect(moveUpButton).toBeEnabled();
|
||||
await expect(moveDownButton).toBeEnabled();
|
||||
await expect(indentButton).toBeEnabled();
|
||||
await expect(outdentButton).toBeEnabled();
|
||||
|
||||
// 버튼들을 한 번씩 눌러도 에러 없이 리스트가 계속 렌더되어 있어야 한다.
|
||||
await moveUpButton.click();
|
||||
await moveDownButton.click();
|
||||
await indentButton.click();
|
||||
await outdentButton.click();
|
||||
|
||||
// 여전히 리스트 블록 안에는 최소 한 개 이상의 아이템이 보여야 한다.
|
||||
await expect(listBlock.locator("li").first()).toBeVisible();
|
||||
});
|
||||
|
||||
test("폼 요소 사이드바에서 폼 입력/셀렉트/라디오/체크박스 블록을 추가할 수 있어야 한다", async ({ page }) => {
|
||||
await page.goto("/editor");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user