import { expect, test } from '@playwright/test' test('관리자가 로그인해 게시물을 발행하고 공개 화면에서 확인한다', async ({ page }) => { const title = 'Playwright E2E Post' const slug = 'playwright-e2e-post' await page.goto('/admin/login') await page.waitForLoadState('networkidle') await page.getByLabel('이메일').fill('playwright-admin@example.com') await page.locator('input[type="password"]').fill('playwright-admin-password') await Promise.all([ page.waitForResponse((response) => response.url().endsWith('/admin/api/auth/login') && response.status() === 200 ), page.getByRole('button', { name: '로그인', exact: true }).click() ]) await page.waitForURL(/\/admin(?:\/)?$/) await page.goto('/admin/posts/new') await page.waitForLoadState('networkidle') await page.getByPlaceholder('제목').fill(title) await expect(page.getByPlaceholder('제목')).toHaveValue(title) const publishResponsePromise = page.waitForResponse((response) => response.url().endsWith('/admin/api/posts') && response.request().method() === 'POST' && response.status() === 200 ) await expect(page.getByRole('button', { name: 'Publish', exact: true })).toBeEnabled() await page.getByRole('button', { name: 'Publish', exact: true }).click() await expect(page.getByRole('heading', { name: '발행' })).toBeVisible() await page.getByRole('button', { name: '최종 확인하고 저장 →' }).click() await publishResponsePromise await page.waitForURL(/\/admin\/posts\/[0-9a-f-]+$/) await page.goto(`/post/${slug}`) await expect(page.getByRole('heading', { name: title, exact: true })).toBeVisible() })