diff --git a/MAIN_PLAN.md b/MAIN_PLAN.md index a55db58..00ef7da 100644 --- a/MAIN_PLAN.md +++ b/MAIN_PLAN.md @@ -71,4 +71,9 @@ - CI: `Run unit tests` 스텝에도 더미 `DATABASE_URL` 추가 - 테스트 코드: PrismaClient를 메모리 기반 목으로 교체, 라우트를 동적 import 하도록 수정 +- Playwright E2E (에디터): + - 레이아웃 상 사이드바/속성 패널이 캔버스 블록 클릭을 가로채면서 `locator.click` 타임아웃이 발생하는 이슈 확인 + - divider/list 블록용 E2E는 블록 추가 직후 자동 선택 상태와 속성 패널 조작만 검증하도록 작성해 부분적으로 우회 + - 기존 테스트들(블록 삭제, 복제, 키보드 이동 등)은 동일한 클릭 간섭 문제 영향 범위에 있어 후속 단계에서 레이아웃/테스트 전략 리팩터링 필요 + 이후 단계(`builder-11-editor-ux-advanced`, `builder-12-theme-output`)에서도 모든 기능 추가는 TDD(실패 테스트 → 구현 → 리팩터링) 순서를 유지한다. diff --git a/playwright.config.ts b/playwright.config.ts index aa36a52..f9235c7 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -16,4 +16,10 @@ export default defineConfig({ use: { ...devices["Desktop Chrome"] }, }, ], + webServer: { + command: "npm run dev", + url: "http://localhost:3000", + reuseExistingServer: !process.env.CI, + timeout: 120_000, + }, }); diff --git a/src/app/editor/page.tsx b/src/app/editor/page.tsx index 9a23485..e49fd0e 100644 --- a/src/app/editor/page.tsx +++ b/src/app/editor/page.tsx @@ -25,6 +25,8 @@ import type { ButtonBlockProps, ImageBlockProps, SectionBlockProps, + DividerBlockProps, + ListBlockProps, } from "@/features/editor/state/editorStore"; export default function EditorPage() { @@ -33,6 +35,8 @@ export default function EditorPage() { const addTextBlock = useEditorStore((state) => state.addTextBlock); const addButtonBlock = useEditorStore((state) => state.addButtonBlock); const addImageBlock = useEditorStore((state) => state.addImageBlock); + const addDividerBlock = useEditorStore((state) => state.addDividerBlock); + const addListBlock = useEditorStore((state) => state.addListBlock); const addSectionBlock = useEditorStore((state) => state.addSectionBlock); const addHeroTemplateSection = useEditorStore((state) => state.addHeroTemplateSection); const addFeaturesTemplateSection = useEditorStore((state) => state.addFeaturesTemplateSection); @@ -349,6 +353,20 @@ export default function EditorPage() { > 이미지 블록 추가 + +